STM32 SPI
接口的简单实?/p>
通常
SPI
通过
4
个引脚与外部器件相连?/p>
?/p>
MISO
?/p>
主设备输?/p>
/
从设备输出引脚?/p>
该引脚在从模式下发送数据,
在主模式
下接收数据?/p>
?/p>
MOSI
?/p>
主设备输?/p>
/
从设备输入引脚?/p>
该引脚在主模式下发送数据,
在从模式
下接收数据?/p>
?/p>
SCK
:串口时钟,作为主设备的输出,从设备的输?/p>
?/p>
NSS
:从设备选择。这是一个可选的引脚,用来选择?/p>
/
从设备。它的功能是?/p>
来作为“片选引脚?/p>
,让主设备可以单独地与特定从设备通讯,避免数据线上的
冲突?/p>
从设备的
NSS
引脚可以由主设备的一个标?/p>
I/O
引脚来驱动?/p>
一旦被使能
(SSOE
?/p>
)
?/p>
NSS
引脚也可以作为输出引脚,并在
SPI
处于主模式时拉低;此时,
所有的
SPI
设备?/p>
如果它们?/p>
NSS
引脚连接到主设备?/p>
NSS
引脚?/p>
则会检测到?/p>
电平?/p>
如果它们被设置为
NSS
硬件模式?/p>
就会自动进入从设备状态?/p>
当配置为?/p>
设备?/p>
NSS
配置为输入引?/p>
(MSTR=1
?/p>
SSOE=0)
时,如果
NSS
被拉低,则这?/p>
SPI
设备进入主模式失败状态:?/p>
MSTR
位被自动清除,此设备进入从模式?/p>
时钟信号的相位和极?/p>
SPI_CR
寄存器的
CPOL
?/p>
CPHA
位,能够组合成四种可能的时序关系?/p>
CPOL(
时钟
极?/p>
)
位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式?/p>
的设备都有效?/p>
如果
CPOL
被清?/p>
0
?/p>
?/p>
SCK
引脚在空闲状态保持低电平?/p>
如果
CPOL
被置?/p>
1
?/p>
?/p>
SCK
引脚在空闲状态保持高电平?/p>
如果
CPHA(
时钟相位
)
位被置?/p>
1
?/p>
?/p>
SCK
时钟的第二个边沿
(CPOL
位为
0
时就是下
降沿?/p>
CPOL
位为?/p>
1
’时就是上升?/p>
)
进行数据位的采样,数据在第二个时钟边
沿被锁存。如?/p>
CPHA
位被清?/p>
0
?/p>
?/p>
SCK
时钟的第一边沿
(CPOL
位为?/p>
0
’时就是
下降沿,
CPOL
位为?/p>
1
’时就是上升?/p>
)
进行数据位采样,数据在第一个时钟边
沿被锁存?/p>
CPOL
时钟极性和
CPHA
时钟相位的组合选择数据捕捉的时钟边沿?/p>
?/p>
212
显示?/p>
SPI
传输?/p>
4
?/p>
CPHA
?/p>
CPOL
位组合?/p>
此图可以解释为主设备和从
设备?/p>
SCK
脚?/p>
MISO
脚?/p>
MOSI
脚直接连接的主或从时序图?/p>