0°

波特率计算(单片机:请教一下,这里的波特率是怎么算的呢?)

11.059M/384=28800 这个等式是怎么来的,为什么要用晶振频率除以384呢?

请教一下:

  • 51单片机波特率公式中TH1 = TL1 = 256 晶振值/12 /2/16 /波特率,16是因为每个字节要采样16次来确定数据位,但是为什么还要除以2呢?请解释一下!
  • 如果把PCON的最高位设为1,就可以把波特率提高一倍,那么TH1 = TL1 = 256 晶振值/12 /16 /波特率——这里为什么不是TH1 = TL1 = 256 晶振值/12 /2/16 /(2*波特率)呢?波特率不是已经翻倍了吗?请解释一下!
  • 教材描述内容:

    如果用定时器 2,需要配置额外的寄存器,默认是使用定时器 1 的,我们本章内容主要就使用定时器 T1 作为波特率发生器来讲解,方式 1 下的波特率发生器必须使用定时器 T1 的模式 2,也就是自动重装载模式,定时器的重载值计算公式为:

    $$TH1 = TL1 = 256 frac{text{晶振值}}{12 times 2 times 16 times text{波特率}}$$

    和波特率有关的还有一个寄存器,是一个电源管理寄存器 PCON,他的最高位可以把波特率提高一倍,也就是如果写 PCON |= 0x80 以后,计算公式就成了:

    $$TH1 = TL1 = 256 frac{text{晶振值}}{12 times 16 times text{波特率}}$$

    公式中数字的含义这里解释一下,256 是 8 位定时器的溢出值,也就是 TL1 的溢出值,晶振值在我们的开发板上就是 11059200,12 是说 1 个机器周期等于 12 个时钟周期,值得关注的是这个 16,我们来重点说明。在 IO 口模拟串口通信接收数据的时候,采集的是这一位数据的中间位置,而实际上串口模块比我们模拟的要复杂和精确一些。他采取的方式是把一位信号采集 16 次,其中第 7、8、9 次取出来,这三次中其中两次如果是高电平,那么就认定这一位数据是 1,如果两次是低电平,那么就认定这一位是 0,这样一旦受到意外干扰读错一次数据,也依然可以保证最终数据的正确性。

  • 17、 8051单片机的串行口设为模式1工作,若每分钟传送28800个字符,求其波特率
  • 解:波特率就是每秒传送的位数,一个字符有8位,所以波特率等于28800*8=230400b/s。

  • 18、 若晶振f=11.059MHz,串行口以方式1工作,波特率为9600b/s,则用T1模式2作波特率发生器,SCON和TMOD如何设置定时初值=
  • 解:根据公式,定时初值为:

    $$TH1 = TL1 = 256 frac{text{晶振值}}{12 times 2 times 16 times text{波特率}} = 256 frac{11059000}{12 times 2 times 16 times 9600} approx 253$$

    SCON要设置为模式1,即SM0=0,SM1=1,TMOD要设置为T1模式2,即M1=0,M0=1,CT=0,GATE=0。

    TX/RX波特率=Fck/(16*USARTDIV)

    我想问问这USARTDIV的值是不是就是波特率的预分频值,比如说下面这条

    那么USARTDIV=256吗?假设fck=15mhz,那么最终波特率就等于15mhz/(16*256)吗?

    回答:是的,USARTDIV就是波特率的预分频值,你的理解是正确的。如果fck=15mhz,那么最终波特率就等于15mhz/(16*256)=3662.11b/s。

    「点点赞赏,手留余香」

      还没有人赞赏,快来当第一个赞赏的人吧!