初学 STM32 和 M051 485通信,数据发送正确,能接收到,但是接收的数据不对,所以想在接收端通过判断所发数据的起始位或停止位来逐步调试,找出原因。求各位对串口熟悉的大虾给点思路,多谢多谢,感激不尽。
------解决方案--------------------
用逻辑分析仪看到底是发错了还是收错了
一位位的调试不现实
------解决方案--------------------
简单点,是不是线接反所以反相了?另外查波特率,数据位,校验设置是否一致
判读数据也可以,用示波器抓出波形来,第一个跳变沿就是起始位,根据你的波特率就知道每位多长时间,一位一位判读,最后跳回起始位之前电平的就是停止位
------解决方案--------------------
用示波器 简单 快捷 一目了然
------解决方案--------------------
初学 STM32 和 M051 485通信,数据发送正确,能接收到,但是接收的数据不对
这个重点查485的通信方向,比较切换方向时间,切换的电平是否稳定
没必要一位一位去查。
------解决方案--------------------
用逻辑分析仪看到底是发错了还是收错了
一位位的调试不现实
------解决方案--------------------
同上,用逻辑分析仪调试一下
------解决方案--------------------
起始位?停止位?这两个位有必要去检测么?
串口本身自带的边沿检测,不向外部提供中断服务的吧。
我只知道C51的是定时器带有边沿检测,然后产生波特率接收、发送数据。
我估计是你的串口校验位、数据位、停止位与测试串口的不同造成的。有示波器的话看一下波形就知道了。