SPI:串行同步全双工,
优势:高速,任意大小的字
非常简单的硬件结构:从站不需要唯一地址(与I2C不同),从机使用主机时钟,不需要精密晶振(与UART不同),不需要收发器(与CAN不同)
主机产生时钟信号,从机接受信号,由一个主机对应数个从机。
数据的采集时机可能是时钟信号的上升沿或下降沿。
数据传输过程:
主机先将NSS信号拉低,这样可以保证开始接收数据
当接收端检测到时钟的边沿信号时,他立刻读取数据线上的信号,这样就到得到了一位数据
一共有两种模式
MOSI:主机产生时钟信号发送到从机
MISO:主机产生预定数量的时钟信号,从机将数据发回主机
SPI是全双工模式,可以单独发送和接收数据,因此可以在同一时间发送和接收数据
时钟频率:
SPI总线上的主机必须在通信开始时配置并生成相应的时钟信号,在每个SPI时钟信号内都会发生全双工数据传输。
主机在MOSI线发送一位数据,从机读取一位;
从机在MISO线发送一位数据。主机读取一位
这意味无论是否接受有效数据,必须按照顺序发送一些虚拟数据。
时钟极性CKP/Clock Polarity:
CKP = 0:时钟空闲IDLE为低电平 0; CKP = 1:时钟空闲IDLE为高电平1;
时钟相位CKE /Clock Phase (Edge):
CKE = 0:在时钟信号SCK的第一个跳变沿采样; CKE = 1:在时钟信号第二个跳变沿采样
(0.0)第一个跳变边沿的上升沿
-
- 第二个跳变边沿的下降沿
以上为主机对应一从机的模式,当然也可以进行多个从机的连接
- 每一个从机对应一条单独的NSS
- 主机要和特定的从机进行连接只需将特定的NSS拉低即可,但是只能选择一条NSS进行护数据传输,不然多个从机会同时进行获取或发送,进而出现数据混乱
参考文章:https://blog.csdn.net/u010632165/article/details/109460814