【OK210试用体验】串口调试(附代码) - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】串口调试(附代码)

zhmmok ( 楼主 ) 2015-8-14 15:23:20  只看该作者 倒序浏览
本帖最后由 zhmmok 于 2015-8-14 15:23 编辑

        今天开始进行OK210的串口试用和调试,串口基本上在任何芯片的功能扩展上都是很重要的一环,它是芯片与人进行交互的一个通道,我们可以通过串口从芯片内部接受信息和从串口向芯片发送命令和信息。下面我将针对OK210串口结合s5pv210数据手册来讲解串口的整个调试过程。
        s5pv210芯片共有4路串口接口,我们的OK210用到了2路,分别是底板上的COM2和COM3,从底板原理图上看,由max232芯片引脚可知COM2的RXD2和TXD2对应于XUTXD2和XURXD2,从核心板原理图上看对应于GPA1_0、GPA1_1。


    找到了对应接口后我们就要查看数据手册如何操作相关寄存器才能激活串口,串口使用要有时钟源才能工作,因此我们必须首先进行时钟设置。S5PV210中包含3大类时钟domain,分别为MSYSDSYSPSYS,串口的时钟源就是PSYS提供的,PCLK的值手册上已经给出了参考如下图:


设置时钟涉及到7个寄存器的设置分别为CLK_SRC0APLL_LOCKMPLL_LOCKCLK_DIV0APLL_CON0MPLL_CONCLK_SRC0,根据数据手册上,按照要求逐一进行设置:
   // 1 设置各种时钟开关,暂时不使用PLL
    CLK_SRC0 = 0x0;
    // 2
设置锁定时间,使用默认值即可
    APLL_LOCK = 0x0000FFFF;
    MPLL_LOCK = 0x0000FFFF;
    // 3
设置分频
    CLK_DIV0 = 0x14131440;
    // 4
设置PLL
    APLL_CON0 = APLL_VAL;
    MPLL_CON = MPLL_VAL;
    // 5
设置各种时钟开关,使用PLL
    CLK_SRC0 = 0x10001111;
       然后将GPA1_0GPA1_1这两个引脚配置为串口引脚GPA1CON = 0x2222 。对于串口所涉及的相关寄存器共有6个,分别为ULCON2(帧数据设置寄存器)、UCON2(设置是否使用FIFO和波特率时钟和其他一些设置)、UFCON2FIFO控制寄存器)、UMCON2(设置流控)、UBRDIV2(设置波特率大小)、UDIVSLOT2(同为设置波特率)。这里我们不使用FIFO,寄存器设置为:
       ULCON2 = 0x03;
       UCON2 = 0x05;
       UFCON2 = 0x00;
       UMCON2 = 0x00;
       UBRDIV2 = 35;
       UDIVSLOT2 = 0x1;  

       下面我通过一段代码来验证串口调试效果,程序主要功能为按下键盘上1234分别点亮led1led2led3led4,结果显示串口调试正常。但调试过程中有个问题我很不解,在led_on函数中我使用了switch语句,当有4case分支时,该函数就会崩溃,去掉一个case分支就能正常运行,不知到底是什么原因,可以改用if语句代替。

uart.rar (26.48 KB, 下载次数: 4)



0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-8-18 21:20 , Processed in 0.547212 second(s), Total 64, Slave 44 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表