欢迎进入广州光桥通信官网,我们的产品有:光纤收发器,工业交换机,电话光端机,工业4G路由器.

他们都在找: 工业PoE交换机光纤收发器视频光端机电话光端机工业以太网交换机

当前位置首页 » 串口通信为什么要设置波特率?串口通信波特率计算

串口通信为什么要设置波特率?串口通信波特率计算

返回列表 来源:光桥 查看手机网址
扫一扫!串口通信为什么要设置波特率?串口通信波特率计算扫一扫!
浏览:- 发布日期:2020-05-28 09:33:43【

串口通信为什么要设置波特率?串口通信波特率计算

单片机串口通信时,总要设置波特率,而波特率一般要设成9600,19200...?这是传统么?从什么来的?而相应的晶振一般也是11.0592MHZ。是先设晶振再设波特率还是先设波特率再设晶振,为什么要这样设置呢?

有两种比较可靠地说法:

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

为了保证有效通讯,根据电、传输介质等的物理特性结合串口设备使用的要求,确定RS232最大传输速率只能是115200,然后逐级二分得到57600,28800,19200......;为适应这些速率,设计相应的晶振频率。

2:这是由电信线路特性决定的

电话线路的带通是300--3KHz,当时hayes先搞的modem,所以用的2400HZ信号,对应波特率是2400。由于基本频率确定了,以后采用的提高通讯速率的方法都是在2400基础上倍频的,所以形成了9600.19200......

不管哪种说法,都是先有波特率再有晶振频率。

单片机串口通信波特率计算

在模式0和模式2下,串口波特率固定,模式0为Fosc/12。模式2为Fosc/32或Fosc/64,具体由PCON寄存器的SMOD位决定。

在模式1和模式3下,波特率是一个可变值,波特率可以由定时器1产生(8052可以由定时2产生),那么波特率到底为多少呢?波特率由定时器1的溢出率来决定:

Baud Rate = (2SMOD/32)*(Timer 1 Overflow Rate)

注意:2SMOD这里的SMOD是指数,SMOD为波特率双倍波特率位,该位在PCON寄存器中。

当使用timer 1作为波特率产生器时,通常需要将timer 1配置成8位自动重装的工作模式下,同时还要禁止timer 1中断,那么timer 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))/(BAUD_RATE*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。


光纤收发器|工业交换机|PCM复用设备|串口光端机|串口服务器

    【本文标签】:光纤交换机 工业交换机 以太网交换机 光纤收发器 电话光端机 光电转换器 光端机
    【责任编辑】:光桥版权所有:转载请注明出处