关于串口波特率(为了搞清楚串口通信为啥设置波特率) 的知识大家了解吗?以下就是小编整理的关于串口波特率(为了搞清楚串口通信为啥设置波特率) 的介绍,希望可以给到大家一些参考,一起来了解下吧!


(资料图片仅供参考)

串行端口的波特率(为了找出为串行通信设置波特率的原因)

串行通信为什么要设置波特率?要知道这个答案,我们先来了解一下什么是波特率:

什么是波特率?

波特率以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字节。

\

推荐内容

热点新闻