论坛大神
  
- 积分
- 3505
- 金钱
- 3505
- 注册时间
- 2014-8-4
- 在线时间
- 696 小时
|
利用模拟232与工程师进行通信,我将接收信息显示于点阵屏幕,遇到的几个问题可能很简单,但却让我为难不少,在此做一总结,向从未谋面周哥的无私帮助、正点原子的无私奉献致敬!
1.何为模拟232。
我和工程师芯片工作电压不同(3.3V/5V),通过一根线将两个芯片串口进行对接,中间进行电压转换,也就是说没有遵守串口232电平约定,直接对接。我作为配合器件只负责接收数据以及简单处理显示。
2.仿照正点原子串口初始化,串口1能够正常接收数据,串口2无法接收外部数据,但是串口2能够接收串口1发送的数据。
这个问题反复测试很久,眼看批量板子就要生产出来了,串口2始终无法接收数据,做了跳线到串口1的最坏打算,结果在新做出来的板子上一测试串口2能够正常接收,原来是自己实验板子的原因,在此给大家提个醒,遇到问题要考虑实验平台的问题,多换一下实验器件,寻找是否有所不同。
3.串口1与串口2之间通信时,接收总是滞后发送一个字节。
网上有篇文章专门讲了这个,一时没找到,原子哥好像也提到过。可以在串口初始化最后加上while((USART2->SR&0X40)==0); 进行解决,也希望正点原子以后的串口函数能加上这句,使SYSTEM文件夹更加完善(个人浅见)。
4.串口通信时接收到的大部分数据是错误的。
波特率。这个有点搞了,接收数据不正确,怀疑是波特率不匹配,工程师通过示波仪观察我的波特率,然后把他的波特率改为2300,我测试时我的2400仍然不行,然后我试着将我的波特率改为2300,然后竟然通了。(工程师是用延时实现波特率,并不是直接配置实现)
5.看门狗反复复位几次后点阵显示页面乱跳,不能正常工作。
串口通讯对接不协调,开始以为是串口初始化做的不好,反复查找,最后经指点才恍然与工程师对接时我只是负责接收,就是在自己准备好后不管接收到的是工程师数据包的哪个字节都做一般处理导致页面显示异常,最后利用字节间间隔远短于数据包间隔进行判断,解决偶尔接收异常的问题。 |
|