一、SPI基础知识
串行外设接口(Serial Peripheral Interface,SPI)是一种高速全双工同步通信总线。共有四根信号线:
NSS:从设备使能信号,低电平有效。
SCK:时钟信号,由主设备产生。
MOSI:主设备输出从设备输入信号。
MISO:主设备输入从设备输出信号。
全双工通信
半双工通信
单工模式
SPI接口的NSS结构如下图所示。NSS引脚分为外部引脚和内部引脚,其中内部NSS引脚状态可以由寄存器独立控制,因此NSS引脚既可作输入又可以作输出。
二、NSS引脚配置
主机:
1、软件从设备管理(SSM=1)
NSS输入电平由内部寄存器SSI位决定(主机置为1),不再受NSS引脚外部电平影响,该NSS引脚可用于其他功能。
2、硬件从设备管理(SSM=0)
NSS作输入
NSS输入电平由NSS引脚决定。作为主机内部NSS需要被设置为高电平,所以输入需要为高。
NSS作输出
(1)允许NSS输出(SSOE=1)
只有在器件为主模式下才使用该配置,开始通信后使能SPI,NSS信号会被驱动为低电平(输出)直至禁止SPI。(实际应用中为保证主机SPI关闭后NSS引脚输出为高电平需设计上拉电阻)
(2)禁止NSS输出(SSOE=0)
器件工作在主模式下,此配置允许多主模式,但需要使用GPIO输出推挽控制从机片选。
从机:
1、软件从设备管理(SSM=1)
NSS输入电平由内部寄存器SSI位决定(从机置为0),该引脚空闲,可作普通GPIO使用。
2、硬件从设备管理(SSM=0)
NSS引脚用作传统的片选输入,低电平时选中该器件。
三、主从通信几种方法(供交流讨论)
单主单从(多从)
(1)主机硬件管理,NSS设置为复用功能,连上拉电阻,GPIO推挽输出;
从机硬件管理,NSS设置为复用功能,接主机GPIO(单从NSS可直接接地)。
(2)主机软件管理,GPIO推挽输出;
从机软件管理,通过GPIO中断控制传输数据。
(3)主机软件管理,GPIO推挽输出;
从机硬件管理,NSS设置为复用功能,接主机GPIO。
多主
主机硬件管理,NSS设置成复用功能,连上拉电阻,且在不发送数据时失能NSS输出(SSOE=0),在要发送数据时使能NSS输出(SSOE=1)。