这篇日志说一下有关晶振频率的选择问题。
先给出AVR串口波特率的计算公式:UBRR0 = (F_CPU / (16 * u32_BaudRate) - 1)
我们希望产生115200波特率,看选择不同晶振频率得到的结果。
1、7.3728M
UBRR0 = 7372800 / 1843200 - 1 = 3 取整后误差是0
2、8.0000M
UBRR0 = 8000000 / 1843200 - 1 = 3.34 取整后误差是0.34 / 3.34 = 10%
3、11.0592M
UBRR0 = 11059200 / 1843200 - 1 = 5 取整后误差是0
4、12.0000M
UBRR0 = 12000000 / 1843200 - 1 = 5.51 取整后误差是0.51 / 5.51 = 9%
5、14.7456M
UBRR0 = 14745600 / 1843200 - 1 = 7 取整后误差是0
由此可见晶振的频率取值非常重要,我现在板子上是12.0000M晶振,希望115200波特率,根本就调不出来。挖掘事情的真相,可以使人变得富有。
这篇日志说一下有关晶振频率的选择问题。
先给出AVR串口波特率的计算公式:UBRR0 = (F_CPU / (16 * u32_BaudRate) - 1)
我们希望产生115200波特率,看选择不同晶振频率得到的结果。
1、7.3728M
UBRR0 = 7372800 / 1843200 - 1 = 3 取整后误差是0
2、8.0000M
UBRR0 = 8000000 / 1843200 - 1 = 3.34 取整后误差是0.34 / 3.34 = 10%
3、11.0592M
UBRR0 = 11059200 / 1843200 - 1 = 5 取整后误差是0
4、12.0000M
UBRR0 = 12000000 / 1843200 - 1 = 5.51 取整后误差是0.51 / 5.51 = 9%
5、14.7456M
UBRR0 = 14745600 / 1843200 - 1 = 7 取整后误差是0
由此可见晶振的频率取值非常重要,我现在板子上是12.0000M晶振,希望115200波特率,根本就调不出来。挖掘事情的真相,可以使人变得富有。
举报