
前言 本应用笔记说明了 STM32 微控制器自举程序中使用的 SPI 协议。它详细说明了每个支持的指令。 若需器件自举程序 SPI 硬件资源和要求的更多信息,请参考应用笔记 “STM32 微控制器系统存储器自举模式 ” (AN2606)。 本文档适用于表 1 中所列产品。 ![]() 1 SPI 自举程序代码序列 STM32 自举程序为 SPI 从机。 对于所有 SPI 自举程序操作, NSS 引脚 (片选)必须连至低电平。若 NSS 引脚连至高电平,则 STM32 从机将忽略 SPI 总线上的通信。 ![]() 进入系统存储器自举模式后,若 STM32 微控制器已配置好 (若需更详细信息,请参考您的STM32 系统存储器自举模式应用笔记),自举程序代码开始扫描 SPI_MOSI 线引脚,等待检测总线上的同步字节 (0x5A)。当检测到时, SPI 自举程序固件会等待接收应答过程 (请参考图 2),然后开始接收主机指令。 ![]() ![]() 2自举程序指令集 表 2 列出了所支持的指令。每个指令都将在本章进一步讲述。 ![]() 因为 SPI 配置为全双工,所以每次主机在 MOSI 线上发送数据时,它都会同时从 MISO 线上接收数据。因为从机的应答不是立即的,所以当主机发送时,它接收的数据将被忽略 (空)(此数据不被主机使用)。 当从机需要发送数据时,主机会发送它的时钟,因此它必须在 MOSI 线上发送数据,才能从MISO 线上接收从机数据。在此情况下,主机应一直发送 0x00 (从机不使用此数据)。 2.1通信安全 从编程主机到从机的所有通信都经过以下方式验证。 •校验和:接收的数据字节块都经过异或计算。所有字节异或计算后算出一个字节,加到每次通信的末尾 (校验和字节)。对所有收到的字节 —— 数据 + 校验和 —— 做异或计算,最后结果必须为 0x00。 •若接收的数据为一个字节,则它的校验和为该值的按位取反 (0x02 的校验和为0xFD)。 •对于每个指令,主机都发送三个字节:一个帧开始 (SOF = 0x5A)字节、一个表示指令值的字节及其补码 (指令与其补码的异或 = 0x00)。 •每个包都被接受 (ACK 应答)或丢弃 (NACK 应答)。 – ACK = 0x79 – NACK = 0x1F 注: 主机的帧可为下列之一: 发送指令帧:主机作为主发送端发起通信,向从机发送两字节:命令代码 + Xor。等待 ACK/NACK 帧:主机作为主接收端发起 SPI 通信,从从机接收一个字节:ACK 或NACK。 接收数据帧:主机作为主接收端发起 SPI 通信,从从机收到响应。收到的字节数取决于指令。 发送数据帧:主机作为主发送端发起 SPI 通信,向从机发送需要的字节。发送的字节数取决于指令。 完整版请查看:附件 |
DM00081379_ZHV2.pdf
下载569.77 KB, 下载次数: 0
经验分享 | SPI传输时为何丢失2个数据?
经验分享 | STM32H7 EXTI + SPI +DMA 双缓冲应用演示
使用Nano板验证驱动SPI串口屏的颜色显示
【经验分享】STM32的SPI的原理与使用(W25Q128附代码)
【STM32C0评测】4、驱动Lorasx126x,实现透传
基于STM32的SPI传输时会丢失数据吗?
基于STM32基础的SPI总线概述
基于STM32的SPI读取数据的最后位出错问题经验分享
基于STM32关闭SPI会导致WRPERR错误的问题分析
基于STM32关闭SPI导致WRPERR错误经验分享