关于串口波特率(为了搞清楚串口通信为啥设置波特率) 的知识大家了解吗?以下就是小编整理的关于串口波特率(为了搞清楚串口通信为啥设置波特率) 的介绍,希望可以给到大家一些参考,一起来了解下吧!
(资料图片仅供参考)
串行端口的波特率(为了找出为串行通信设置波特率的原因)
串行通信为什么要设置波特率?要知道这个答案,我们先来了解一下什么是波特率:
什么是波特率?波特率以bps为单位-每秒传输的字节数。
波特率表示每秒传输的符号数,是衡量数据传输速率的指标。用单位时间内载波调制状态变化的次数来表示。波特率是指数据信号对载波的调制速率。用单位时间内载波调制状态变化的次数来表示,单位为波特。
串行通信为什么要设置波特率?有两种可靠的说法:
1.根据电、传输介质等的物理特性。,结合串口设备的要求。
为了保证有效的通信,根据电、传输介质等的物理特性。结合串口设备的要求,确定RS232的更大传输速率只能是115,200,然后57,600,28,800,19优优资源网200逐步分为两部分...为了适应这些速率,设计了相应的晶体振荡频率。
2.这是由电信线路的特性决定的。
*** 的带通是300-3千赫。海斯当时启动了调制解调器,所以用的是2400HZ信号,对应的波特率是2400。由于基本频率已经确定,未来采用的所有提高通信速率的方法都是基于2400的倍频,因此形成了“2400”
无论哪种方式,波特率之后都是晶振频率。
单片机串行通信的波特率计算在模式0和模式2下,串行端口波特率是固定的,模式0是Fosc/12。2模式为Fosc/32或Fosc/64,由PCON寄存器的 *** OD位决定。
在模式1和模式3下,波特率是一个变量值,波特率可以由定时器1产生(8052可以由定时器2产生),那么波特率是多少呢?
波特率由定时器1的溢出率决定:
波特率= (2 *** OD/32)*(定时器1溢出速率)
注意:这里2 *** OD中的 *** OD是指数, *** OD是双倍波特率的位,在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).
最后,波特率推导如下:
(2 *** od/32)*(OSC _ FREQ(Hz)/((256-TH1)* 12)).
有了波特率的计算公式,自然可以根据波特率推导出TH1的初始值:
波特率=(2 *** OD/32)*(振荡FREQ(赫兹)/((256-TH1)*12))
32 * 12 *(256-TH1)=(2s mod * OSC _ FREQ(Hz))/波特率
256-TH1=(2 *** OD*OSC_FREQ(Hz))/(波特率*32*12)
TH1=256-(2 *** OD*OSC_FREQ(Hz))/(波特率*32*12)
假设晶振频率为11.0592MHz,波特率为9600, *** OD=0,TH1的初始值应该是多少?根据上面的公式,可以计算出TH1 = 256-11059200/(9600 * 32 * 12)= 0x FD。
波特率与字节的关系1GB=1024MB
1MB=1024KB
1KB=1024B(字节)
我们需要串口每秒接收512字节的数据,串口的波特率是每秒115200位。
波特率115200 = 115200(位/秒)
如果没有校验位,要除以10得到每秒字节数:波特率115200 = 115200(位/秒)= 11520(字节/秒)
除以1024,就是每秒的KB数:波特率115200 = 115200(位/秒)= 11.25(KB/秒),也就是每秒可以接收512字节。
\