为了搞清楚串口通信为啥设置波特率 串口波特率
![为了搞清楚串口通信为啥设置波特率 串口波特率](http://img.jiangsulong.com/220816/1001431W1-0.jpg)
文章插图
串行端口的波特率(为了找出为串行通信设置波特率的原因)
串行通信为什么要设置波特率?要知道这个答案,我们先来了解一下什么是波特率:
什么是波特率?波特率以bps为单位-每秒传输的字节数 。
波特率表示每秒传输的符号数,是衡量数据传输速率的指标 。用单位时间内载波调制状态变化的次数来表示 。波特率是指数据信号对载波的调制速率 。用单位时间内载波调制状态变化的次数来表示,单位为波特(信息资源网Ba信息资源网ud) 。
串行通信为什么要设置波特率?有两种可靠的说法:
1.根据电、传输介质等的物理特性 。,结合串口设备的要求 。
为了保证有效的通信,根据电、传输介质等的物理特性 。结合串口设备的要求,确定了RS232的最大传输速率只能是115200,然后57600,28800,19200分两部分逐步实现...为了适应这些速率,设计了相应的晶体振荡器频率 。
2.这是由电信线路的特性决定的 。
电话的带通是300-3千赫 。海斯当时启动了调制解调器,所以用的是2400HZ信号,对应的波特率是2400 。由于基本频率已经确定,未来采用的所有提高通信速率的方法都是基于2400的倍频,因此形成了“2400”
【为了搞清楚串口通信为啥设置波特率 串口波特率】无论哪种方式,波特率之后都是晶振频率 。
单片机串行通信的波特率计算在模式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).
最后,波特率推导如下:
(2 smod/32)*(OSC _ FREQ(Hz)/((256-TH1)* 12)).
有了波特率的计算公式,自然可以根据波特率推导出TH1的初始值:
波特率=(2SMOD/32)*(振荡FREQ(赫兹)/((256-TH1)*12))
32 * 12 *(256-TH1)=(2s mod * OSC _ FREQ(Hz))/波特率
256-TH1=(2SMOD*OSC_FREQ(Hz))/(波特率*32*12)
TH1=256-(2SMOD*OSC_FREQ(Hz))/(波特率*32*12)
假设晶振频率为11.0592MHz,波特率为9600,SMOD=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字节 。
推荐阅读
- 夏天蒸菜的做法大全
- 运动过度的症状有什么
- 为了便捷,却没想到泄露了隐私!赶紧检查微信“授权功能”
- 最新腹肌练习要领
- 机器人|煎饼果子机器人你见过吗?3分钟搞定 还会摊鸡蛋
- 月子羊肉汤的做法
- 极有深度的十一句搞笑名句 搞笑名言名句大全
- 翡翠手镯|翡翠玉雕中的巧色,分色,俏色你分清楚了吗
- 爆笑经典小学搞笑冷笑话 小学生笑话大全2013
- 交通|新国标红绿灯不会左右转?一句口诀搞定