概念:
SPI串行外设接口,是一种高速的、全双工、同步的通信总线。采用主从模式(Master Slave)架构,支持多个slave,一般仅支持单Master。
总线结构:
SPI接口共有4根信号线,分别是设备选择线(片选SS)、时钟线(SCK)、串行输出数据线(MOSI)、串行输入信号线(MISO)。
SS 是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对该从芯片的操作才有效,同一条总线上可以连接多个SPI设备。
数据传输过程:
主节点通过MOSI线输出数据,从节点在SIMO处从主节点读取数据。同时,也在通过SOMI输出MSB(最高位),主节点会在MISO处读取从节点的数据,整个过程将一直持续,直至交换完所有数据。
主要特点:
可以同时发出和接收串行数据;
可以当做主机或从机工作;
提供频率可编程时钟;
发送结束中断标志;
写冲突保护;
总线竞争保护;
总线时序:
SPI总线有四种工作方式(SPI0, SPI1, SPI2, SPI3),其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
CPOL 极性: 决定时钟空闲时为低电平还是高电平
CPOL=0: CLK空闲时是低电平,CLK有效时是高电平
CPOL=1: CLK空闲时是高电平,CLK有效时是低电平
(SCLK空闲时刻:当SCLK在发送8个bit数据之前和之后的状态,发送数据的时候称为有效active时刻,CPOL指的就是当SCLK空闲时其电平是高电平(active-high)还是低电平(active-low))
CPHA 相位:决定何时进行数据采样(读取)
CPHA=0:第一边沿采样
CPHS=1: 第二边沿采样