ST H7串行SPI驱动之DMA/中断/查询方式实践-综合

1,134 阅读1分钟

1 串行SPI

  • image.png

1.1 SPI时钟

  • STM32H7 的 SPI 支持 4 到 32bit 数据传输,而 STM32F1 和 F4 系列仅支持 8bit 或者 16bit。STM32H7 的主频 400MHz 时,SPI1, 2, 3 最高通信时钟是 100MHz,而 SPI4, 5, 6 是 50MHz。STM32H7 的 MISO 和 MOSI 引脚功能可以互换,使用比较灵活。SPI 总线的片选引脚 SS 在单一的主从器件配置下是可选的,一般情况下可以不使用 image.png
  • 这里特别注意一点,SPI 工作时最少选择二分频,也就是说 SPI1,2,3 实际通信时钟是 100MHz,而 SPI4,5,6,是 50MHz。 image.png
  • 时钟设置 image.png image.png image.png image.png image.png image.png

1.2 SPI时序

  • image.png

1.3 SPI星型拓扑

image.png

1.4 SPI Flash

image.png image.png image.png image.png image.png

1.5 W25QXX 规格参数

image.png

2 SPI驱动

  • 时钟,引脚,DMA,中断等宏定义
  • image.png
  • .h extern 发送接收数据变量 image.png

2.1 SPI BSP驱动初始化

  • bsp_Init image.png
  • bsp_InitSPIBus image.png image.png image.png HAL_SPI_Init->HAL_SPI_MspInit image.png image.png image.png
  • bsp_InitSFlash image.png image.png

2.2 bsp_spiTransfer

  • image.png image.png image.png

2.3 flash read调用bsp_spiTransfer

  • image.png

3 SPI Flash读写3种方式性能测试

3.1 查询方式

  • 4 写整个串行Flash, 全0x55 image.png
  • 5 读整个串行Flash, 测试读速度 image.png

3.2 DMA方式

  • 4 写整个串行Flash, 全0x55 image.png
  • 5 读整个串行Flash, 测试读速度 image.png

3.3 中断方式

  • 4 写整个串行Flash, 全0x55 image.png
  • 5 读整个串行Flash, 测试读速度 image.png