前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >什么是波特率,波特率怎么计算[通俗易懂]

什么是波特率,波特率怎么计算[通俗易懂]

作者头像
全栈程序员站长
发布2022-08-03 13:59:41
发布2022-08-03 13:59:41
2.2K0
举报

大家好,又见面了,我是你们的朋友全栈君。

✍ 什么是波特率,波特率怎么计算➹

概述:   ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。   ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。   ☆说明:系统时钟50M(为串口提供时钟的时钟频率),波特率115200。 基础知识:

系统时钟(为串口提供时钟的时钟频率)-50M

时钟周期 1 50 ∗ 1 0 6 { {\rm{1}} \over { {\rm{50*1}}{ {\rm{0}}^{\rm{6}}}}} 50∗1061​

1个时钟周期可以计数1次

50M时钟1s计数50 000 000个

系统时钟-50M

计1个数需要 1 50 ∗ 1 0 6 { {\rm{1}} \over { {\rm{50*1}}{ {\rm{0}}^{\rm{6}}}}} 50∗1061​s

波特率-115200

1s传输二进制的位数115200bit

波特率-115200

传输1bit需要 1/115200s=8.68us

50M系统时钟——波特率为115200

传输1bit需要计数 ( 50 ∗ 1 0 6 / 115200 ) = 434 ({\rm{50*1}}{ {\rm{0}}^{\rm{6}}}/{\rm{115200}}) = 434 (50∗106/115200)=434

以上重点是推导出50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。

串口传输格式 ●我们通常用的串口传输格式为:1bit起始位+8bit数据位+1bit停止位(无奇偶校验位),如下图所示:

所以传输1Byte数据串口需要传输10bit数据。上面计算得传输1Bit需要的时间为8.68us,则传输1Byte需要时间为8.68*10=86.8us。

波特率   由基础知识知50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。那么1Byte(串口传输格式为:1bit起始位+8bit数据位+1bit停止位)是不是循环计数10次434就可以传输完毕。 直接上图:图中描述了1Byte数据传输的示意图,重点都在图里!!!。

✍什么时候去采样串口线上的数据呢?   ★观察上图,Buad_Flag信号(通道2)表示了传输1Bit传输的间隔,每遇到1个Buad_Flag=1的信号,数据线上切换1次数据,所以两个Buad_Flag=1之间的数据是稳定的数据,根据抽样定理是不是应该在两个Buad_Flag=1信号的中间去采样数据呢,其实就是在1bit数据持续期间的中间点采样,才能得到最稳定的数据。见下图,重点都在图里!!!

  ★图中序号①-⑩分别为10bit数据的采样点,采样点处提取数据为0101_0101(0x55),低位在前。

★★★至此,从下往上再看一遍,就明白了我们所熟悉的波特率(115200/9600/…)怎么来的。 ☞然后再想想为什么51单片机会有一个定时器专门服务于串口。 ☞再想想为什么9600波特率和115200波特率不能对接了,原理很简单我这边2秒发一次数据,你那边1秒接一次数据,怎么能成功接收呢。

收发波特率一致:

收发波特率不一致,导致RX端不能正常接收:

★★★如有错误,欢迎指导。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124695.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✍ 什么是波特率,波特率怎么计算➹
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档