UART,IIC,SPI通信总线协议基础

UART,IIC,SPI均为STM32系列芯片常用通信协议,现整理三种协议基础知识如下:


文章目录

    • @[toc]
  • 1 UART总线协议
    • 1.1 基础概念
    • 1.2 UART通信概述
    • 1.3 RS232,RS485协议原理与应用
  • 2 IIC总线协议
    • 2.1 IIC总线概述
    • 2.2 IIC总线信号实现
    • 2.3 典型IIC时序
  • 3 SPI总线协议
    • 3.1 SPI总线简介

1 UART总线协议

1.1 基础概念

  1. 并行通信与串行通信
    1. 把数据的多个位一次性发送。
    2. 缺点:总线多容易浪费资源,布线难度大,线间有信号干扰。
    3. 把数据的多个位依次发送。
  2. 单工通信和双工通信
    1. 单工通信:发送器接收器间数据单向传送。
    2. 双工通信:发送器接收器间数据双向传送
      1. 半双工:发送器和接收器不能同时发送数据。
      2. 全双工:发送器和接收器可以同时发送数据。
  3. 同步异步
    通信与收信双方是否有同步时钟判断数据收发。

1.2 UART通信概述

  1. 通信方式
    1. 通用异步收发器(点对点通信),串行,异步通信总线,有两条数据线可实现全双工发送和接收,常用于主机与辅助设备间的通信。
    2. 数据线传递的本质是电信号。
  2. 波特率
    1. 描述UART通信时的通信速度,单位位bps(bit per second)每秒传送bit的数量。
  3. 串口通信过程
    1. 空闲位:
      保持高电平。
    2. 起始位:
      低电平//用于区分空闲位。
    3. 数据位:
      可发5-8位防止累计误差出现,先发低位再发高位。
    4. 校验位:
      奇偶校验//数据里有奇数个1发送0,偶数个1发送1,可有可无。
    5. 停止位:
      高电平,1,1.5或2位
    6. 空闲位:
      保持高电平。
    7. 起始位
  4. 硬件连接
    1. 发送器TXD,接收器RXD交叉接线点对点发送。
  5. UART控制器
    1. 集成在处理器中。
  6. UART的问题:
    1. 串口的电气接口不统一。
    2. UART一般使用处理器电平TTL,不同处理器电平不同,不同处理器不能直接连接。
    3. 没有连接器标准,不同器件连接不方便。
    4. 抗干扰能力差。
    5. 通信距离极短。

1.3 RS232,RS485协议原理与应用

均为电气层面协议,对电气方面进行标准化,但依然依赖于UART协议传输数据。

  1. RS232
    1. RS232协议
      1. 标准:
        规定采用标准连接器,对连接器每个引脚的作用加以规定,还对信号的电平加以规定。
      2. 接口
        最初25口,后IBM将其简化为DB-9 9口连接器,一般只用RXD,TXD,GND三个口。
      3. 信号
        ‘1’的电平为-5V-15V,‘0’的电平为+5+15V,增加抗干扰能力提高传输距离,一般可达15米。
      4. 电平的转换
        外部添加电路,将处理器TTL电平与RS232标准信号互相转换(MAX232芯片)。
    2. RS232的问题
      1. 接口信号电平值高,容易损坏接口电路芯片,需要转换芯片才能与TTL电路连接。
      2. 通信速度较低。
      3. 易产生共模干扰,抗噪声干扰性弱。
      4. 传输距离较短(15m)。
  2. RS485协议
    1. 优势:
      电平低不易损坏芯片,传输距离远(1500m),抗干扰强,允许连接多个收发器具有多站能力,可以建立设备网络。
    2. 信号:
      采用差分信号(两根信号线描述一个‘0’或‘1’)进行数据传输,两线电压差+2V+6V表示‘1’,-2V-6V表示‘0’,可与TTL电平兼容。
    3. 接口:
      1. 两线制总线式拓扑结构,同一线上可同时存在多个节点
      2. 发送和接收不能同时进行,半双工。
    4. 电平转换
      处理器UART控制器信号一般都是TTL信号,还需要再处理器外部添加电路将TTL信号转换为RS485差分信号(MAX485芯片)。

2 IIC总线协议

2.1 IIC总线概述

  1. IIC简介
    1. 串行,半双工总线,主要用于近距离,低速芯片间通信;有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟同步(空闲时为高电平);结构简单成本较低。
    2. IIC是多主机总线,只有主机有权发起结束通信,同时只能有一个主机发起通信,IIC具备检测仲裁功能防止错误,每个IIC上器件都有唯一通信地址(7bit)。
  2. 通信过程
    1. 主机发送起始信号启用总线。
    2. 主机发送1个字节数据,指明通信地址和后续字节传送方向。(0主机-从机,1从机-主机)
    3. 从机发送应答信号回应主机。
    4. 发送器发送一个字节数据。
    5. 接收器发送应答信号回应发送器。
    6. 通信完成主机发送停止信号释放总线。
  3. IIC寻址方式
    1. IIC数据包括地址和真正的数据
    2. 主机发送起始信号后必须发送一个字节的数据,高七位为从机地址,最低位为后续传输方向,主线上所有从机比较自身地址,若相同将自己定为发送器或接收器。

2.2 IIC总线信号实现

  1. IIC通信过程
    1. 起始信号和停止信号
      1. SCL高SDA高变低,起始信号
      2. SCL高SDA低变高,终止信号
      3. 起始信号,终止信号都由主机发出,起始信号产生后总线处于占用状态,终止信号产生后总线处于空闲状态。
    2. 字节传送与应答
      每个字节为8位,先传送最高位后传送最低位,发送器发完1字节数据后接收器必须发送1位应答位作为回应(低电平),即1帧共9位。
    3. 同步信号
      1. SCL低电平期间发送器向数据线上发送一位数据,此时数据线信号允许变化;
      2. SCL高电平期间接收器从数据线上读取一位数据,此时数据线信号不允许变化。

2.3 典型IIC时序

  1. 常用时序
    1. 主机向从机发送数据
      1. 起始信号
      2. 从机地址,传送方向0
      3. 从机应答A。
      4. 主机发送数据,从机应答…。
      5. 停止发送
        1. 主机主动发送停止信号。
        2. 从机不应答,主机发送停止信号。
    2. 从机向主机发送数据
      1. 起始信号。
      2. 从机地址,传送方向1。
      3. 从机应答A。
      4. 从机发送数据,主机应答…。
      5. 停止发送
        1. 主机不应答。
        2. 主机发送停止信号。
    3. 主机先向从机发送数据,从机再向主机发送数据
      1. 起始信号
      2. 从机地址,传送方向0
      3. 从机应答A。
      4. 主机发送数据,从机应答…。
      5. 再次发送起始信号。
      6. 从机地址,传送方向1。
      7. 从机应答A。
      8. 从机发送数据,主机应答…。
      9. 停止发送
        1. 主机不应答。
        2. 主机发送停止信号。

3 SPI总线协议

3.1 SPI总线简介

  1. SPI总线简介
    1. 高速(相对UART,IIC),全双工,同步串行通信总线
    2. SPI采用主从方式工作,一般有一个主设备,一个或多个从设备
    3. SPI需要至少四根线,MISO(主设备输入从设备输出),MOSI(主设备输出从设备输入),SCLK(时钟),CS(片选)
    4. SPI使用引脚较少且布线方便。
  2. 寻址方式
    1. 向对应从设备片选线发送使能信号(高电平或低电平)表示选中该从设备,并向其它从设备发送相反信号表示暂停通信。
  3. 通信过程
    1. 先传送数据高位,后传送数据低位。
    2. 高电平表示逻辑‘1’,低电平表示逻辑‘0’.
    3. 一个字节传送完成无需等待应答即可开始下一字节传送。
    4. 采用同步方式工作,时钟线上升沿或下降沿时发送器向数据线发送数据,接下来的下降沿或上升沿接收器从数据线读取数据,完成一位数据传输,八个时钟周期可以完成一个字节数据传输。
  4. 极性CPOL和相位CPHA
    1. CPOL表示SCLK空闲时的状态
      1. CPOL=0,空闲时SCLK为低电平。
      2. CPOL=1,空闲时SCLK为高电平。
    2. CPHL表示采样时刻
      1. CPHA=0,每个周期的第一个时钟沿采样。
      2. CPHA=1,每个周期的第二个时钟沿采样。
    3. 一般需要对主设备CPOL和CPHA进行配置,保证与从设备工作模式一致,否则无法通信。
  5. IIC和SPI异同
    1. 相同点
      1. 都是串行,同步方式。
      2. 都采用TTL电平,传输距离和应用场景类似。
      3. 都采用主从模式工作。
    2. 不同点
      1. IIC为半双工,SPI为全双工
      2. IIC有应答机制,SPI无应答机制
      3. IIC通过向总线广播从机地址寻址,SPI通过向对应从机发送使能信号寻址。
      4. IIC时钟极性和时钟相位固定,SPI时钟极性和时钟相位可调。

你可能感兴趣的:(STM32入门,单片机,stm32,嵌入式硬件)