TI论坛
直播中

李雨坤

7年用户 289经验值
私信 关注

请问为什么TL16C554扩展串口接收数据出现多余的00?应该如何解决?

本帖最后由 一只耳朵怪 于 2018-6-21 15:08 编辑

利用AM335X芯片的GPMC扩展8路串口,2400~57600bps条件下通讯收发均正常,在115200bps条件下出现误码,收到的数据通过485监测,数据是正确的,但在应用层读进来的数据,当接收的数据超过18个字节时,多了随机的00字节,请各路大神指点一下!谢谢
监测到的数据帧:7E 32 30 30 31 34 30 30 30 30 30 30 30 46 44 42 39 0D
通过read读取的数据帧:7e 32 0 30 30 31 34 30 30 30 30 30 30 30 46 44 42 39
当向AM335X的扩展串口发送18个字节时,最后一个字节0D被截断,收到的数据第三个字节被00填充了,当接收的数据超过18个字节都会出现这种情况

回帖(6)

罗兰君

2018-6-21 07:36:36
如同你发的相同帖子的回复,能否调整一下应用层的串口收发速度
举报

范逊敏

2018-6-21 07:55:50
是否可以增加数据协议来保证数据的完整性和可靠性
举报

李雨坤

2018-6-21 08:12:30
引用: 344868615qq 发表于 2018-6-21 07:36
如同你发的相同帖子的回复,能否调整一下应用层的串口收发速度

串口的收发速度都作了延时控制,在115200pbs条件下,当通过串口调试助手向AM3352发送902个字节时,扩展串口只能接收到671个字节,丢包的情况还是比较严重的。在接收到的671个字节中,每隔16个字节都会***入一个“0”字节。2400~57600pbs波特率条件下不存在丢包的现象。
7e 32 0 30 30 31 34 31 30 30 32 33 37 34 30 30 32 38 37 0 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 0 46......46 0 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 0 46 46 46 46 46 46 46 46 46 46 46 46 31 32 30
通过示波器对TL16C554的RX引脚上波形进行分析时,发现波形是完成正确的。通过查阅相关帖子,有如下描述“当连续接收大量数据时,如果串口IST不能及时读走FIFO中的数据(发生中断时FIFO再接收两个字节就满),将导致串口通信出现丢失数据的情况,当系统任务繁重时这种情况就会更加严重。”
不知道Jian Zhou工有什么更好的解决方法没有?
举报

罗兰君

2018-6-21 08:32:04
引用: 嘻嘻爱哈哈 发表于 2018-6-21 08:12
串口的收发速度都作了延时控制,在115200pbs条件下,当通过串口调试助手向AM3352发送902个字节时,扩展串口只能接收到671个字节,丢包的情况还是比较严重的。在接收到的671个字节中,每隔16个字节都会***入一个“0”字节。2400~57600pbs波特率条件下不存在丢包的现象。
7e 32 0 30 30 31 34 31 30 30 32 33 37 34 30 30 32 ...

可不可以认为是16C554那边收到的数据速度太快,而AM335x GPMC读取的速度跟不上导致的丢包呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分