仅以寄存器地址为8Bit的器件为例:(例如MPU6500、LSM6DS3)

 

I2C通信协议

I2C 的要点是了解I2C通信帧的组成部分:START起始位、STOP停止位、ACK/NACK信号、从机器件地址、从机寄存器地址。

I2C读的时序比较繁琐,注意与写区分。

 

  • I2C 通信帧的组成部分(单字节写)

I2C与SPI通信总线协议

 

  • I2C单字节写 / 多字节写

I2C与SPI通信总线协议

 

  • I2C单字节读 / 多字节读

I2C与SPI通信总线协议

 

 

SPI通信协议

相较于I2C,SPI则简单很多,多器件的管理通过多根CS引脚进行控制,无应答处理,适合大数据流的连续写入。

 

(下图中:SPC就是SCK/SCLK,SDI就是MOSI,SDO就是MISO)

 

  • SPI 单字节写 / 多字节写

I2C与SPI通信总线协议

 

  • SPI 单字节读 / 多字节读

I2C与SPI通信总线协议

I2C与SPI通信总线协议

 

stm32 - I2C/SPI 波形及代码

stm32F103 软件I2C获取 AHT20温湿度传感器数据:stm32-I2C-AHT20

stm32F40x 硬件SPI获取AD793的ADC采样值:stm32-SPI-AD7793

 

相关文章: