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

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。

相关推荐
吠品3 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
Chery11404 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
小李不想当小白7 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
LCG米7 小时前
STM32驱动W5500以太网模块实测:TCP吞吐瓶颈定位、TX指针回绕陷阱与断线重连保活落地
stm32·单片机·嵌入式硬件·tcp/ip
尼喃9 小时前
662K/65Z5三脚稳压芯片规格书—PW6566B33/B30引脚功能
嵌入式硬件
创界工坊工作室9 小时前
63-基于STC89C52霍尔传感器的智能化电能表设计
stm32·单片机·嵌入式硬件·51单片机·proteus
智购科技自动售货机厂家10 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习
意法半导体STM3211 小时前
【官方原创】LAT6048 如何扩大MP2的A35核和M33核共享内存
stm32·单片机·嵌入式硬件·内存映射·stm32mp2
en.en..12 小时前
STM32(F429)启动模式与两种烧录方式
stm32·单片机·嵌入式硬件
Zw-awa12 小时前
从 printf 到曲线:把数据送上 VOFA+
stm32