SPI介绍
SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)
SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线。SPI(串行外设接口)以其高速度而著称,使其成为快速通信的首选。
SPI 主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
优缺点
优点:
- 高速:SPI通信速度较快,适用于对速度要求较高的应用。
- 全双工:SPI支持全双工通信,可以同时进行数据发送和接收。
- 简单:SPI的通信协议相对简单,适用于快速开发和实现。
缺点:
- 连线复杂:SPI需要多根线进行连接,可能会增加硬件设计的复杂性。
- 长距离传输受限:SPI的传输距离受到限制,过长的线路可能导致信号衰减和干扰。
- 主从模式限制:SPI通常采用主从模式,主设备数量受限,不适用于多主设备场景。
应用
SPI 非常适合需要快速可靠的数据传输的情况,例如 TFT 显示器、SD 存储卡和无线通信模块
SPI内部结构图
详细的内部图:
仔细看右下角有两个关键寄存器,CR1和CR2。
SPI 接口一般使用 4 条线通信:
• MISO 主设备数据输入,从设备数据输出。Master input slaver output,主如从出。
- 寄存器通过 MOSI 信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过 MISO 信号线返回给主机。这样,两个移位寄存器中的内容就被交换。
- 外设的写操作和读操作是同步完成的。
• MOSI 主设备数据输出,从设备数据输入。
• SCLK 时钟信号,由主设备产生。
• CS(NSS) 从设备片选信号,由主设备控制,从设备也需要进行相应的设置。可让 SPI主器件与从器件进行单独通信,从而并避免数据线上的竞争。
- 从器件的 NSS 输入可由主器件上的标准 IO 端口驱动,这是当外部NSS处于高电平时的玩法。
- NSS 引脚在使能(SSOE 位)时还可用作输出,可在SPI 处于主模式配置时驱动为低电平
- 只要器件配置成 NSS 硬件管理模式,所有连接到该主器件 NSS 引脚的其它器件 NSS 引脚都将呈现低电平,并因此而作为从器件。
- 当配置为主模式,且 NSS 配置为输入(MSTR=1 且 SSOE=0)时,如果NSS 拉至低电平,SPI 将进入主模式故障状态:MSTR 位自动清零,并且器件配置为从模式