目录
SPI硬件连接
对于一个主控芯片,其一般都会有一个SPI控制器,其上有三条线,SCK,DO,DI分别可以输出时钟脉冲,发送数据,以及接收数据。对于连接在同一个SPI控制器上的SPI设备,主要的一个点是不能相互影响,这就用到了片选引脚(CS0,CS1),片选引脚可以选中对应的SPI设备,在同一时间只有一个片选引脚有效。这个引脚需要自己在通用IO中定义。其中低电平表示被选中,高电平表示不被选中。
时序分析
假设现在主控芯片传输一个0x56数据到SPIflash,时序图如下:
可以看到,CS0拉低表示选中SPIFLASH作为SPI控制器操作的SPI设备,而SCK与DO可以看到,在每一个时钟脉冲周期,都有一个数据传入,进而引出两个问题:
SCK的初始电平是高还是低?
DO的数据是在下降沿写入,还是在上升沿写入?
这里又引入一个概念:SPI控制器中的两个寄存器CPOL(极性寄存器)与CPHA(相位寄存器)。
简单来讲就是当CPOL为0时SCK初始电平为低电平,CPOL为1时SCK初始电平为高电平。当CPHA为0时将在第一个边沿采样数据,CPHA为1时将在第二个边沿采样数据。