SPI 总线接口
SPI总线主要由4条线组成:
n SCLK —Serial Clock (output from master)
n MOSI/SIMO —Master Output, Slave Input (output from master)
n MISO/SOMI —Master Input, Slave Output (output from slave)
n SS — (; output from master)
有另一种命名办法也常常可见:
n SCK — Serial Clock (output from master)
n SDI, DI, SI — Serial Data In
n SDO, DO, SO — Serial Data Out
n nCS,笛莎旗舰店, CS, nSS, STE — ,美骆世家官网, Slave Transmit Enable (; 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)被读取;数据在上升沿(falling edge)写入;
CPHA=1 数据在SCLK的上升沿(falling edge)被读取;数据在下降沿(rising edge)写入;
以下是时序图:
CPOL和CPHA的两个状况答应四种时钟极性和相位的不同组合。每一种都与其他三种不兼容。为了完结主、从设备间的通讯,主、从设备的CPOL和CPHA必须有相同的设置。以下是CPOL,CPHA与4种形式的联系图。
SPI的菊花链装备
一个Master 与3个独立的Slave组合, 每个Slave都有一个独立的SS(Slave Select)。
一个Master与一组运用共用SS(Slave Select)的Slave组合。
以AD7873为例做一些SPI的典型的设置
依据时序图,当CS变成低电平时,DCLK为低电平闲暇,DIN在DCLK的上升沿数据锁存.所以SPI的polarity与phase设置为Mode 0。
Figure 38 -SPI设置为8bits通讯形式,通讯周期分为3个阶段:
1> DCLK前8个DCLK对应指令周期。在这8个DCLK中,经过DIN向AD7873发送8bits指令字操控随后进行的串行数据传输。
2> 数据传输周期从第9个上升沿开端,输入数据在时钟上升沿写入,输出的数据则在时钟的下降沿读出。这儿的输入数据为8bits的0数据。DOUT一起也从DCLK的第10个上升沿开端数据输出,到第二个DCLK周期结束时,DOUT输出位数为7bits。
3> 重新开端8个DCLK的指令周期,持续经过DIN传送8bits指令操控字,红蜻蜓官网,一起DOUT在第17个DCLK输出最终的5bits数据,红蜻蜓皮鞋。
可见在Figure 38中8bits数据通讯形式下,AD7873要完结一个完好的SPI数据读写,需求3个周期,即发送24bits数据才干到达方针。
Figure 39 -SPI设置为15bits通讯形式,通讯周期分为2个阶段:
1> DCLK前15个DCLK对应指令周期。在这15个DCLK中,经过DIN向AD7873发送15bits指令字操控随后进行的串行数据传输(MSB 8bits为指令字, LSB 7bits为数据0)。DOUT一起也从DCLK的第9个上升沿开端数据输出,第一次15 DLCK周期结束时,DOUT输出位数为MSB 6bits。
2>重新开端15个DCLK的指令周期,持续经过DIN传送15bits指令操控字。一起DOUT在第16个DCLK输出最终的LSB 6bits数据。
可见在Figure 39中8bits数据通讯形式下,AD7873要完结一个完好的SPI数据读写,需求2个周期,即发送30bits 数据才干到达方针。
可见Figure 38运用的DCLK最少,功率最高。不过再8bits传送形式下需求选用接连发送3次8bits数据办法。
假如SPI想在一个周期内一次性将数据读取上来,能够把SPI通讯设置为 传送bits>= DIN+DOUT所需的时钟数目,这儿依据时序图为22个DCLK。 就能够在22个DCLK中一次性完结写8bits的指令字与读12bits的数据了。不过这儿的8bits指令字是22bits中的 MSB 8bits。
不过此办法就没有上面两种通讯形式的功率高了。:-)
以Freescale i.mx系列CSPI作为例:
选用CSPI1,POL=0,PHA=0,BIT_COUNT=22
CSPI1_CONTROL.bits.EN=1
CSPI1_CONTROL.bits.MODE=1
CSPI1_CONTROL.bits.POL = 0
CSPI1_CONTROL.bits.PHA = 0
CSPI1_CONTROL.bits.BIT_COUNT= 22
参考资料
1.Serial Peripheral Interface Bus
2.SPI Background
SPI总线接口与简略装备
SPI总线接口SPI总线主要由4条线组成:nSCLK—SerialClock(outputfrommaster)nMOSISIMO—MasterOutput,SlaveInpu
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/234627.html