简介:
SPI通讯协议是摩托罗拉公司提出的一种全双工(主机和从机可以同时收发数据)通信协议,该通信协议的主要特点为高速,并且相比于IIC更加简单,主要用于FLASH读写,LCD显示驱动,高速ADC等方面。
物理层介绍:
SPI通信共需要3+个引脚,其中的三个引脚为时钟信号线SCK,主机发送从机接收MOSI,主机接收从机发送MISO,X是与主机通信的从机数量,每一个从机单独占用一个片选端引脚共X个CE。
配图!
协议层介绍:
协议层主要规定通信的开始,停止,数据读取时机,数据变化时机的规定。
通信开始:片选端从高电平变为低电平
通信结束:片选段从低电平变为高电平
中间需要插入两个概念时钟极性CPOL和CPHA
当CPOL=0时,时钟端在空闲时为低电平,通信开始后第一个边沿为上升沿
当CPOL=1时,时钟端在空闲时为高电平,通信开始后第一个边沿为下降沿
当CPHA=0时,时钟信号为奇数边沿时的数据端MISO,MOSI的数据有效(既读取该时刻的数据)
另一个边沿(偶数边沿)时刻允许数据变化。
当CPHA=1时,时钟信号为偶数边沿时的数据端MISO,MOSI的数据有效(既读取该时刻的数据)
另一个边沿(奇数边沿)时刻允许数据变化。
因此SPI共有四种模式,如图:
配图!
SPI通信没有类似串口和IIC的每次发送的字节限制,可以一次发送多个字节,因此实现高速通信。