打印
[活动专区]

8003硬件板+(二)UART

[复制链接]
1507|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lisingch 于 2018-9-26 20:56 编辑

这次是利用UART0进行数据收发实验,单片机将接收到的数据原样转发。此实验的目的是为方便其它后续实验。
一、实验环境
1、Keil MDK51 9.59
2、SC-LINK
3、SC92F8003的DEMO硬件板
4、USB转TTL模块
5、串口调试助手 sscom5.13.1

二、实验过程
1、串口选择UART0,引脚为TX0(P1.5)、RX0(P1.6)与USB转TTL模块相连接。UART0的初始化程序直接选用了官方的DEMO。如:
/*****************************************************
*函数名称:void Uart0_Init(uint Freq,unsigned long int baud)
*函数功能:Uart0中断初始化
*入口参数:Freq-主频,baud-波特率
*出口参数:Freq,baud
*****************************************************/
void Uart0_Init(unsigned int Freq,unsigned long int baud)    //选择Timer1作为波特率信号发生器
{
        P1CON &= 0x9F;           //TX/RX设置为输入带上拉
        P1PH  |= 0x60;
        
        SCON  |= 0X50;           //设置通信方式为模式一,允许接收
        TMCON |= 0X02;                //定时器T1频率源自于fSYS  
        TMOD  |= 0X20;                //8位自动重载定时器,溢出时将TH1存放的值自动重装入TL1
        PCON  |= 0X80;                //SMOD=1 串行端口在系统时钟的1/4下运行
        TH1 = (Freq * 1000000 / baud) >> 8;          //波特率为T1的溢出时间;
        TL1 = Freq * 1000000  /baud;
        TR1 = 0;                                        //T1停止计数
        ET1 = 0;                                        //关闭TIMER1中断
        EUART = 1;                     //开启Uart0中断
        EA = 1;                                                //打开所有的中断
}
在这里与传统51不同的是要对TX及RX引脚进行设置,即将其设置为输入带上拉模式。另一点传统51的串口中断使能位为“ES”,这里将其定义为“EUART”,使用时要注意。

2、其它程序比较简单,串口发送、接收均采用了中断方式。当收到数据后再转发,利用串口调试助手的配合即可观察到实验现象。
void Urat0Int(void) interrupt 4     
{
    unsigned char SerialBuff[1];    //用于存放接收数据
    unsigned char tmp;
    EA = 0;                     
    tmp = ReceiveNByte(1,SerialBuff);
    if(tmp == 0)
    {
        SendNByte(1,SerialBuff);
    }
    EA = 1;                     
}


3、实验现象


三、总结
实验时发现一个小问题,USB转TTL模块与DEMO板及PC连接后程序无法下载,必须将USB转TTL模块从PC机上拔下才行。后面尝试了这样的操作步骤可以不用拔下模块也可以下载了,即:先在串口调试助手中点击“关闭串口”,然后在Keil中点击“Build”,再点击“Download”就可以下载了。不知道是不是SC LINK与UART0的端口“打架”了。

相关帖子

沙发
lisingch|  楼主 | 2018-9-26 21:19 | 只看该作者
上面总结的下载办法现在咋又不灵了

使用特权

评论回复
板凳
笨笨兔| | 2018-9-27 14:18 | 只看该作者
我遇到串口没有发送的问题,原来居然是把Tx也要设置成 “输入带上拉”!,规格书上没提到,你是从那里得知的?
P15/P16连接了串口模块后,是不能下载,我也是要拔掉串口模块才可以下载。

使用特权

评论回复
地板
lisingch|  楼主 | 2018-9-27 18:10 | 只看该作者
笨笨兔 发表于 2018-9-27 14:18
我遇到串口没有发送的问题,原来居然是把Tx也要设置成 “输入带上拉”!,规格书上没提到,你是从那里得知 ...

有一份“赛元SC92F7003_8003应用指南”,你可以看看。

使用特权

评论回复
5
lisingch|  楼主 | 2018-9-27 18:14 | 只看该作者
@笨笨兔 你看看这个:

赛元SC92F7003_8003应用指南.pdf (1.52 MB)

使用特权

评论回复
6
笨笨兔| | 2018-9-28 11:22 | 只看该作者
lisingch 发表于 2018-9-27 18:14
@笨笨兔 你看看这个:

谢谢了!

颜值即正义,代码即手册。8位机的外设这么简单,搞多几个实际能跑的例子,然后在代码里注释才好。
比如UART,显然要涉及端口设置、波特率设置,而在GPIO部分又不提到复用成其他功能时的设置要求。。

使用特权

评论回复
7
笨笨兔| | 2018-9-28 11:32 | 只看该作者
另外,关于插着 USB转UART的串口模块 时不能下载,我估计应该是仿真器下载时需要对目标板断电,但此时串口模块会通过引脚里的嵌位二极管给芯片供电。。。

原厂的人也不冒个泡解释一下下载机制,然后重新设计一个最小系统板,像现在这种下载一次要拔一次串口模块,人都要疯了!

使用特权

评论回复
8
lisingch|  楼主 | 2018-9-28 11:55 | 只看该作者
笨笨兔 发表于 2018-9-28 11:32
另外,关于插着 USB转UART的串口模块 时不能下载,我估计应该是仿真器下载时需要对目标板断电,但此时串口 ...

拔来拔去弄得头大并且还蓝屏了三次,串口暂时先放一放,看看大家有没有解决的高招

使用特权

评论回复
9
waynechang| | 2018-9-29 17:58 | 只看该作者
点赞

使用特权

评论回复
10
纠结的那些年| | 2018-9-30 11:32 | 只看该作者
这个串口拔来拔去,是容易出问题。

使用特权

评论回复
11
纠结的那些年| | 2018-9-30 11:32 | 只看该作者
给你们点赞。哈哈

使用特权

评论回复
12
大鹏2365| | 2018-10-13 18:39 | 只看该作者
蓝屏,我也经常蓝屏,不知道该如何是好

使用特权

评论回复
13
lisingch|  楼主 | 2018-10-13 19:51 | 只看该作者
大鹏2365 发表于 2018-10-13 18:39
蓝屏,我也经常蓝屏,不知道该如何是好

暂时还没弄明白,感觉SC LINK与串口有冲突。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14990

帖子

17

粉丝