串口波特率的计算公式为什么减1
1个回答
关注
展开全部
亲亲,非常荣幸为您解答,串口波特率的计算公式为:波特率 = 时钟频率 / (分频值 x (数据位 + 停止位 + 校验位))其中,分频值是外部时钟和串口时钟之间的分频系数。在计算分频系数时,会用到以下公式:分频系数 = 整数部分(时钟频率 / (波特率 x 16)) - 1其中,16是串口的采样率。为什么要减1呢?是因为UART采样的边沿分为起始位、数据位、校验位(可选)、停止位等,当想传输的数据8bit时,其中包含5个数据位+2个停止位+1个起始位,也就是说传输这8bit数据的总时间是:1/start(起始位)+8/bit(数据位) + 2/stop(停止位)= 11;因此波特率divider= clk/ 要求的波特率,可以表示为波特率=clk/divider=(1/start+5/bit+2/stop)*16;为了避免这种情况出现,故除掉的divider要减去1。
咨询记录 · 回答于2023-04-27
串口波特率的计算公式为什么减1
亲亲,非常荣幸为您解答,串口波特率的计算公式为:波特率 = 时钟频率 / (分频值 x (数据位 + 停止位 + 校验位))其中,分频值是外部时钟和串口时钟之间的分频系数。在计算分频系数时,会用到以下公式:分频系数 = 整数部分(时钟频率 / (波特率 x 16)) - 1其中,16是串口的采样率。为什么要减1呢?是因为UART采样的边沿分为起始位、数据位、校验位(可选)、停止位等,当想传输的数据8bit时,其中包含5个数据位+2个停止位+1个起始位,也就是说传输这8bit数据的总时间是:1/start(起始位)+8/bit(数据位) + 2/stop(停止位)= 11;因此波特率divider= clk/ 要求的波特率,可以表示为波特率=clk/divider=(1/start+5/bit+2/stop)*16;为了避免这种情况出现,故除掉的divider要减去1。
亲亲拓展资料在这里~再进一步拓展该问题,对UART参数和波特率的计算进行说明。UART (Universal asynchronous receiver/transmitter),通用异步收发器,是常见的一种通讯接口。下面将分别介绍UART的参数和波特率的计算。UART的参数:数据位:表示每帧数据的位数。常见的取值有5、6、7和8位。停止位:表示每帧数据结束之后,接收方需要等待多少个周期才能开始接收下一帧数据。通常有1或2个停止位。校验位:用于检验数据传输过程中是否出错。通常有奇偶校验、偶偶校验和无校验三种方式。