在计算机科学中,许多复杂的问题可以通过分层的手段来简化,而STM32标准库就是在寄存器和用户代码之间的软件层
对于一些常用的通讯方式,我们也可以用分层的方式来理解,即,将其简单地划分为物理层和逻辑层
物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输
协议层主要规定通讯逻辑,统一收发双方的数据打包、解包等标准
物理层
关于电平的标准,这里就不多说了,232电平是负逻辑的,也就是逻辑“1”的电平反而比较低
RS232的信号线接口就是常说的DB9接口
DB9接口是分公母的,详见下图
RX、TX交叉相连
一般只使用 RXD、TXD 以及 GND 三条信号线,直接传输数据信号
串口数据包结构
串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口
由启始位、主体数据、校验位以及停止位组成
由启始位、主体数据、校验位以及停止位组成
串口数据包的结构如下图所示:
波特率
异步通讯中由于没有时钟信号,所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元
数据包的开始与停止标志
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 “0”的数据位表示,而数据包的停止信号可由 0.5、1、1.5或 2 个逻辑“1” 的数据位表示,只要双方约定一致即可
有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7或 8位长
数据校验
在有效数据之后,有一个可选的数据校验位。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)
USART