文章目录[隐藏]
- 波特率是多少?
- 为什么要为串行通信设置波特率?
- 单片机串行通信波特率的计算
- 波特率与字节的关系
串行端口波特率(以便找出设置串行端口通信的原因)
为什么要为串行通信设置波特率?要知道这个答案,首先我们来了解一下波特率是多少:
波特率是多少?
波特率,以bps为单位-每秒传输的字节数。
波特率表示每秒传输的符号数,是衡量数据传输速率的指标。它用单位时间内载波调制状态变化的次数来表示。波特率是指数据信号对载波的调制速率,用单位时间内载波调制状态变化的次数来表示,其单位为波特。
为什么要为串行通信设置波特率?
有两种可靠的说法:
1、根据电的物理特性,传输介质等。,结合串口设备的要求
为了保证有效的通信,根据电、传输介质的物理特性和串口设备的要求,只能确定RS232的最大传输速率为115,200,然后逐步得到57,600、28,800和19,200。
2.这是由电信线路的特性决定的
电话线的带通是300-3千赫。当时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的溢出率决定:
波特率= (2SMOD/32)*(定时器1溢出率)
注:这里的2SMOD是指数,SMOD是波特率双波特率位,在PCON寄存器中。
当定时器1用作波特率发生器时,通常需要将定时器1配置为8位自动重载模式,并禁止定时器1中断。那么tim是如何计算er 1的溢出率的呢?溢出率是溢出的频率。假设晶振频率为12MHz,TH1值为0xFE,溢出只需要两个时钟脉冲,溢出周期为2us,因此溢出频率为500KHz。
根据计时器部分,计时时间有以下计算公式:
计时时间=(最大计数值-初始计数器值)*机器周期=(最大计数值-初始计数器值)*(12/晶振频率(Hz))(s)=(256-TH1)*(12/OSC _ freq(Hz))(s)。
那么溢出频率自然是:
OSC_FREQ(赫兹)/((256-TH1)*12).
因此,波特率最终推导如下:
(2s mod/32)*(OSC _ FREQ(Hz)/((256-TH1)* 12)).
有了波特率的计算公式,自然可以根据波特率推导出TH1的初始值:
波特率=(2SMOD/32)*(OSC _ FREQ(Hz)/((256-TH1)* 12))
32 * 12 *(256-TH1)=(2SMOD * OSC _ FREQ(赫兹))/波特率
256-TH1=(2SMOD*OSC_FREQ(赫兹))/(波特率*32*12)
TH1=256-(2SMOD*OSC_FREQ(赫兹))/(波特率*32*12)
假设晶振频率为11.0592MHz,波特率为9600,SMOD=0,那么TH1的初始值应该是多少?根据上述公式,可以计算出TH1=256-11059200/(9600*32*12)=0xFD。
波特率与字节的关系
1GB=1024MB
1MB=1024KB
1KB=1024B(字节)
我们需要串口每秒接收512字节的数据,串口的波特率为115200位/秒
波特率115200 = 115200(位/秒)
如果没有奇偶校验位,应该除以10得到每秒字节数:波特率115200 = 115200(比特/秒)= 11520(字节/秒)
除以1024,就是KB/秒:波特率115200 = 115200(比特/秒)= 11.25(KB/秒),也就是每秒可以接收512个字节。