串行通信波特率设置和波特率算法

文章来源:锐特步进电机 时间:2019-11-28 10:25:19 浏览:

  使用单片机的串行通讯时,必须设置波特率,并将波特率设置为9600、19200 ...?这是传统吗?从何而来?相应的晶体振荡器通常也为11.0592MHZ。

  首先设置晶体振荡器,然后设置波特率,还是先设置波特率,然后设置晶体振荡器?为什么要设置?

  还有两个更可靠的声明:

  1:根据电力,传输介质等的物理特性,结合串行设备的使用要求

  为了确保有效的通信,根据电力,传输介质等的物理特性,结合串行设备使用的要求,确定RS232的最大传输速率只能为115200,然后分两步获得得到 57600,28800,19200; 为了适应这些速率,设计相应的晶体频率。

  2:这取决于电信线路的特性。

  电话线的带通为300--3KHz。当时,海斯首先进入调制解调器,因此使用2400HZ信号,相应的波特率是2400。由于确定了基本频率 ,因此后来采用的改进方法是在2400的基础上乘以速率的方法,因此形成9600.19200。。。。

  无论哪种方式,都有一个波特率,然后是一个晶体频率。

  单片机串行通讯波特率的计算。

  在模式0和模式2中,串行端口波特率是固定的,模式0是Fosc / 12。模式2是Fosc / 32或Fosc / 64,由PCON寄存器的SMOD位确定。

  在模式1和模式3中,波特率是一个可变值。波特率可以由定时器1生成(8052可以由定时2生成)。波特率是多少?定时器1的 溢出率由溢出率确定:

  波特率=(2SMOD / 32)*(定时器1溢出率)

  注意:2SMOD此处SMOD是索引,SMOD是波特率双波特率位,该位位于PCON寄存器中。

  当使用定时器1作为波特率发生器时,通常需要将定时器1配置为工作在8位自动重载模式,并禁用定时器1的中断,然后定时器1的溢出 如何计算?溢出率是溢出的频率。假设晶振频率为12MHz,TH1值为0xFE,则只需要两个时钟脉冲即可溢出,且溢出周期为2us,则溢出频率为500KHz。根据计时器部分,计时时间具有以下公式:

  计时时间=(最大计数值-计数器初始值)*机器周期=(最大计数值-计数器初始值)*(12 /晶体频率(Hz))(s)=(256-TH1)*(12 / OSC_FREQ( Hz))(s)。

  那么溢出的频率自然是:

  OSC_FREQ(Hz)/((256-TH1)* 12)

  因此,最终的按推速率为:

  (2SMOD / 32)*(OSC_FREQ(Hz)/((256-TH1)* 12))。

  可以使用波特率的计算公式,自然可以根据波特率得出TH1的初始值:

  BAUD_RATE =(2SMOD / 32)*(OSC_FREQ(Hz)/((256-TH1)* 12))

  32 * 12 *(256-TH1)=(2SMOD * OSC_FREQ(Hz))/ BAUD_RATE

  256-TH1 =(2SMOD * OSC_FREQ(Hz))/(波特率* 32 * 12)

  TH1 = 256-(2SMOD * OSC_FREQ(Hz))/(BAUD_RATE * 32 * 12)

  假设晶振频率为11.0592MHz,波特率为9600,SMOD = 0,TH1的初始值应该是多少?根据上面的公式,可以计算出 TH1 = 256-11059200 /(9600 * 32 * 12)= 0xFD。

TAG 波特率
更多信息请关注 深圳锐特步进电机 http://www.szruitech.com/
上一篇:总线控制系统FCS与分布式控制系统DCS的区别   下一篇:伺服放大器的作用原理说明

自动化领域,锐特机电为您选择合适的步进电机产品