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

什么是波特率,波特率怎么计算[通俗易懂]✍什么是波特率,波特率怎么计算➹概述:  ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。  ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。  ☆说明:系统时钟50M,波特率115200。  基础知识:因果系统时钟-50M时钟周期150∗106{{\rm{1}}\over{{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}50∗1061​假设1个时钟周期可以计数1次(其实FPGA就是这样)50M时钟1s计数5000

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

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

更多硬件知识,请持续关注公众号【数字硬鉴】

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

系统时钟(为串口提供时钟的时钟频率)-50M 时钟周期 1 50 ∗ 1 0 6 {
{\rm{1}} \over {
{\rm{50*1}}{
{\rm{0}}^{\rm{6}}}}}
501061
1个时钟周期可以计数1次 50M时钟1s计数50 000 000个
系统时钟-50M 计1个数需要 1 50 ∗ 1 0 6 {
{\rm{1}} \over {
{\rm{50*1}}{
{\rm{0}}^{\rm{6}}}}}
501061
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
(50106/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.net/124695.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月20日 上午9:40
下一篇 2022年4月20日 上午10:00


相关推荐

  • 数据结构 || 二维数组按行存储和按列存储[通俗易懂]

    数据结构 || 二维数组按行存储和按列存储[通俗易懂]问题描述:设有数组A[n,m],数组的每个元素长度为3字节,n的值为1~8,m的值为1~10,数组从内存收地址BA开始顺序存放,请分别用列存储方式和行存储方式求A[5,8]的存储首地址为多少。解题说明:(1)为什么要引入以列序为主序和以行序为主序的存储方式?因为一般情况下存储单元是单一的存储结构,而数组可能是多维的结构,则用一维数组存储数组的数据元素就存…

    2022年7月16日
    17
  • pycharm不联网能运行吗_pycharm连接调试器失败

    pycharm不联网能运行吗_pycharm连接调试器失败第一步:查看你的计算机是否安装了严密的防火墙,当你开始运行编写的网络程序时他都会发出警告并且禁止你的程序连接网络你要对防火墙进行配置,让他允许你的程序或者直接关闭防火墙(慎重考虑)如下图直接关闭防火墙或者对防火墙进行设置(只要选中这两个勾,在你执行的时候会提示你是否允许XXX连接网络)第二步:因为有些代码里面可能需要根据主机名称来去本地的DNS里找对应的IP地址,由于本地的DN…

    2022年8月27日
    8
  • python字体怎么放大_Python字体大小

    python字体怎么放大_Python字体大小Pycharm中的代码字体太小怎么处理?Pycharm界面不错,就是字体小了点,如果用户看着不舒服,是可以修改的,毕竟小小个的字体看起来好费劲不说,还容易恍惚,Pycharm设置字体大小的方法可以看看下文步骤。Pycharm中的代码字体太小怎么处理?1、如图,Pycharm顶部菜单栏的字体还是太小了,长时间观看对眼睛不好。2、接着我们点击“File”菜单,开始把菜单和代码的字体都改大。3、点击“s…

    2022年8月28日
    5
  • C++和Java哪个比较好入门?初学者该如何选择?

    C++和Java哪个比较好入门?初学者该如何选择?选择好的方向比努力更重要,对于初学编程的人来说选择一门合适的编程语言关系到自己以后的职业发展。c++和Java那个更适合作为入门语言?给大家简单科普一下~C++语言它是正宗的C语言的嫡系,由C语言发展而来。C++支持多种编程范式–面向对象编程、泛型编程和过程化编程,支持类:类、封装、重载等特性。C++语言的主要特点表现在两个方面:尽量兼容C 支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统.

    2022年7月9日
    23
  • python写入txt文件中文乱码_python中怎么输入文件

    python写入txt文件中文乱码_python中怎么输入文件python写入txt文件出现省略号原因是print不完全,添加代码设置np.set_printoptions(threshold=np.nan)如果报错ValueError:thresholdmustbenumericandnon-NAN,trysys.maxsizeforuntruncatedrepresentation只需要importsys设置np.set_printoptions(threshold=sys.maxsize)将阈值设置在一个较大的数值就可以了.

    2026年4月15日
    6
  • springmvc之@ResponseBody 和 @RequestBody 注解的区别

    springmvc之@ResponseBody 和 @RequestBody 注解的区别springmvc之@ResponseBody 和 @RequestBody 注解的区别

    2022年4月24日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号