目前接触过的SPI接口,连接的外设有FLASH和EEPROM。
存储芯片有支持不同总线访问的类型。
SPI通信
简述
- SPI = Serial Peripheral Interface
- 在开发F28335时,有时候可能需要扩展一些外围设备,例如,觉得F28335内部12位的ADC精度不够,想要外扩一个串行高精度的ADC,或者向外扩EEPROM、LCD显示驱动器、网络控制器、DAC等,就需要用到F28335的串行外围设备接口SPI。
- SPI是一种高速的同步串行输入/输出接口,允许1~16位的数据流在设备与设备间进行交换。
- 通常用于DSP与外围设备或者DSP与其他控制器之间进行通信。
- 本章介绍以下内容:
- 介绍SPI接口通用的一些基本知识。
- 详细介绍F28335内部SPI的结构、特点、中断、工作方式等内容。
16.1 SPI模块的通用知识
-
SPI是同步通信,SCI是异步通信。
- 同步通信:通信双方的设备必须拥有相同的时钟脉冲,以相同的频率进行数据传输。
- 异步通信:通信双方的设备拥有独立的时钟脉冲,可以独自进行数据传输,就像两个人在散步,各走各的。
-
SPI接口一般使用4根线。当然并不是所有的SPI接口都采用四线制,有的SPI接口带有中断信号线INT,而有的SPI接口没有主机输出/从机输入线MOSI。
-
F28335中的SPI采用四根线的方式。
线路名称 线路作用 SCK 串行时钟线 MISO 主机输入/从机输出线 MOSI 从机输入/主机输出线 CS 低电平有效的从机选择线 -
SPI的通信原理:
- SPI以主从方式进行工作,这种模式的通信系统中通常有一个主设备,多个从设备。CS信号用来控制从机的芯片是否被选中。从机只有通过CS信号被选中之后,对此从机的操作才会有效。
- 片选信号的存在,使得同一总线上可以挂载多个SPI设备。
- 当从机被选中,和主机建立连接后,接下来起作用的就是负责通信的3根线。
- SPI采用串行通信协议,即通信时数据是一位一位进行传输的。
- 传输时,由SCK时钟信号提供时钟脉冲,当M1给S1发送数据时,数据在时钟脉冲的上升沿或者下降沿通过M1的MOSI引脚发送,在紧接着的下降沿或者上升沿通过S1的MOSI引脚接收。
- SCK信号只由主设备控制,从设备不能控制时钟信号线。
- 在一个SPI通信系统中,必须有一个主控设备,其向整个SPI系统提供时钟信号,系统内所有的设备都基于这个时钟脉冲进行数据的接收和发送,所有SPI是同步串行通信接口。
- 在点对点的通信中,SPI接口不需要寻址操作,且为全双工通信,因此显得高效简单。
- 在多个从设备的系统中,每个设备都需要独立的使能信号,硬件上比I2C系统稍微复杂一些。
- SPI是环形总线结构,在SCK时钟信号的控制下,两个双向移位寄存器SPIDAT进行数据交换。
- 假如主机M1与从机S1进行通信,主机的8位寄存器SPIDAT1内的数据是10101010,而从机的8位寄存器SPIDAT2内的数据是01010101,在时钟脉冲上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送,主机和从机之间进行全双工通信,即两个SPI接口同时接收发送数据。
- SPIDAT移位寄存器总是将高位的数据移出,接着将剩余的数据分别左移一位,然后将接收到的数据移入其最低位。
- 如图16-3所示,当时钟脉冲第一个上升沿来的时候,SPIDAT1将最高位1移出,并将剩余所有的数据左移一位,这时主机的MOSI引脚为高电平1,而SPIDAT2将最高位0移出,并将剩余所有的数据左移一位,这时从机的MOSI引脚为低电平0。然后,当时钟脉冲下降沿来的时候,SPIDAT1将锁存主机MISO引脚上的电平,也就是从机发出的低电平0,并将数据0移入其最低位,同样,SPIDAT2将锁存从机MISO引脚上的电平,也就是主机发出的高电平1