1、功能描述
使用ZYNQ纯逻辑端(PL端)实现UART功能,上位机下发数据,ZYNQ将接收到的数据发送回给上位机,检查下发和回传的数据是否一致,用于测试程序是否正确,每次只发一次数据。
2、遇到问题描述
接收到的数据能够正常回传至上位机,但是偶尔会多回传多一个数据,且是没有循环无规律性。
比如:上位机下发0x0F,正常情况下RX模块接收到0x0F,RX模块将0x0F给TX模块,TX模块将0x0F发送给上位机。上位机接收到0x0F,有时候还会多接收到一个数据0xFF,也就是TX模块误传回多一个数据0xFF。
3、解决方法
使用vivado在线逻辑分析仪抓数据,当上位机下发一次数据0x5F,TX模块回传数据0x5F,并且还多发送一次0xFF。
通过分析观察RX模块中的rx信号被“拉低”两次,意味着数据会发送两次给上位机。
首先可以确认RX模块接收数据ok,TX模块发送数据ok,问题是多触发发送一次,可以肯定RX线和TX线路连接没有问题。
其次地线也连接了,因为需要“共地”有参考电平标准,否则数据传输不准确。
基于地线这一块做出了分析,如果地线接的位置不合适那又会出现什么情况??
最终使用万用表进行测量,测量所有的地线是否有导通,经过检测并不是所有地线都有导通,也就是说数据错误很有可能是因为地线没接对的原因。最后将USB线中的地线连接到与TX线较近的地线,最后重新测试数据ok。