SPI具有以下特点:
-
全双工/半双工同步串行通信
-
一主多从
-
通过片选信号选择通信设备
-
可编程的时钟极性和时钟相位
1 信号描述
信号 | 描述 |
MOSI | Master Output Slave Input,主机输出、从机输入引脚,用于数据传输。 |
MISO | Master Input Slave Output,主机输入、从机输出引脚,用于数据传输。 |
SS | Slave Select,选择信号,用以协调主从设备的通信。 |
SCK | 时钟信号,用以同步数据的发送或接收。 |
(图)spi信号连接
2 不同时钟极性CPOL和时钟相位CPHA下的数据传输
CPOL为0时,SCK在空闲时为低电平;CPOL为1时,SCK在空闲时为高电平。
CPHA = 0 传输格式
定义SCK信号的第1个边沿,对应的MISO的电平为从机输出到主机的第1个有效数据,对应的MOSI的电平为主机输出到从机的第1个有效数据。
-
发出片选信号,切换需要传输数据信号
-
发出片选信号后,至少维持(tL),开始生成时钟信号
-
在第1个时钟边沿采样数据
-
在第2个时钟边沿切换数据
-
在第3个时钟边沿采样数据
-
...
-
完成数据传输后,最后1个时钟周期的第2个边沿需要维持(tT),才能取消片选
-
如需发起下一次数据传输,需要在上一次传出结束后至少间隔(tI)
(具体时间参数请参考指定通信设备的数据手册)
(图)CPHA = 0
CPHA = 1 传输格式
定义SCK信号的第2个边沿,对应的MISO的电平为从机输出到主机的第1个有效数据,对应的MOSI的电平为主机输出到从机的第1个有效数据。
-
发出片选信号
-
发出片选信号后,至少维持(tL),开始生成时钟信号
-
在第1个时钟边沿切换数据
-
在第2个时钟边沿采样数据
-
在第3个时钟边沿切换数据
-
在第4个时钟边沿采样数据
-
...
-
完成数据传输后,最后1个时钟周期的第2个边沿需要维持(tT),才能取消片选
-
如需发起下一次数据传输,需要在上一次传出结束后至少间隔(tI)
(具体时间参数请参考指定通信设备的数据手册)
(图)CPHA = 1
3 功能延伸
自动控制SS信号
SPI工作在主模式下,可选择自动控制SS信号。在数据传输时,自动片选外部设备。在数据传输完成后,自动取消外部设备片选。
三线SPI
在常规的四线模式下,SPI通过MOSI和MISO完成数据的双向传输(全双工)。SPI也可以工作在半双工模式下,这时只需要一根信号线就可以完成数据的输入输出。
-
在主机模式下,MOSI作为数据的I/O信号线(MOMI,Master Output, Master Input)
-
在从机模式下,MISO作为数据的I/O信号线(SISO,Slave Iuput Slave Output)
(图)三线SPI和四线SPI
通过SPI控制器控制数据的输入和输出。在数据输出时,由SCK信号线生成时钟信号。在信号输入时,SCK则接收时钟信号,用以同步数据输入。
5 结束语
至此,SPI总线已介绍完毕,希望本文可以帮助到大家!
欢迎大家通过后台与我交流学习心得,水平有限,如有错漏的地方请不吝指出,谢谢!