STM32-各类总线接口
STM32-各类总线接口(协议)
串口
什么是串口?
串口是解决什么问题的呢?我们在接触的开发板时,我们需要负责各个硬件的驱动程序,实现好之后再处理应用程序。
那我们如何去调一块开发板呢?当STM32跑操作系统以后,操作系统非常庞大,要输出很多的信息。我们可以知道我们的程序执行到哪了,还可以知道寄存器的状态,类似于这些信息我们都可以获取到。所以串口的重要性就不言而喻。
串口协议
串口分很多的协议,最常见的有RS232
和RS485
,这两个都是串行通信的总线协议。
RS232
什么是电气特性?
我们的开发板上需要跑应用,开发板的执行状态我们需要知道,开发板和PC机通过一条数据线分别连到各自的串口上。数据线上可以放高电平和低电平,也就是只能放0或1。那什么是0什么是1呢?这个就是电气特性。
RS232
的电气特性 逻辑0:+3V ~ +15V,逻辑1:-15V ~ -3V,传输距离小于10m
RS232
是我们用的最多的,之后学习A53会有一条RS232
的串口线
RS485
RS485
是工业级别的串口,传输距离大于1000m,在工控领域用的居多。
RS485
采用的是差分信号,差分信号是两根线之间的电势差,电压较小。电气特性 逻辑0:小于0.8V,逻辑1:大于2.4V,传输距离小于10m
UART
通用异步收发器
UART
主要特性
- 全双工的异步通信
- 分数波特率(bps)发生器系统
- 可配置的停止位-支持1或2个停止位
- 单线半双工通信
串行接口的简介
串行接口简称串口,也就是com
口,所谓串口就是数据一位一位进行传输的。通信双方只连接一根数据线,通信方式简单。
串口的工作模式
单工:任何时候, 数据只能朝一个方向进行传输
半双工:数据可以朝两个方向进行传输, 但是任何一个时刻只能朝一个方向
全双工:数据可以同时朝两个方向进行传输
uart
的时序
两个设备通过串口进行数据传输时,传输的是二进制的数据。因为两个设备只通过一条线进行连接,当进行数据传输时就要确定好数据传输的规则:每次传输几位、什么时候开始传输、什么时候终止传输、传输的速率、不传输数据是数据线上电平的高低都要进 行确定。
传输数据时,我们就要考虑高位先出还是低位先出的问题了。在uart
中是低位先出
在发送数据之前,就是空闲状态下,两个设备之间数据线呈现高电平
之后发出开始信号 ,告知对方要开始发送数据,我们要从空闲位的高电平状态拉低,一个时钟周期,就是起始位。
然后开始发送数据位,
uart
是低位先出为了保证数据的准确性,要发一位校验位
校验有两中方式:奇校验和偶校验
- 奇校验:数据位中1的个数 + 校验位中1的个数 = 奇数个
- 偶校验:数据位中1的个数 + 校验位中1的个数 = 偶数个
接着发1~3位的停止位
最后再回到空闲位
串行通信
串口和并口的区别
串行通信 ,通信双方只连接一根数据线;并行通信 ,通信双方至少连接八根数据线。
并行通信的硬件互联成本高,而且并行通信的多根数据线之间可能会存在电磁干扰,会限制其通信的速率。
并口常见的设备: 数码管 老式打印机 LCD液晶显示屏
串行通信的参数
我们在描述串行通信的时候,通信的速率就是用bit per second 位/秒
我们用的较多的有:115200 … 9600 3400,需要保证通信双方的速率保持一致。
uart和usart的区别
其中的 a 代表同步,s 代表异步
同步:需要等待应答,所以使用的非常少
异步:不需要应答,使用的居多
115200 8N1
的含义
8
: 一次传输8个位数据N
: 没有校验位1
: 一位停止位