清风迎明月 发表于 2024-5-9 16:45:24

请教STC8串口通信初值计算问题

STC8H单片机,串口通信时,采用1T模式,T3做定时器,
范例中给出的初值计算为

(65536-(MAIN_Fosc/Baudrate/4))

搞不清楚式中的4是哪来的?
所谓波特率就是定时器的溢出率
假设初值为X
一次溢出所需时间=(65536-X)/MAIN_Fosc
那么溢出率,即波特率为
Baudrate=1/(65536-X)/MAIN_Fosc

那么初值X为,
X=65536-MAIN_Fosc/Baudrate
范例中的4是哪来的?




乘风飞扬 发表于 2024-5-9 16:54:54

规格书里有介绍串口波特率计算公式:

zhp 发表于 2024-5-9 17:05:30

计算公式中的4代表4倍采样
也就是硬件会对串口信号的每个bit都采样4次,以确保采样的信号是稳定的

(传统的8051的串口1是16倍采样)

清风迎明月 发表于 2024-5-9 17:19:57

zhp 发表于 2024-5-9 17:05
计算公式中的4代表4倍采样
也就是硬件会对串口信号的每个bit都采样4次,以确保采样的信号是稳定的



{:4_196:}感谢!

soma 发表于 2024-5-20 08:42:56

原来串口波特率是这样计算的啊,如果采用12t在除以12,正常除以4或者16看几倍采样

梁工 发表于 2024-5-24 13:22:30

4是硬件决定的,是串口模块需要4个串口时钟处理一个bit,以前老51是16个串口时钟。
串口接收是需要串口时钟来驱动的,串口时钟=fosc/baudrate。
页: [1]
查看完整版本: 请教STC8串口通信初值计算问题