串口初始化中的double speed【恢复】
我在你的书239页看到这样的一段话:在不使用波特率倍增选项时,9600波特率的设置将会出现7.5%的误差,选中后可以获得0.2%的误差。 有些不理解... double speed的作用不就是倍速么? 怎么还可以减小误差?? 希望版主给我讲讲 这个问题其实比你想象的要简单。波特率增倍减小误差的原因,是由于,书中的设置建立在系统使用内部1M频率的
原因,在波特率不增倍的情况下,根据波特率计算公式(你可以从PDF上找到),
你很容易发现,现有的系统工作频率无法达到要求,因为波特率设置寄存器的值
为6时的8929已经是最接近9600的波特率了,当采用波特率增倍模式时,相当于
把系统时钟分频减少了一倍,也就是相当于不倍频时,系统时钟为2M时的情况。
根据公式,我们可以得到一个更细化更逼近9600波特率的值。
总之,波特率是一个和时间相关的量,系统时钟频率越高,系统的每一个脉
搏的时间度量单位就更小,更细,因此在计算时,能产生更接近目标值的结果。 与其叫“倍速”不如叫“附加的二分频器”:)
页:
[1]