在一个阳光明媚的中午,又来絮叨
波特率:单片机或计算机在串口通信时的速率
它是与时钟周期有关的
51的 1机器周期 = 12时钟周期
在51的方式0和方式1下,波特率公式很好计算
模式0为 Fosc / 12
例如:外接24M晶振的单片机,他的机器周期 = 12/24M 秒
模式2为 Fosc / 32 或 Fosc / 64
(SMOD= 1) (SMOD= 0)
模式1和模式3的波特率由定时器T1的溢出率与SMOD同时决定
波特率 = T1溢出率 / n
定时时间 = (最大计数值 - 计数器初值)*机器周期
= (256 - TH1) * (12 / 晶振频率)
= ( (256 - TH1) * 12 ) / Fosc
溢出频率 = 1 / 定时时间
= Fosc / ( (256 - TH1) * 12)
波特率 = ((2^SMOD)/32) *溢出频率, SMOD = 0时
= ((2^SMOD)/16) *溢出频率, SMOD = 0时
以上是51的波特率与时钟的关系,下面是STM32F1xx的
Tx / Rx 波特率 = Fpclkx / (16 * USARTDIV)
其中,Fpclkx是给串口的时钟,一般我们知道波特率和时钟,即可求得USARTDIV
USARTDIV = 72000000 / (115200*16) = 39.0625
= (pclk2 * 10^6) / (bound * 16)
you lust for my life, darkness and light