标题:
SPI基本原理与结构
[打印本页]
作者:
51黑黑黑
时间:
2016-2-13 01:59
标题:
SPI基本原理与结构
SPI(
Serial PeripheralInterface
,串行外围设备接口)是由
Motorola
公司开发,用来在微控制器和外围设备芯片之间提供一个低成本、易使用的接口(
SPI
有时候也被称为
4
线接口)。这种接口可以用来连接存储器(存储数据)、
A/D
转换器、
D/A
转换器、实时时钟日历、
LCD
驱动器、传感器、音频芯片,甚至其他处理器。支持
SPI
的元件很多,并且还一直在增加。
与标准的串行接口(将在第
10
章讲到)不同,
SPI
是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。可能会有许多芯片连到主机的同一个
SPI
接口上,这时主机通过触发从设备的片选输入引脚来选择接收数据的从设备,没有被选中的外设将不会参与
SPI
传输。
SPI
主要使用
4
个信号:主机输出
/
从机输入(
MOSI
)、主机输入
/
主机输出(
MISO
)、串行
SCLK
或
SCK
和外设芯片(
CS
)。有些处理器有
SPI
接口专用的芯片选择,称为从机选择(
SS
)。
MOSI
信号由主机产生,从机接收。在有些芯片上,
MOSI
只被简单的标为串行输入(
SI
),或者串行数据输入(
SDI
)。
MISO
信号由从机产生,不过还是在主机的控制下产生的。在一些芯片上,
MISO
有时被称为串行输出(
SO
)或串行数据输出(
SDO
)。外设片选信号通常只是由主机的备用
I/O
引脚产生的。下左图是微处理器通过
SPI
和外设进行连接的示意图。
主机和外设都包含一个串行移位寄存器,主机通过向它的
SPI
串行寄存器写入一个字节来发起一次传输。寄存器是通过
MOSI
信号线将字节传送给外设,外设也将自己移位寄存器中的内容通过
MISO
信号线返回给主机,如上右图所示。这样,两个移位寄存器中的内容就被交换了。外设的写操作和读操作是同步完成的,因此
SPI
成为一个很有效的协议。
如果只是进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来引发从机的传输。
当主机发送一个连续的数据流时,有些外设能够进行多字节传输。许多拥有
SPI
接口的存储器芯片都以这种方式工作。在这种传输方式下,
SPI
外设的芯片选择端必须在整个传输过程中保持低电平。比如,存储器芯片会希望在一个“写”命令之后紧接着收到的是
4
个地址字节(起始地址),这样后面接收到的数据就可以存储到该地址。一次传输可能会涉及千字节的移位或更多的信息。
其他外设只需要一个单字节(比如一个发给
A/D
转换器的命令),有些甚至还支持菊花链连接,如下图所示。
在这个例子中,主机处理器从其
SPI
接口发送
3
个字节的数据。第
1
个字节发送给外设
A
,当第
2
个字节发送给外设
A
的时候,第
1
个字节已移出了
A
,而传送给了
B
。同样,主机想要从外设
A
读取一个结果,它必须再发送一个
3
字节(空字节)的序列,这样就可以把
A
中的数据移到
B
中,然后再移到
C
中,最后送回主机。在这个过程中,主机还依次从
B
和
C
接收到字节。
注意,菊花链连接不一定适用于所有的
SPI
设备,特别是要求多字节传输的(比如存储器芯片)设备。另外,要对外设芯片的数据表进行仔细分析,确定能对它做什么而不能做什么。如果芯片的数据表中没有明确提到菊花链连接,那么该芯片不支持这种连接的几率为
50%
。
根据时钟极性和时钟相位的不同,
SPI
有
4
个工作模式。时钟极性有高、低两极:时钟极性为低电平时,空闲时时钟(
SCK
)处于低电平,传输时跳转到高电平;时钟极性为高电平时,空闲时时钟处于高电平,传输时跳转到低电平。
时钟相位有两个:时钟相位
0
和时钟相位
1
。对于时钟相位
0
,如果时钟极性是低电平,
MOSI
和
MISO
输出在(
SCK
)的上升沿有效。如果时钟电平极性为高,对于时钟相位
0
,这些输出在
SCK
的下降沿有效。
MISO
输出的第
X
位是一个未定义的附加位,是
SPI
接口特有的情况。用户不必担心这个位,因为
SPI
接口将忽略该位。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1