对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。
物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。
协议层主要规定通讯逻辑,统一收发双方的数据打包、 解包标准。
其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。
在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。
编号 | 引脚 | 定义 |
---|---|---|
1 | DCD | 数据载波检测 |
2 | RXD | 数据接收 |
3 | TXD | 数据发送 |
4 | DTR | 数据终端准备好 |
5 | GND | 信号地 |
6 | DSR | 数据设备准备好 |
7 | RTS | 请求发送 |
8 | CTS | 清除发送 |
9 | RI | 振铃提示 |
在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号,而 RTS、CTS、DSR、DTR 及 DCD 信号都被裁剪掉了。
波特率
异步通讯中由于没有时钟信号 (如前面讲解的 DB9 接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元,常见的波特率为 4800、9600、 115200 等。
起始位与停止位
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的 数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定 一致即可。
有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度 常被约定为 5、6、7 或 8 位长。
数据校验
在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。
校验方法有奇校验 (odd)、偶校验 (even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)。
USART双向通信需要至少两个引脚:接收数据输入(RX)和发送数据输出(TX)。
RX (Receive Data Input)
RX是串行数据输入。数据恢复采用过采样技术区分有效的传入数据和噪声。
TX (Transmit Data Output)
当发射器被禁用时,输出引脚返回到它的I/O端口配置。
当发射器是启用的,没有数据需要传输,TX引脚是高电平。在单线和智能卡模式下,该I/O用于传输和接收数据。
CTS和RTS引脚在USART RS232硬件流控制模式中使用。
CTS (Clear To Send)
如果使能RS232硬件流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚。
如果为低电平,表示可以发送数据;
如果为高电平则在发送完当前数据帧之后停止发送。
该引脚只适用于硬件流控制。
RTS (Request T o Send)
如果使能RS232硬件流控制,当USART接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高电平。
该引脚只适用于硬件流控制。
DE (Driver Enable)
该信号激活外部收发器的传输模式。DE和RTS共用同一个引脚。
CK
该引脚在同步主模式和智能卡模式下充当时钟输出;作为时钟输入是同步从模式。
NSS
该引脚在同步从模式下充当从选择输入。
传输字长(world length)通过USART_CR1寄存器的12位和28位:M0和M1控制。
An Idle character is interpreted as an entire frame of “1”s (the number of “1”s includes the
number of stop bits).
A Break character is interpreted on receiving “0”s for a frame period. At the end of the
break frame, the transmitter inserts 2 stop bits.
根据M位的状态,发射机可以发送7位或8位或9位的数据字。
必须设置发送使能位(TE)才能激活发送功能。传输移位寄存器中的数据输出到TX引脚上,而相应的时钟脉冲输出到SCLK引脚上。
在USART传输过程中,数据首先移出TX引脚上的最低有效位(默认配置)。在这种模式下,USART_TDR寄存器由内部总线和传输移位寄存器之间的缓冲区(TDR)组成。
在写入要传输到USART_TDR的数据之前,必须设置TE位。在数据传输过程中不能复位TE位。TE位使能时会发送一个空闲帧(idle frame)。
当FIFO模式未使能时,
写入传输数据寄存器总是清除TXE位。TXE标志由硬件设置。
——数据已经从USART_TDR寄存器移动到移位寄存器,数据传输已经开始;
——USART_TDR寄存器为空;
——下一个数据可以写入USART_TDR寄存器,而不覆盖前一个数据。
如果设置了TXEIE位,该标志将产生一个中断。
当传输正在进行时,对USART_TDR寄存器的写指令将数据存储在TDR缓冲区中。然后将其复制到当前传输末尾的移位寄存器中。
当没有传输正在进行时,对USART_TDR寄存器的写指令将数据放在移位寄存器中,数据传输开始,并设置TXE位。
在将最后的数据写入USART_TDR寄存器后,必须等待TC设置好后才能禁用USART或导致微控制器进入低功耗模式(参见图571:传输时的TC/TXE行为)。
接收机和发射机(Rx和Tx)的波特率都设置为USART_BRR寄存器中编程的值。
寄存器 | 名称 | 作用 |
USART_CR1 | PCE | 使能奇偶校验控制 |
USART_CR1 | PS | 设置奇校验或者偶校验 |
接收时,如果奇偶校验失败,则在USART_ISR寄存器中设置PE标志,如果在USART_CR1寄存器中设置PEIE,则产生中断。通过软件向USART_ICR寄存器中的PECF写入1来清除PE标志。
如果在USART_CR1中设置了PCE位,那么写入数据寄存器的数据的MSB位将被传输,但是被奇偶位更改(如果选择偶偶校验位则为偶数个“1”(PS=0),如果选择奇偶校验位则为奇数个“1”(PS=1))。