51 MCU的串口发送很有意思:
先发送起始位,再发8个数据位,在发送停止位的瞬间,TI置1,如果打开中断,在中断程序里立即发送下一个字节。但是实际发送是和16分频后的时钟同步的,如果发送的是0X55数据,则就是周期的方波输出。如果每隔1S发送一串比较长的字符串,比如20字节,波特率9600,PC接收端会偶尔误码。也就是说,当停止位的宽度是1bit宽度时,PC连续接收会偶尔误码。如果在中断程序里人为加一个延时,这样停止位后面再加1bit的高电平,PC接收就不会误码了。
大家说:难道PC的串口接收电路或者程序有BUG吗?
按道理,在2个字节之间无需增加额外的延时。
准备MCU发,MCU接收,测试一下看看MCU接收是否会误码。
|