问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32通信协议入门:USART/UART、SPI与IIC详解

创作时间:
作者:
@小白创作中心

STM32通信协议入门:USART/UART、SPI与IIC详解

引用
CSDN
1.
https://blog.csdn.net/m0_73677866/article/details/132533837

在STM32开发过程中,掌握各种通信协议是必不可少的技能。本文将详细介绍三种常见的串行通信协议:USART/UART、SPI和IIC,帮助初学者快速入门。

基本概念

并行通信与串行通信

  • 并行通信:多个数据位同时传输,常见的有8线、16线、32线、64线等方式。虽然传输速率高,但硬件成本也相对较高。
  • 串行通信:数据位逐个发送,使用较少的数据线,硬件成本较低。生活中常用的通信方式。

同步传输与异步传输

  • 同步通信:发送端提供时钟信号,接收端根据时钟信号接收数据。如I2C、SPI等。
  • 异步通信:没有时钟信号,收发双方各自使用独立的时钟。通常用于低速传输,如UART。

全双工、半双工与单工

  • 全双工:可以同时进行数据的发送和接收。
  • 半双工:设备可以收发数据,但不能同时进行。
  • 单工:设备只能发送或接收数据,不能同时进行。

USART通信

USART(通用同步异步收发传输器)与UART(通用异步收发传输器)的主要区别在于USART支持同步通信,而UART则不支持。

物理层

USART通信通常需要三根线:TXD(发送数据)、RXD(接收数据)和SCLK(同步通信时使用)。STM32使用TTL电平标准,常用于USB-TTL连接电脑测试或连接串口模块。

协议层

  • 数据格式:包括同步和异步两种方式。
  • 波特率:异步通信中用于约定每个码元的长度,常见值有4800、9600、115200等。
  • 有效数据:数据包中的主体内容,长度通常为5、6、7或8位。
  • 数据校验:可选的校验位,用于检测传输错误,包括奇校验、偶校验、0校验和1校验。

SPI通信

SPI(串行外设接口)是一种高速的全双工通信协议,通常使用4根线:SCK(时钟线)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)和CS(片选线)。

基本结构

SPI支持多从机扩展,但实际应用中受限于IO口数量和负载电容。为了解决IO口紧张的问题,可以使用移位寄存器来控制CS片选线。

时序

SPI时序分为四种模式,由时钟极性和相位决定:

  • 时钟极性(CPOL):0表示空闲状态为低电平,1表示空闲状态为高电平。
  • 时钟相位(CPHA):0表示上升沿采样,1表示下降沿采样。

IIC总线通信

IIC(集成电路互连总线)是一种两线制的串行通信协议,使用SCL(时钟线)和SDA(数据线)两根信号线。

基本结构

IIC总线支持多设备挂载,通过地址区分设备。每个设备都有一个唯一的地址,总线结构如下图所示:

信号

IIC总线在传送数据过程中有三种类型的信号:

  • 开始信号:SCL为高电平时,SDA由高变低。
  • 结束信号:SCL为高电平时,SDA由低变高。
  • 应答信号:主机每发送一个字节后,从机反馈一个应答信号。

数据有效性

IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;时钟线为低电平时,数据线上的电平允许变化。

数据格式

传输的数据中包含设备地址、数据和应答位。设备地址由主机发出,每个数据字节后都有一个应答位。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号