leito 发表于 2008-11-6 21:40:19

串口初始化中的double speed【恢复】

我在你的书239页看到这样的一段话:在不使用波特率倍增选项时,9600波特率的设置将会出现7.5%的误差,选中后可以获得0.2%的误差。 有些不理解... double speed的作用不就是倍速么? 怎么还可以减小误差?? 希望版主给我讲讲   

Gorgon_Meducer 发表于 2008-11-11 13:58:44

这个问题其实比你想象的要简单。

波特率增倍减小误差的原因,是由于,书中的设置建立在系统使用内部1M频率的

原因,在波特率不增倍的情况下,根据波特率计算公式(你可以从PDF上找到),

你很容易发现,现有的系统工作频率无法达到要求,因为波特率设置寄存器的值

为6时的8929已经是最接近9600的波特率了,当采用波特率增倍模式时,相当于

把系统时钟分频减少了一倍,也就是相当于不倍频时,系统时钟为2M时的情况。

根据公式,我们可以得到一个更细化更逼近9600波特率的值。

    总之,波特率是一个和时间相关的量,系统时钟频率越高,系统的每一个脉

搏的时间度量单位就更小,更细,因此在计算时,能产生更接近目标值的结果。

NE5532 发表于 2008-11-22 11:30:29

与其叫“倍速”不如叫“附加的二分频器”:)
页: [1]
查看完整版本: 串口初始化中的double speed【恢复】