关于UART-RS232在高波特率丢数据事件的秃头的一个月

前情提要,不看也行:

最近做一个数字板连接一个转台的”题目“,外界设备是STM32控制的,数字板是K7的画的PCB板,两个设备的通信呢,是通过UART-RS232进行的,主要是数字板进行指令下发(18字节)给转台和数字板接收转台的回传数据(也是18字节),回传数据里有转台当前的位置信息和上次下发的指令信息等数据。

由于系统对实时性要求比较高,位置信息最低也要100Hz吧,100*(18+1)*8=15200,(18字节+1停止位)也就是波特率最低也得15200吧,临近就是19200。这个转台是厂家做的,寄过来的时候呢,波特率460800的,回传频率可以自己设定(100-500/1000不等哈)。

说正事:

我们用FPGA呢,通过串口和转台连接,发现发送数据和接收数据都不正常,现象是1.我在调试模式看不到理想的应该回传回来的数据,有丢数据现象;2.转台无法在我发指令正确的情况下做相应的运动,转台不响应。此时我的FPGA用到的UARTLITE ip核选择的是波特率460800,axi时钟线是100MHz,独写FIFO均没开,深度为0。奥对用的是ISE软件里面的核和界面都比较老旧了。

请教了师兄和我的同学们,认为应该先找是FPGA的问题还是FPGA外围线路的问题,看了看VIVADO里在时钟为100M情况下波特率最高也就230400,于是乎数字板-232usb线-电脑,用电脑的串口助手看结果总行了吧,在数字板发数据的过程中,串口助手均显示丢数据!直到波特率为38400才正常,丢的什么样子呢,很规律的每次都是变为另一组数据,但是出现的时间又没有规律下图:

不合理,受同学启发,这数字板上的UART-RS232芯片值得关注一下,芯片名MAX3232ipw,ipw是个后缀,现在带这个后缀快停产了,说明比较旧性能肯定也比不上现在在产的,官方手册显示,MAX3232系列最高的数据速率为250Kbps,也就是波特率最高也就用个230400吧。那么有问题的波特率范围变小了,变为了38400~230400.那中间缺失的是为啥啊。(烦死了要秃头了啊

又请教了热心网友,这个网友看似很懂,他本科毕业在一家养老国企,业余时间就玩玩板子,看起来是真爱啊。他用的好像是中断模式了,自发自收应该是。不过他说出了一个点:FIFO缓存。想来也有道理。如果数据传输特别快的话,有个FIFO缓存一下多少能有改善吧,但是改了没啥用啊,FIFO缓存0/32/512三个选项,没变化,放弃。

后来啊,把所有的线收起来了(此处有伏笔),因为去调别的了,当我再用的时候就随便换了一根线,然后当我烧上波特率为230400的程序时,用数字板给电脑发数据,我的串口调试助手的结果竟然正常了!我简直不敢相信我的眼睛,怀疑是不是还没睡醒出现幻觉了,反复确认程序确实是230400的波特率没错时,告诉了同门,这系统最后是他用,让他知道一下。。。然后发现变量只有那根RS232-USB线不一样。。。。。这不离谱呢?之前转台连电脑,串口助手结果正常啊???虽然用这根线烧STM32的时候,烧不进去,确实是线不行才烧不进去。然后在淘宝链接里发现这线支持最高波特率128000,行吧,烧程序波特率要115200,能烧才怪,但是转台波特率是460800竟然能传给电脑并且没有出错。也挺奇怪的。

紧接着赶紧有这个好一点的线测了FPGA,230400没问题,115200没问题,再低肯定也没问题了。索侧面反映MAX3232性能跟手册写的还挺一致哈。 

为啥呢?就挺秃然的。转台连电脑,就没有数据丢失呢?

看看电平。。。。(注意纵轴的刻度)

FPGA的输出电平低,猜测:垃圾线的驱动能力差吧。。连接转台,转台输出电平高,体现不出垃圾线的缺点,但FPGA电平低一点垃圾线的缺点就暴露了。

能看到垃圾线跟好线的电平差的有点多啊,此时回忆起了各种资料里RS232协议:

能看出这个便宜线确实不太行啊,电平没在规定里啊都,趁早扔掉,便宜没好货,同门买的线,这就去骂他。

行吧,总结一下就是由于设备本身RS232输出电平有差异,RS232-USB线的芯片不一样,驱动能力也不同,强弱组合看不出差距,但弱弱组合就是菜鸡了,跟我一样。。。还有就是买线要买好线啊。便宜线吃大亏啊/笑哭

还有一点存疑就是看了网上各种资料都说RS232协议最好用在速率20k以内,这个好像我用高了也没啥事啊?不知道是不是我理解的不对,但我不想管了、、、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dayana_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值