STM32-各类总线接口(协议)

串口

什么是串口?

串口是解决什么问题的呢?我们在接触的开发板时,我们需要负责各个硬件的驱动程序,实现好之后再处理应用程序。

那我们如何去调一块开发板呢?当STM32跑操作系统以后,操作系统非常庞大,要输出很多的信息。我们可以知道我们的程序执行到哪了,还可以知道寄存器的状态,类似于这些信息我们都可以获取到。所以串口的重要性就不言而喻。

串口协议

串口分很多的协议,最常见的有RS232RS485,这两个都是串行通信的总线协议。

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中是低位先出

image-20230103212737065

  1. 在发送数据之前,就是空闲状态下,两个设备之间数据线呈现高电平

  2. 之后发出开始信号 ,告知对方要开始发送数据,我们要从空闲位的高电平状态拉低,一个时钟周期,就是起始位

  3. 然后开始发送数据位uart是低位先出

  4. 为了保证数据的准确性,要发一位校验位

    校验有两中方式:奇校验偶校验

    • 奇校验:数据位中1的个数 + 校验位中1的个数 = 奇数个
    • 偶校验:数据位中1的个数 + 校验位中1的个数 = 偶数个
  5. 接着发1~3位的停止位

  6. 最后再回到空闲位

串行通信

串口和并口的区别

  • 串行通信,通信双方只连接一根数据线;
  • 并行通信,通信双方至少连接八根数据线。

并行通信的硬件互联成本高,而且并行通信的多根数据线之间可能会存在电磁干扰,会限制其通信的速率。

并口常见的设备: 数码管 老式打印机 LCD液晶显示屏

串行通信的参数

我们在描述串行通信的时候,通信的速率就是用**`bps 波特率`**来表述的,bit per second 位/秒 我们用的较多的有:115200 … 9600 3400,需要保证通信双方的速率保持一致

uart和usart的区别
其中的 a 代表同步,s 代表异步
同步:需要等待应答,所以使用的非常少
异步:不需要应答,使用的居多

115200 8N1 的含义

  • 8: 一次传输8个位数据
  • N: 没有校验位
  • 1: 一位停止位