关于nss引脚一直很迷不知道都有哪些功能,具体怎么使用,导致spi使用有时遇到问题,经过研究得出以下结论。
1.关于spi控制寄存器2 ssoe位
此位指的是 是否开启nss引脚的驱动功能,
在主模式下如果开启,spi使能将自动拉低nss作为片选信号,若是禁止,nss将一直保持高电平,则可以用其它gpio来发送片选信号,从而达到多个主机的目的。
在从模式下,开启可以接收输入片选信号。关闭则一直处于片选状态,后边有具体解释。
上图即为,cubemx 不使能硬件nss信号 即为ssoe=0; 所以要使用软件从器件管理器 ssm=1;
2,关于spi控制寄存器1 ssm ssi位
图一
图二
如图一, 当ssm=0时 通信控制与nss相连,输入信号(片选信号)由外部gpio决定,当ssm=1时,通信控制与ssi相关,由ssi位决定,及片选由ssi决定。
所以,图二使能软件从管理,指的是通过寄存器的ssi位来控制通信控制片选的功能,而禁用软件从器件管理则指的是连接外部gpio,由外部信号决定片选。
3,总结
综上所述 ,所以当硬件 nss 信号 开启时 ssm=0 使用gpio, 当 硬件nss信号 disable时,ssm=1则使用ssi位来确定片选。
所以spi关于nss的具体应用有以下几种情况
做主机 硬件输出时 ssm=0 ssi=1 关闭软件从管理器与ssm和ssi无关 spi使能及拉低nss引脚
做主机 disable时 ssm=1 ssi=1 开启软件从管理器 ssi一直为1 所以nss引脚一直输出1 nss不 用,用其他引脚控制作片选引脚。
做主机 不存在硬件输入 基本不用所以不讨论
做从机 硬件输入 ssm=0 ssi=0 关闭软件从管理 与nss-gpio相连 与ssm和ssi无关
做从机 disable时 ssm=1 ssi=0 开启软件从管理 与nss-ssi相连 ssi为0 所以从机一直被选中