You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rust_basic_code/md_file/波特率.md

4.0 KiB

波特率

基础知识

  1. 串口传输的波特率即为每秒钟传输二进制的位数。
  2. 系统时钟50M(为串口提供时钟的时钟频率),波特率115200。 (不是很理解,定义?
系统时钟(为串口提供时钟的时钟频率)-50M 时钟周期 1/(50*10^6)
一个时钟周期可以计数1次 50M时钟1s计数50,000,000个
系统时钟-50M 计1个数需要1/(50*10^6)S
波特率-115200 1s传输二进制的位数115200bit
波特率-115200 传输1bit需要1/115200s=8.68us
50M系统时钟----波特率为115200 传输1bit需要计数(50*10^6)/115200 = 434
以上重点是推导出50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。

串口传输格式

常用的串口传输格式:1bit起始位+8bit数据位+1bit停止位(无奇偶校验位):

image-20230227155411200

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

波特率

图中描述了1Byte数据传输的示意图:

image-20230227160244608

什么时候去采样串口线上的数据呢?

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

image-20230227161319540

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

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

收发波特率一致:2021052511091847

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

20210525110925941

原文地址

串口

串口,原名为串行接口(Serial Interface)或串列埠、序列埠,别名叫COM口(串行通讯端口cluster communi port)。PC机一般有两个串行口COM1和COM2。串行口与并行口区别在于它的数据和控制信息是一位接一位地传送出去的。传送速度慢,但传送距离比并行口长只要进行串行通讯的应该都属于串口。