打印

串口数据解析出错问题分析

[复制链接]
1732|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星之火红|  楼主 | 2012-10-16 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.
目的          项目开发过程中遇到的串口数据解析出错问题分析并提出解决方案
2.
问题现象描述主控下发的开关波形数据下面驱动板有时候能解析正确,有时候解析不正确,而且主控下发某些数据时候就都能解析正确,下发其它数据比如0044的时候,就解析不正确。表现形式就是比如主控下发让驱动板一致开通A上管,驱动板解析出来的数据应该是一直是高电平,但实际情况是,间隔一段时间,A上管的开关就会出现一个低电平。
3.
问题分析针对上述问题,第一阶段实验分析:

²
对驱动板串口原始程序进行功能仿真和时序仿真,结果正确。

²
驱动板程序自发自收(环回)测试,结果正确。



²
用示波器抓发现上面主控发下来的数据变换的时候,解析出来的数据变化正好延迟一组,波形看的很明显。
²
主控发送特定数据的时候,解析错误的时候,但用示波器抓出来,发现前面的数据没有明显的错误。

²
编写测试软件对驱动板接收的数据进行分析,确定接收的数据有错误。


²
驱动板的接收模块重新编写,进行收发验证测试。

²
继续分析串口模块。

²
主控重新编写发送模块,进行测试验证。

²
修改串口通信协议,使串口数据由16位变8位验证。

4.
实验结果经过对串口接收模块分析和验证,发现设计上的一个缺陷。缺陷如下:串口波特率2M HZ ,系统时钟20MHZ,一个串口数据宽度是10个系统时钟周期,目前出错的程序,在接收串行数据时,是在数据的从开始位置起的第8个系统实战采样,如图:





上述采样的问题存在如下问题:如果实际波形上升时间和下降时间超过2个系统时钟周期,则导致硬件电路采样到亚稳态,从而导致CPLD驱动接收模块接收数据错误,引起数据解析错误。由于上面的问题在程序功能仿真和时序仿真不能确定,因为仿真的输入输出波形都是理想波形,不存在上升时间和下降时间,所以上述仿真不能发现该问题。由于实际器件的上升时间和下降时间不一致,所以在第一阶段验证时,出现主控有的端口发送数据,驱动程序能正确的解析数据;不能正确接收和解析数据的的端口丢包数目不同。

针对发现的问题:对驱动程序进行改进,串口接收数据解析时,数据采样如下图:(在从开始位置起的第6个系统实战采样,即在数据的稳定期开始采样,确保数据可靠):


5.
总结²
数据采样一定要在数据的稳定期进行,否则采样进入亚稳态,采样结果不能预期。

²
光模块的驱动电流越大,则数据传递带宽越小,传递的脉冲的上升和下降时间越大。

相关帖子

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

本版积分规则

101

主题

1782

帖子

22

粉丝