[活动专区] 8003硬件板+(二)UART

[复制链接]
543|12
 楼主 | 2018-9-26 20:55 | 显示全部楼层 |阅读模式
本帖最后由 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。如:
  1. /*****************************************************
  2. *函数名称:void Uart0_Init(uint Freq,unsigned long int baud)
  3. *函数功能:Uart0中断初始化
  4. *入口参数:Freq-主频,baud-波特率
  5. *出口参数:Freq,baud
  6. *****************************************************/
  7. void Uart0_Init(unsigned int Freq,unsigned long int baud)    //选择Timer1作为波特率信号发生器
  8. {
  9.         P1CON &= 0x9F;           //TX/RX设置为输入带上拉
  10.         P1PH  |= 0x60;
  11.         
  12.         SCON  |= 0X50;           //设置通信方式为模式一,允许接收
  13.         TMCON |= 0X02;                //定时器T1频率源自于fSYS  
  14.         TMOD  |= 0X20;                //8位自动重载定时器,溢出时将TH1存放的值自动重装入TL1
  15.         PCON  |= 0X80;                //SMOD=1 串行端口在系统时钟的1/4下运行
  16.         TH1 = (Freq * 1000000 / baud) >> 8;          //波特率为T1的溢出时间;
  17.         TL1 = Freq * 1000000  /baud;
  18.         TR1 = 0;                                        //T1停止计数
  19.         ET1 = 0;                                        //关闭TIMER1中断
  20.         EUART = 1;                     //开启Uart0中断
  21.         EA = 1;                                                //打开所有的中断
  22. }
复制代码
在这里与传统51不同的是要对TX及RX引脚进行设置,即将其设置为输入带上拉模式。另一点传统51的串口中断使能位为“ES”,这里将其定义为“EUART”,使用时要注意。

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


3、实验现象


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-9-26 21:19 | 显示全部楼层
上面总结的下载办法现在咋又不灵了
| 2018-9-27 14:18 | 显示全部楼层
我遇到串口没有发送的问题,原来居然是把Tx也要设置成 “输入带上拉”!,规格书上没提到,你是从那里得知的?
P15/P16连接了串口模块后,是不能下载,我也是要拔掉串口模块才可以下载。
 楼主 | 2018-9-27 18:10 | 显示全部楼层
笨笨兔 发表于 2018-9-27 14:18
我遇到串口没有发送的问题,原来居然是把Tx也要设置成 “输入带上拉”!,规格书上没提到,你是从那里得知 ...

有一份“赛元SC92F7003_8003应用指南”,你可以看看。
 楼主 | 2018-9-27 18:14 | 显示全部楼层
@笨笨兔 你看看这个:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-9-28 11:22 | 显示全部楼层
lisingch 发表于 2018-9-27 18:14
@笨笨兔 你看看这个:

谢谢了!

颜值即正义,代码即手册。8位机的外设这么简单,搞多几个实际能跑的例子,然后在代码里注释才好。
比如UART,显然要涉及端口设置、波特率设置,而在GPIO部分又不提到复用成其他功能时的设置要求。。
| 2018-9-28 11:32 | 显示全部楼层
另外,关于插着 USB转UART的串口模块 时不能下载,我估计应该是仿真器下载时需要对目标板断电,但此时串口模块会通过引脚里的嵌位二极管给芯片供电。。。

原厂的人也不冒个泡解释一下下载机制,然后重新设计一个最小系统板,像现在这种下载一次要拔一次串口模块,人都要疯了!
 楼主 | 2018-9-28 11:55 | 显示全部楼层
笨笨兔 发表于 2018-9-28 11:32
另外,关于插着 USB转UART的串口模块 时不能下载,我估计应该是仿真器下载时需要对目标板断电,但此时串口 ...

拔来拔去弄得头大并且还蓝屏了三次,串口暂时先放一放,看看大家有没有解决的高招
| 2018-9-29 17:58 | 显示全部楼层
点赞
| 2018-9-30 11:32 | 显示全部楼层
这个串口拔来拔去,是容易出问题。
| 2018-9-30 11:32 | 显示全部楼层
给你们点赞。哈哈
| 2018-10-13 18:39 | 显示全部楼层
蓝屏,我也经常蓝屏,不知道该如何是好
 楼主 | 2018-10-13 19:51 | 显示全部楼层
大鹏2365 发表于 2018-10-13 18:39
蓝屏,我也经常蓝屏,不知道该如何是好

暂时还没弄明白,感觉SC LINK与串口有冲突。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表