基于 FPGA 的 SPI 控制 FLASH 读写
一、SPI 简介
SPI 是 Serial Peripheral Interface 的缩写,即串行外围设备接口。由 Motorola 公司推出的一种全双工、同步串行总线接口,只需要四根信号线即可实现多个芯片之间的主从连接结构,节约引脚,同时有利于 PCB 布局。它主要应用在 Flash 存储器、EEPROM 存储器、ADC、DAC、RTC 等,实现主控器与芯片之间的串行数据传输。
SPI 通信需要四根信号线,分别为 SCK、MOSI、MISO 和 CS_N。其中 CS_N、SCLK、MOSI 是由主机输出给从机,而 MISO 由从机输出给主机。
SCLK (Serial Clock): 串行时钟线 (Master>Slave),控制数据交换的时机和速率; MOSI (Master Out Slave In): 主机输出,从机输入 (Master>Slave),用于 SPI 设备发送数据; MISO (Master In Slave Out): 主机输入,从机输出 (Slave>Master),用于 SPI 设备接收数据; CS_N (Chip Select): 片选信号 (Master->Slave),以控制与哪个从机通信。
SPI 通讯设备之间的常见连接方式:一主机一从机、一主机多从机。其中一主机多从机连接方式又分常规多片选模式和菊花链 (星链) 模式。
SPI 数据传输需要注意以下几点:
- SPI 总线在一次数据传输过程中,只能有一个主机和一个从机通信,并且主机和从机可以同时向对方进行数据传输;
- 当 SPI 总线上有多个 SPI 接口的设备时,应注意区分各设备的主从地位,在某时刻只能有一个设备作为主机;
- 从机只能在主机发起通信时,才能接收或向主机传输数据;
- SPI 每次数据传输可以为 8 位或 16 位为单位,每次传输的单位数不受限制,且大多以 MSB 的方式进行传输。
SPI 传输模式有四种,通过 CPOL(时钟极性)与 CPHA(时钟相位)控制;CPOL 为 0 时代表时钟空闲状态为低,1 时为高;CPHA 为 0 时代表数据在时钟周期的第一个改变沿(前沿)采样,在第二个改变沿(后沿)输出(改变),为 1 时代表数据在时钟周期的第一个改变沿(前沿)输出,在第二个改变沿(后沿)采样(改变)。
| CPOL\CPHA | 0 |
|---|






