1 串行SPI
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 在单一的主从器件配置下是可选的,一般情况下可以不使用 - 这里特别注意一点,SPI 工作时最少选择二分频,也就是说 SPI1,2,3 实际通信时钟是 100MHz,而 SPI4,5,6,是 50MHz。
- 时钟设置
1.2 SPI时序
1.3 SPI星型拓扑
1.4 SPI Flash
1.5 W25QXX 规格参数
2 SPI驱动
- 时钟,引脚,DMA,中断等宏定义
.h extern 发送接收数据变量
2.1 SPI BSP驱动初始化
- bsp_Init
- bsp_InitSPIBus
HAL_SPI_Init->HAL_SPI_MspInit - bsp_InitSFlash
2.2 bsp_spiTransfer
2.3 flash read调用bsp_spiTransfer
3 SPI Flash读写3种方式性能测试
3.1 查询方式
- 4 写整个串行Flash, 全0x55
- 5 读整个串行Flash, 测试读速度
3.2 DMA方式
- 4 写整个串行Flash, 全0x55
- 5 读整个串行Flash, 测试读速度
3.3 中断方式
- 4 写整个串行Flash, 全0x55
- 5 读整个串行Flash, 测试读速度