C51 UART专题

1. 为什么选择T1, 方式2

选择定时器1是因为芯片内部硬件设计如此:

方式2,是自动重装,由硬件确保波特率的时钟稳定,如果采取在中断中重置定时器初值,容易导致波特率产生偏差;

2. 波特率如何计算

波特率的计算参考如下公式:

3. 硬件连线


调试问题与解决

开发板上串口发送接收异常,但是烧录电路可以正常工作,同时该芯片放到最小系统板上可以正常工作,因此初步排除芯片不良,电压测量后也是5V, 排除供电问题;

目前可以稳定复现,单片机中发送0x41, 接收端接收的是0xA1; 还剩一个怀疑点,可能是引脚虚焊导致,重新焊接一下试试看还是不行;无奈,只能继续从软件上想方案,

突然发现定时器的初值设置的是F4,而单片机小精灵算出来的误差最小的波特率应该是F3, 我一开始觉得F4只差了一位,应该也是ok的,谁知道带入公式才发现,虽然只差

了1,但是波特率却从4807(误差0.16%)变成了5208,误差达到了8.5%, 真的是差之毫厘,谬以千里啊。改了这个值之后,程序果然就正常了

 

posted on 2023-10-21 22:18  疾速瓜牛  阅读(51)  评论(0)    收藏  举报

导航