UART背景知识简介
UART全称为Universal Asynchronous Receiver-Transmitter(通用异步接收-发射器)。嵌入式中说的串口,一般就是指UART口,此说法虽然不是特别严谨精确,但算是常见的习惯说法。由于嵌入式系统往往没有配备显示屏,因此常用的UART口连接主机PC的COM口(或者将UART转换为USB后连接主机PC的USB口)进行调试,这样便可以将嵌入式系统中的printf函数重定向打印至主机的显示屏。
在传输的过程中,UART发送端将字节数据以串行的方式逐个比特地发送出去,UART接收端逐个比特地接收数据,然后将其重新组织为字节数据。常见的传输格式如图所示,其要点如下。
- 在空闲时,UART输出保持高电平。之所以为高电平,是由历史原因造成的,早期的电信传输可以用高电平来表征线路并没有被破坏掉(如果是低电平,则无法判别)
- 在发送1字节之前,应该先发送一个低电平表示起始位(Start bit)。
- 在发送起始位之后,通常以低位先发送的方式逐个比特地传输玩一整个字节数据位(Data bit)。当然,也有某些UART设备会以高位先发送的方式进行传输。
- 传输完字节之后,可选地会传输一位或多位奇偶校验位(Parity Bit),本设计中UART不带有校验位,因此图中没有给出。
- 最后传输的是以高电平表征的停止位(Stop bit)。
衡量UART传输速度的主要标准是波特率(Baud Rate),需将其与比特率(Bit Rate)加以区分,其要点如下。- 在信息传输通道中,携带数据信息的信号单元叫作码元,每秒通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。
- 每秒通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。
- 波特率与比特率的关系是“比特率 = 波特率 * 单个调制状态对应的二进制位数”。以上图为例,波特率计算是指在单位时间内包含了起始位和停止位在内的所有码元的传输速率,而比特率计算仅为单位时间内有效的数据位的传输速率。