✍ 什么是波特率,波特率怎么计算➹
概述:
☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。
☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。
☆说明:系统时钟50M,波特率115200。
基础知识:
因 | 果 |
---|---|
系统时钟-50M | 时钟周期50∗1061 |
假设1个时钟周期可以计数1次(其实FPGA就是这样) | 50M时钟1s计数50 000 000个 |
系统时钟-50M | 计1个数需要50∗1061s |
波特率-115200 | 1s传输二进制的位数115200bit |
波特率-115200 | 传输1bit需要 1/115200s=8.68us |
50M系统时钟------波特率为115200 | 传输1bit需要计数(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数据的采样点,采样点处提取数据为1010_1010(0xAA)。
★★★至此,从下往上再看一遍,就明白了我们所熟悉的波特率(115200/9600/…)怎么来的。
★★★如有错误,欢迎指导。