极性和相位
SPI总线由四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素
CPOL表示SCLK(时钟线)空闲时的状态
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样
CPHA=1,每个周期的第二个时钟沿采样
详解
CPOL(极性)=0,CPHA(相位)=0
图中默认电平为低电平,即CPOL为0,
在通信开始时 ,先往数据线上发送一位数据(---),
紧接着时钟线从低电平变为高电平(↑),接收器就可以把刚才这位数据读走,
再往下,由高电平变为低电平时(↓),再发送第二位数据,
紧接时钟线由低电平变为高电平(↑),接收器就可以读走第二位数据
一共循环八次就可以完成一个字节数据的发送。
CPOL(极性)=0,CPHA(相位)=1
图中默认电平为低电平,即CPOL为0,CPHA为1,上升沿时发送数据,
在通信开始时,SCLK(时钟线)由低电平变为高电平(↑)发送数据,
紧接着时钟线从高电平变为低电平(↓),接收器就可以把刚才这位数据读走,
再往下,由低电平变为高电平时(↑),再发送第二位数据,
紧接时钟线由高电平变为低电平(↓),接收器就可以读走第二位数据
一共循环八次就可以完成一个字节数据的发送。
CPOL(极性)=1,CPHA(相位)=0
图中默认电平为高电平,即CPOL为1,
在通信开始时 ,先往数据线上发送一位数据(---),
紧接着时钟线从高电平变为高电平(↓),接收器就可以把刚才这位数据读走,
再往下,由低电平变为高电平时(↑),再发送第二位数据,
紧接时钟线由高电平变为低电平(↓),接收器就可以读走第二位数据
一共循环八次就可以完成一个字节数据的发送。
CPOL(极性)=1,CPHA(相位)=1
图中默认电平为高电平,即CPOL为1,CPHA为1,下降沿时发送数据,
在通信开始时,SCLK(时钟线)由高电平变为低电平(↓)发送数据,
紧接着时钟线从低电平变为高电平(↑),接收器就可以把刚才这位数据读走,
再往下,由高电平变为低电平时(↓),再发送第二位数据,
紧接时钟线由高电平变为低电平(↑),接收器就可以读走第二位数据
一共循环八次就可以完成一个字节数据的发送。
需要说明的是,对于一个特定的从设备来说,一般在出厂时就会将其设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置
IIC和SPI的异同
相同点
1、均采用串行、同步的方式
2、均采用TTL电平,传输距离和应用场景类似
3、均采用主从方式工作
不同点
1、IIC为半双工,SPI为全双工
2、IIC有应答机制,SPI无应答机制
3、IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址
4、IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调