SPI通讯协议

倖福魔咒の 提交于 2020-02-12 22:59:30

SPI是什么:
SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola
首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时
钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线。
SPI的优点:
可以同时发出和接收串行数据,支持全双工操作,操作简单,数据传输速率较高。
SPI的缺点:
需要占用主机较多的口线(每个从机都需要一根片选线),只支持单个主机,没有指定的流控制,没有应答机制确认是否接收到数据。
SPI 接口一般使用 4 条线通信:
MISO 主设备数据输入,从设备数据输出。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。
MOSI 主设备数据输出,从设备数据输入。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机
SCLK 时钟信号,由主设备产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如 STM32 的 SPI 时钟频率最大为f pclk /2,两个设备之间通讯时,通讯速率受限于低速设备。
CS 从设备片选信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。
SPI采用同步方式传输数据,Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。注意:当没有数据交流时,时钟线要么保持高电平要么保持低电平,SPI 主模块和与之通信的外设备时钟相位和极性应该一致
SPI通信有4种不同的模式:
Mode0:CPOL=0,CPHA=0(空闲状态为低电平,上升沿采样)
Mode1:CPOL=0,CPHA=1(空闲状态为低电平,下降沿采样)
Mode2:CPOL=1,CPHA=0(空闲状态为高电平,下降沿采样)
Mode3:CPOL=1,CPHA=1(空闲状态为高电平,上升沿采样)
CPOL时钟极性,表示 SPI 在空闲时,时钟信号是高电平还是低电平。CPHA是用来配置数据采样是在第几个边沿

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!