spi 协议驱动设计
- MISO– Master Input Slave Output,主设备数据输入,从设备数据输出。
- MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入。
- SCLK – Serial Clock,时钟信号,由主设备产生。
- CS – Chip Select,从设备使能信号,由主设备控制。
cs 是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个 spi 设备成为可能。
通讯是通过数据交换完成的,由 sclk 提供时钟脉冲, mosi、miso 则基于此脉冲完成数据传输。数据输出通过 mosi 线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要 N 次时钟信号的改变(上沿和下沿为一次),才能完成 N 位数据的传输。
spi 通信有四种不同的模式,不同的从设备可能在出厂时就已经配置为某种模式。通信的双方必须是工作在同一模式下,所以我们可以对主设备的 spi 模式进行配置,通过 CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。