问题描述
今天做485通讯时 发现一个问题,我用串口助手测试主副板功能时均正常,然后我将串口助手并联到485总线上,神奇的事情发生了
这让我百思不得其解,信息是相同的为什么和助手可通讯,但主从互相无法通讯呢?
我一开始以为是电路的故障,但是烧写了同事的老程序发现,主副板通讯正常。我就仔细看了下代码发现波特率设置的与之前不同,我的程序里是用115200进行通信的,而之前的程序同事使用的是9600可是从stm32芯片手册和MAX13487上来看115200不该是瓶颈啊,串口的速度也已经设置为最高了。
解决方法
将波特率换为9600,主副板通信正常
但是我还是没想通为什么电脑就可以接收正常而,互通就不行呢,如果是因为电脑的缓存大,不会丢失字节,那么他作为发端时板子也是接收正常的又该如何解释。但从debug的调试结果来看 主板发往副板的信号,经副板接收时已经失真,我现在唯一的解释就是usb转485模块具有一定的整形功能,在高频率下也可工作正常,而主副板的缺少整形电路,导致高频率下的信号无法正确采集,信号失真。
以下是我在搜索时找的类似问题,是232电路
串口问题——两个设备和电脑串口助手可以正常通信,但这两个设备不能通信
总结
多用示波器找问题,串口乱码最多的情况就是波特率问题