1.ESP8266 SPI 主机协议格式
1.1.SPI 主机⽀持的通信格式
ESP8266 SPI 主机通信格式为命令 + 地址 + 读/写数据,具体为: • 命令:必须存在;⻓度,1 ~ 16 位;主机输出从机输⼊(MOSI)。 • 地址:可选;⻓度,0 ~ 32 位;主机输出从机输⼊(MOSI)。 Espressif 21/108 反馈⽂档意⻅ 2020.07 4. SPI 模块使⽤说明 • 数据写或读:可选;⻓度,0 - 512 位(64 字节);主机输出从机输⼊(MOSI)或 主机输⼊从机输出(MISO)。
1.2.现有 API⽀持的 SPI主机通信格式
ESP8266 SPI 的 API 函数中给出两个固定的主机初始化模式,⼀个模式⽀持⼤多数以字节 单位的常规 SPI 通信,另⼀个模式专为驱动⼀种彩⾊ LCD 屏设计,该设备需要⼀次 9 位 的⾮标准 SPI 通信格式。
2.ESP8266 SPI 从机协议格式
2.1.SPI 从机时钟极性配置要求
与 ESP8266 SPI 从机通信的主机设备时钟极性需配置为:空闲低电平,上升沿采样,下 降沿变换数据。并且在⼀次 16 位读/写过程中,务必保持⽚选信号 CS 的低电平,如果 在发送过程中 CS 被拉⾼,从机内部状态将会重置。
2.2.SPI 从机⽀持的通信格式
ESP8266 SPI 从机通信格式与主机模式基本相同为命令 + 地址 + 读/写数据,⽽从机读 写操作有固定硬件命令,且地址部分不能去除,具体为:
• 命令:必须存在;⻓度,3 ~ 16 位;主机输出从机输⼊(MOSI)。 • 地址:必须存在;⻓度,1 ~ 32 位;主机输出从机输⼊(MOSI)。 • 数据写或读:可选;⻓度,0 ~ 512 位(64 字节);主机输出从机输⼊(MOSI) 或主机输⼊从机输出(MISO)。
2.3.SPI 从机⽀持命令定义
从机接收命令⻓度⾄少是 3 位且低 3 位对应有固定的硬件读写操作,具体为:
• 010(从机接收):将主机发送数据通过 MOSI 写⼊从机数据缓存对应寄存器 SPI_FLASH_C0 ⾄ SPI_FLASH_C15。
• 011(从机发送):将从机缓存对应寄存器 SPI_FLASH_C0 ⾄ SPI_FLASH_C15 中 的数据通过 MISO 发送到主机。
• 110(从机同时收发):将从机数据缓存发送⾄ MISO 同时将 MOSI 上的主机数据写 ⼊数据缓存 SPI_FLASH_C0 ⾄ SPI_FLASH_C15。
注意: 其余数值⽤于读写 SPI 从机的状态寄存器 SPI_FLASH_STATUS,由于其通信格式与读写数据缓存不同,会 造成从机读写错误,请勿使⽤。
2.4.现有 API ⽀持的 SPI 从机通信格式
ESP8266 SPI 的 API 函数中给出⼀个固定的从机初始化模式,该模式为兼容⼤多数以字节 为单位的设备,将从机通信格式设定为:7 位命令 + 1 位地址 + 8 位读/写数据。这样其 他 SPI 主机设备进⾏⼀次 16 位(或两次 8 位且 CS 需要保持低电平)的通信就可以对 ESP8266 的 SPI 从机进⾏⼀字节的读或写操作。