4 月25 日 ---- 4 月27 日 SPI 总线 经过两天的学习,哈哈SPI 终于搞定,用STM32 控制IIC EEPORM,将EEPROM 中的数据读到SPI 的FLASH 中。 ---------------------------------------------------------------------------------------------------------------------- SPI(Serial Peripheral Interface)总线 :串行外围总线接口 一、SPI 总线的简介: SPI 是由摩托罗拉公司开发的全双工同步串行总线,没有总线仲裁机制,所以工作在单主机系统中。主设备启动与从设备的同步通讯,从而完成数据的交换。对于只能做从机的器件接口来说,SPI 接口由 SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟)和 CS(从使能信号)。通讯时,数据由 SDO 输出,SDI 输入,数据在时钟的上升沿或者下降沿由 SDO 输出,在紧接着的下降沿或者上升沿由 SDI 读入,这样经过8/16 帧,以完成 8/16 位数据的传输。 对于有的微控制器来说,它的硬件 SPI 即可做主机,也可以做从机,即可实现主从配置,MOSI:主出从入、MISO:主入从出、SCK:串行时钟、SS:从属选择。(当做主机输出时,该信号用于选中需要访问的从机,SS 输入高电平,外部决定其为主机;当做从机时,SS 为输入或者一般的IO 口使用)。常用的SPI 接法:在软件配置的条件下 SS 不使用。 1、SPI 总线的通信时序 (1)在 SPI 通信中,在全双工模式下,发送和接收是同事进行的 (2)数据传输的时钟基来自主控制器的时钟脉冲;摩托罗拉没有定义任何通用的SPI时钟的规范,最常用的时钟设置是基于时钟极性 CPOL 和时钟相位 CPHA 两个参数。 a) CPOL=0,表示时钟的空闲状态为低电平 b) CPOL=1,表示时钟的空闲状态为高电平 c) CPHA=0,表示同步始终的第一个边沿(上升或者下降)数据被采样 d) CPHA=1,表示同步始终的第二个边沿(上升或者下降)数据被采样 即CPOL 和CPHA 的设置决定了数据采样的时钟沿。 (3)在多个从设备的系统中,每个设备需要独立的使能信号,硬件比I2C 系统复杂 (4)没有应答机制确定是否收到数据,没有I2C 总线系统安全。 (5)SPI 主机与之通信的从机的时钟极性和相位应该一致 i. 主设备SPI 时钟和极性的配置由从机来决定 ii. 主设备的SDO、SDI 和从设备的SDO、SDI 一致 iii. 主从设备是在SCLK 的控制下,同时发送和接受数据,并通过两个双向移位寄存器来交换数据。 iv. 工作原理如下:...