STM32微控制器SPI接口NSS管理分析
扫描二维码
随时随地手机看文章
看了很多关于NSS片选信号配置的资料,感觉没有说清楚的,自己写了一些个人的看法,希望对大家有用。
首先看我们看下NSS的结构图,如下。
从上图中我们可以看出左边的NSS代表硬件的引脚,右边的internalnss是内部NSS,微处理器根据这个内部的NSS来确定不同的操作。
和NSS相关的寄存器标志位主要是SSM、SSI以及SSOE。SSM用来配置是硬件模式还是软件模式。SSI用来确定在软件模式下NSS输入的极性,SSOE用来决定是否允许内部NSS信号送出的NSS引脚上。
对NSS的管理有硬件模式和软件模式之分,所谓硬件模式(SSM=0,二选一处0端有效),就是内部NSS的信号来自于外部NSS引脚,是确确实实的硬东西(引脚)送过来的。软件模式(SSM=1,二选一处1端有效),内部NSS信号来自于内部SSI标志位,用户可以利用软件设置SSI,来控制内部NSS。
一、如果STM32作为SPI总线的主设备
1.如果是硬件模式,并且SSOE等于1,那么NSS引脚电平可以送入内部NSS,内部NSS也可以通过输出控制单元送到NSS引脚上,就可以实现对从设备的控制了。NSS引脚在工作时会出现低电平,可以打开外部从设备。如果SSOE等于0,这时内部NSS信息就无法送到NSS引脚了,那不是无法控制从设备了么?对,此时NSS引脚就无法控制从设备了,不过如果有其他的主设备将NSS引脚拉低,那么此时SPI就自动进入了从模式,可以接收数据了,实现了多主模式下(比如两个STM32通过SPI进行通信,都可能是主设备)的功能切换。
2.如果是软件模式,内部NSS的信息来自于SSI标志位,但内部NSS信息无法送到NSS引脚,此时就需要用户使用其他的GPIO引脚来控制从设备。
二、如果STM32作为SPI总线的从设备
1.如果是硬件模式,且SSOE=0,NSS引脚信号可以送入到内部NSS,STM32可以受控于其他主设备。如果此时SSOE=1,那么SPI也可以切换成主模式,实现从到主的切换。
2.如果是软件模式,如果SSI=0,那么内部NSS一直未低电平,总是被选中,可以随时和外部设备通信(此时STM32自己是从设备)。
因此:一般STM32做主设备,且管理一个从设备,可以设置成硬件模式。 如果管理多个从设备,可以设置软件模式。如果STM32做从设备,尽量也设置成软件模式,让SSI=0,就可以随时接收数据了。