ARM嵌入式学习--第十四天(SPI)
SPI
-介绍
SPI(Serial Peripheral Interface)串行外围设备接口。是由Motorola公司开发,用来在微控制器和外围设备芯片之间提供一个低成本,易使用的接口。这样接口可以用来连接存储器、AD转换器、DA转换器、实时时钟、LCD驱动器、传感器、音频芯片、甚至其它处理器。
与标准的串行端口不同,SPI是一个同步协议接口,所有传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟对串行比特流的接收进行同步化,当有多个芯片连接到主机的同一个SPI接口上,这时主机通过触发从设备芯片的片选信号输入引脚[片选管脚]来选择接收数据的从设备,没有被选中的外设将不会参与到SPI传输。
SPI主要使用4个信号:
1.主机输出/从机输入(MOSI:Master Output Slave Input)
2.主机输入/从机输出(MISO:Master Input Slave Output)
3.串行时钟(SCLK或SCK)
4.外设片选管脚(CS)
-主机与从机的连接方式
-主机和从机数据的传输
主机和从机都包含一个串行移位器,主机通过向它的SPI串行移位器写入一个字节发起一次传输。移位通过MOSI信号线将字节传输给从机,从机也将自己的移位器中的内容通过MISO信号线返回给主机。这样俩个移位寄存器中的内容就被交换了。从机的写操作和读操作同时完成,因此SPI成为一个很有效的协议。
(注意:如果进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输)
-SPI时序
通过SPI总线在主机和从机之间传输数据,必须保证主机发出的时序和从机要求的时序保持一致才可以
-时钟极性
Clock Polarity:简称CPOL或POL,指SPI CLK在空闲时的电平时0还是1
-时钟相位
Clock Poalrity:简称CPHA或PHA,指数据采样的时候,时CLK的第一个边沿还是第二个边沿
1.CPHA=0,CLK的第一个边沿采样
2.CPHA=1,CLK的第二个边沿采样
将CPOL和CPHA进行组合,可以得到SPI主要有四种模式的时序
对应的时序图如下:
-SPI的四种时序
--SPOL=0,CPHA=0
SPI CLK 空闲时为低电平,所以CPOL=0,CLK的第一个边沿采样,所以SPHA=0
--SPOL=0,CPHA=1
SPI CLK 空闲时为低电平,所以CPOL=0,CLK的第二个边沿采样,所以SPHA=1
--SPOL=1,CPHA=0
SPI CLK空闲时为高电平,所以CPOL=1,CLK第一个边沿采样,所以CPHA=0
--SPOL=1,CPHA=1
SPI CLK空闲时为高电平,所以CPOL=1,CLK第二个边沿采样,所以CPHA=1