通讯协议--硬件模拟和软件模拟

1、先说:为什么 STM32 可以做硬件 I2C / 硬件 SPI

芯片内部专门做了一套硬件外设模块(控制器),不是 CPU 靠软件循环翻转 IO。

  • SPI 外设内部:移位寄存器 + 时钟发生器。只要你写几个寄存器配置好,硬件自动输出 SCK 时钟、自动移位发送 MOSI、采样 MISO。CPU 只要把数据丢进寄存器,然后等完成就行,CPU 不用去每一位操作引脚。
  • I2C 外设内部:同样内置时序电路、起始 / 停止、ACK 应答逻辑。硬件自动生成 SCL 时钟,处理总线握手。

2、单总线(1-Wire,典型 DS18B20)

绝大多数 STM32 没有内置硬件 1-Wire 外设! 所以没有硬件控制器,只能软件模拟

一、I2C 硬件 vs 软件 代码对比(HAL 库 STM32)

(1)硬件 I2C(CubeMX 开启 I2C1,PB6 PB7 复用开漏)

(2)软件模拟 I2C(PB6 PB7 设普通 GPIO 开漏,不开启 I2C 外设)

全部时序手动写,CPU 不停翻转 IO,占用 CPU

二、SPI 硬件 vs 软件模拟 SPI(HAL 库)

SPI 硬件:硬件产生 SCK 时钟、移位收发 MOSI/MISO;CS (片选) 我们用软件 NSS,单独 GPIO 控制

(1)硬件 SPI(CubeMX 开启 SPI1,SCK/MOSI/MISO 复用,CS 是普通 GPIO)

✅重点:HAL_SPI_TransmitReceive底层硬件自动输出 SCK 时钟 ,CPU 不用循环翻转 SCK 引脚,CPU 开销低,就是简历那句话描述的。

(2)软件模拟 SPI(全部引脚设普通 GPIO,不启用 SPI 外设)

CPU 手动翻转 SCK、MOSI,读取 MISO,全程占用 CPU

三、关于DMA的使用

SPI、硬件 I2C:原生支持 DMA(CubeMX 直接勾选 DMA)。

软件模拟 I2C、单总线 (Onewire):CPU 翻转 IO,DMA 无法接管,不能直接 DMA。

四、总结

硬件 I2C/SPI:片内外设硬件负责通信时序,CPU 只需要发起传输,降低 CPU 占用;软件模拟方案,CPU 通过不断翻转 GPIO、延时来模拟通信时序,CPU 占用高,但移植灵活、避开硬件外设 bug。

相关推荐
Zw-awa1 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
新思维软件1 小时前
基于边缘计算与多模态感知的服药依从性系统|X604261
嵌入式硬件·物联网开发
天空'之城12 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
LCG元12 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
染予13 小时前
代码中相关C语言知识点总结
stm32
优信电子13 小时前
STM32 驱动 DHT30 测量环境温湿度(兼容SHT30):从时序解析到完整代码实战
stm32·嵌入式·传感器·sht30·温湿度·环境测量·dht30
小李不想当小白15 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
blue_ice .15 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
深圳市恒锐丰科技杨生15 小时前
EG4318 / EG4319 / EG4320 铅酸电池三段式充电副边管理芯片|屹晶 EGmicro
嵌入式硬件·硬件工程