最近在调试GD32F450的串口,用的是485,用一个安卓屏和我们自己做的GD32F450板子通信,安卓屏发送GD32F450接收,发现有一些数据完全收不到,有一些数据出现误码,通过各种分析和示波器抓包,最后确定问题是安卓屏发送的数据低电平时长偏小导致的,比如我设置115200波特率,正常的高低电平应该是8.6us左右,但是我抓出来的低电平只有6us,这就导致起始位低电平时间不够,GD32F450不能正确的判断起始位,开始接收数据。但是我仔细看了开发手册里面说的16倍过采样,数据位采样3个点,取的是789三个点,按照这个说法,6us内是完全可以取到789点的,也是可以判断的;还有手册上面说3个采样点里面如果数值不一样会产生噪声错误(NERR),我使能了DMA和错误中断,也没有看见错误中断。能不能来个大神解答下疑惑,这个数据到底是怎么处理了,既没有接收也没有报错。 |