关于uart串口接收端乱码问题

问题:在给gd32f303单片机封装串口驱动时,发现接收端乱码。

解决:经排查发现是系统时钟不准。经过调整内部时钟后成功解决问题。

注:异步通信协议uart依赖双方时钟的准确,任一方时钟不准都会导致乱码问题。

其他导致串口出问题的原因:

        1、分开的两台不同电源的设备间不共地

        2、两台设备波特率、停止位、检验位的设置不同

        3、设备没有供电

        4、波特率设置太高超过当前环境的信号线的传输极限

        5、程序中串口没有正确初始化

        6、同一引脚在代码不同地方初始化为不同功能,当程序执行时串口收发偶然受到干扰导致某些字节传送乱码

        7、某些用gpio口模拟串口的,芯片本身的io引脚翻转速率达不到,导致看似代码正常但示波器测量是一个尖峰,这种情况建议拉低波特率。

        8、传输线太长,偶然耦合了一些感应电压导致某些字节误码

你可能感兴趣的:(单片机,嵌入式硬件)