SPI 总线
SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。图2示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):
图2 SPI总线四种工作方式
SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。
SPI 总线接口
SPI总线主要由4条线组成:
nSCLK —Serial Clock (output from master)
nMOSI/SIMO —Master Output, Slave Input (output from master)
nMISO/SOMI —Master Input, Slave Output (output from slave)
nSS — Slave Select (active low; output from master)
有另一种命名方式也经常可见:
nSCK — Serial Clock (output from master)
nSDI, DI, SI — Serial Data In
nSDO, DO, SO — Serial Data Out
nnCS, CS, nSS, STE — Chip Select, Slave Transmit Enable (active low; output from master)
SPI通讯时Master首先需要配置一个时钟(clock),这个值一般选择小于或者大于Slave设备支持的频率。通用的频率范围为1-70MHz。
SPI工作在全双工模式,这意味着数据可以在同一时间发送和接收。
时钟极性polarity与时钟相位phase
时钟极性(CPOL)和时钟相位(CPHA)用于设定从设备何时采样数据。CPOL决定SCLK为高时总线为空闲(CPOL=1)还是SCLK为低时总线为空闲(CPOL=0)。CPHA决定在SCLK的哪一个边沿将数据写入。
按照下面的时序图,
CPOL=0, SCLK为低时总线空闲:
CPHA=0 数据在SCLK的上升沿(rising edge)被读取;数据在下降沿(falling edge)写入;
CPHA=1 数据在SCLK的下降沿(falling edge)被读取;数据在上升沿(rising edge)写入;
CPOL=1, SCLK为高时总线空闲:
CPHA=0 数据在SCLK的下降沿(falling edge)
SPI总线接口 来自淘豆网m.daumloan.com转载请标明出处.