九、串口通信原理介绍
1. 串口基础知识
1.1 串口介绍
串口是指外设和处理器之间通过数据信号线、地线和控制线等,按位进行传输数据的一种通讯方式。尽管传输速度比并行传输低。但串口可以在使用一根线发送数据的同时用另一根线接收数据。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验位,这些参数在两个通信端口之间必须一致。
1.2 串口通信参数介绍
- 波特率: 衡量通信速度的参数,它表示每秒钟传送的bit的个数。
- 数据位: 衡量通信中实际数据位的参数,表示一个信息包里包含的数据位的个数。
- 停止位: 用于表示单个信息包的最后位,典型值为1、1.5和2位。由于数据是在传输线上传输的,每个设备都有自己的时钟,很有可能在通信过程中出现不同步,停止位不仅仅表示传输的结束,还能提供校正时钟同步的机会。停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率也越慢。
- 奇偶检验位: 表示一种简单的检查错误的方式。
- 硬件数据流控:通过使用专用的控制线(通常称为RTS和CTS来协调发送方和接收方之间的数据传输过程,以防止数据丢失或溢出。
关于更为详细的介绍请搜索百度。
1.3 串口工作模式
串口可以工作在异步全双工 、同步半双工 和单线半双工模式下。
- 异步全双工:
- 异步:指的是通信双方不需要共享一个共同的时钟信号。数据传输的起始和结束通过特定的帧格式、起始位、停止位或者特定的同步字符来标识,允许发送和接收端各自独立工作,不必严格同步它们的时钟。这使得异步通信更加灵活,但可能引入一些开销,如额外的同步信息。
- 全双工:表示数据可以同时在两个方向上传输。也就是说,通信双方都能同时发送和接收数据,如同有两个独立的通道,互不影响,提高了通信效率,适合于需要高速、双向实时通信的场景,如以太网通信。
- 同步半双工:
- 同步:在同步通信中,发送和接收设备之间需要一个共同的时钟信号,用以同步数据的传输节奏。这通常通过一个时钟引脚或在数据流中嵌入同步位来实现。同步通信可以提供更高的数据传输速率,因为它减少了用于数据包同步的开销。
- 半双工:半双工模式允许数据在两个方向上传输,但不能同时进行。通信双方需要轮流进行发送和接收。例如,经典的RS-485总线在半双工模式下,一次只能进行发送或接收操作,需要通过控制线切换方向。这种方式适用于对实时性要求不高、双向通信但不需要同时收发的场合。
- 单线半双工:
- 单线半双工:这种模式通常特指使用一根信号线既用于发送也用于接收数据,但不能同时进行,属于半双工通信的一种特殊形式。
1.4 串口通信协议
串口在进行通信的时候会按照数据包的形式进行发送,帧格式如下图。
串口通信是一位一位地传输,每传输一个字节总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由8位数据位组成,如果开启了校验位,则最后一位数据位是校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
2. 串口1接线图
我们这里使用PA8(TX引脚)和PA9(RX引脚)的GPIO复用功能