九、串口通信原理介绍
1.1.串口基础知识
1.1.1.串口介绍
串口是指外设和处理器之间通过数据信号线、地线和控制线等,按位进行传输数据的一种通讯方式。尽管传输速度比并行传输低。但串口可以在使用一根线发送数据的同时用另一根线接收数据。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验位,这些参数在两个通信端口之间必须一致。
1.1.2.串口通信参数介绍
- 波特率: 衡量通信速度的参数,它表示每秒钟传送的 bit 的个数。
- 数据位: 衡量通信中实际数据位的参数,表示一个信息包里包含的数据位的个数。
- 停止位: 用于表示单个信息包的最后位,典型值为 1、1.5 和 2 位。由于数据是在传输线上传输的,每个设备都有自己的时钟,很有可能在通信过程中出现不同步,停止位不仅仅表示传输的结束,还能提供校正时钟同步的机会。停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率也越慢。
- 奇偶检验位: 表示一种简单的检查错误的方式。
关于更为详细的介绍请搜索百度。
1.1.3.串口工作模式
串口可以工作在单工、半双工和全双工模式下。
- 单工:在通信的任意时刻,信息只能由 A 传到 B。
- 半双工:在通信的任意时刻,信息即可由 A 传到 B,又能由 B 传到 A,但同时只能有一个方向上的传输存在。
- 全双工:在通信的任意时刻,通信线路上存在 A 到 B 和 B 到 A 的双向信号传输。
1.1.4.串口通信协议
串口在进行通信的时候会按照数据包的形式进行发送,帧格式如图 1-4-1 所示。
串口通信是一位一位地传输,每传输一个字节总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由 8 位数据位组成,如果开启了校验位,则最后一位数据位是校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
1.2.串口接口原理图
在开发板上默认使用的串口是串口 1,有两根数据线,也就是 USART1_TX 和 USART1_RX。串口引脚和下载引脚连接在同一个端子上,插上 DAPLink 就可以进行下载和串口调试。关于串口原理图如图 2-1-1 所示。
1.3.串口驱动流程
拿到开发板,把 DAPLink 连接到开发板的端子上,打开串口调试助手(在资料包/02 开发工具/串口调试工具/sscom5.13.1),然后会检测到一个串口,如下图所示。编写代码,先要配置串口使能,配置波特率、停止位、校验位等参数。然后调用串口发送函数即可发送数据。如使用重定向还需要编写重定向函数,使用 printf 即可打印输出。下一章会详细介绍如何配置串口。