各位前辈们好!最近我在设计一个PC104转4路串口,用的方案是CPLD+TL16C554芯片实现,之前做了一个测试板子,在带有PC104工控机板子上测试调试都OK后。我根据产品机箱结构重新设计了电路板子,但是,无论怎么测试,串口收发就是不正常。CPLD程序和硬件电路与之前的测试板子都一样。
现象:1、发送数据,偶尔出现发送失败,一旦失败就无法再发送,必须重新打开串口或接收到一组数据后,才能继续发送,发送出去的数据,波形正常,在接收端上收到的数据也正常。
2、接收数据,接收数据时,一串数据里面,总是有个别数据老是出错,比如发送:“http://roaringwind.best.163.com"这串数据,接收的数据老是:“http:/rrarinwwind.bett.663.cm"。但,接收不会造成无法接收的情况。
根据如上描述,请各位有经验的前辈们,帮帮忙,在下为这事折腾了将近一个月了,给在下一些建议,如何解决这个问题,在下先谢谢各位前辈们了!再次万分感谢你们!!
串口FIFO多少?是用中断形式处理?还是查询形式?有没有试过加流控?波特率多少?有没有试过降低波特率?
串口FIFO16字节;中断形式处理;简单串口通讯,没有加流控;1200-9600波特率都有试过。
这个错误是每次必现的?还是偶现的?
加调试信息,每次将和串口相关的寄存器(包括配置寄存器,和数据寄存器)都打印一次,看看到底有什么不同。怕时间不够,就用最低波特率。
硬件上最好用示波器抓波形,看看是不是发送就错了。