1、概述
最近在调试两种芯片的UART数据交互功能,发现误码率过高,这里分析一下码率的来源。
2、基本概念
- 波特率
波特(Baud)即调制速率,指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。波特率表示单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,波特率即指一个单位时间内传输符号的个数。单位符号:Bd(Baud)。 - 比特率
简单的理解,比特率是指形成一个波特率所需要的晶振次数。在全志的平台上,是固定的16倍关系,即115200Bd的波特率,理论上需要晶振提供 115200 * 16 = 1843200 次晶振(相位)。 - 分频器
芯片上提供的晶振是固定的(例如 24M)时钟频率,但各个单元需要的时钟频率是不一样的,所以需要一个叫分频器的模块来完成这个功能。但硬件上为了节省成本,一般会做成一个固定系数的除法单元,例如某分频器支持 2倍、4倍、8倍分频,这意味着经过分频器出来的时钟频率只能是 2/4/8的倍数。
3、误码原因
- 原因一
即便是同一种芯片、同一种晶振提供的时间钟频率在具体的一个实物上是存在