文章目录
一、SPI协议
1、SPI介绍
是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速、全双工的,同步的通信总线。并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,要求通讯速率较高的场合。
2、SPI原理
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
MISO
– Master Input Slave Output,主设备数据输入,从设备数据输出;MOSI
– Master Output Slave Input,主设备数据输出,从设备数据输入;SCLK
– Serial Clock,时钟信号,由主设备产生;CS
– Chip Select,从设备使能信号,由主设备控制。
其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。
3、SPI物理层
上图是常见的 SPI 通讯系统
> SPI 通讯使用 3 条总线及片选线, 3 条总线分别为 SCK、 MOSI、 MISO,片选线为SS,它们的作用如下:
> (1) NSS(Slave Select):当有多个 SPI从设备与 SPI主机相连时,设备的其它信号线 SCK、 MOSI及 MISO同时并联到相同的SPI总线上,而每个从设备都有独立的这一条NSS 信号线,独占主机的一个引脚。 I2C协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而 SPI 协议中没有设备地址,它使用 NSS信号线来寻址,当主机要选择从设备时,把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯。所以 SPI通讯以NSS 线置低电平为开始信号,以 NSS 线被拉高作为结束信号。
> (2) SCK(Serial Clock): 时钟信号线,用于通讯数据同步。它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样。
> (3) MOSI(Master Output, Slave Input):主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。
> (4)