【本文为百问网&韦东山【物联网智能家居实战训练营】学习笔记系列】
引言
串口是嵌入式中非常重要的一个外设。通常将串口作为调试接口,将开发板的调试信息打印到电脑的串口助手工具,可极大方便调试工作。
1 关于串口
1.1 串口的相关理论知识
串行接口 (Serial Interface)简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。
一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
串行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
常见的串口包括TTL、RS232、RS422、RS485,简单的说,就是为了适应不同的环境条件,使用了不同的电平标准。
图1 不同通信电平应用的场景
表1 是几种通信接口标准总结。从TTL到RS232再到RS485,可以发现为了加大传输距离,依次尝试了增加电压、差分传输等方式。
表1常见的串行通信接口标准
以TTL电平的接口为例讲解串口怎么传输数据,对于RS232/RS422/RS485等接口,仅仅是把TTL电平转换为不同的电平值,或者转换为差分信号。 TTL接口的串口,硬件连接如图 2 所示。
图2 TTL 电平的串口硬件连接示意图
下面以字符“A”的发送为例,讲解如何采用串口发送一字节数据。“A”的ASCII值是0x41,二进制就是01000001,把这8位数据从一方发送给另一方的工作流程如下:
- 双方约定好波特率、数据格式(数据位个数、停止位个数、是否使用校验位、奇校验还是偶校验), 假设数据位是8,停止位是1,校验位是1;
- 初始电平为逻辑1;
- 发送方输出逻辑0,并保持1位的时间;
- 接收方检测到逻辑0,就知道对方准备发送数据了;
- 发送方根据数据的bit 0设置引脚电平,并保持1位的时间;接收方读取引脚电平,得到bit 0;
- 发送方根据数据的bit 1设置引脚电平,并保持1位的时间;接收方读取引脚电平,得到bit 1;
- 以此类推,发出8位数据;
- 发送方计算出校验值,设置引脚,并保持1位的时间;接收方读取引脚电平,得到校验值;注意, 此步骤可省略;
- 发送方输出逻辑1,并保持1位的时间