1. I²C通信协议

1.2 物理层

1.2.3 OC/OD输出原因

// 开漏输出实现线与逻辑
#define SDA_PIN_MODE()   GPIO_Mode_OD  // 配置为开漏模式
#define SCL_PIN_MODE()   GPIO_Mode_OD

1.3 协议层

1.3.5 通信流程

  • 写寄存器时序

    (图片来源:EM7028数据手册)

2. SPI通信协议

2.4 工作模式

模式 CPOL CPHA 空闲时钟 采样时刻
0 0 0 低电平 第一个时钟边沿
1 0 1 低电平 第二个时钟边沿
2 1 0 高电平 第一个时钟边沿
3 1 1 高电平 第二个时钟边沿

2.4.1 模式判断示例

ST7789V显示屏SPI模式判断

(图片来源:ST7789V数据手册)

分析步骤

  1. 空闲状态观察:CS未拉低时SCLK保持低电平CPOL=0
  2. 数据采样点:数据在第一个上升沿被采样 → CPHA=0
  3. 结论:该器件工作在 Mode 0
// STM32 SPI模式0配置
SPI_InitTypeDef spi;
spi.CLKPolarity = SPI_POLARITY_LOW;  // CPOL=0
spi.CLKPhase = SPI_PHASE_1EDGE;      // CPHA=0
HAL_SPI_Init(&spi);

注意:实际开发时务必以器件数据手册的时序图为准,图片URL需替换为实际可访问地址。