SPI总线之NSS

对于每个SPI的NSS,可以output也可以input
如果是Input:就是把NSS的电平信号给自己,
如果是Output:就是把NSS信号发出去,给从机
NSS配置为输出还是不输出,通过SPI_CR2寄存器的SSOE选择,
 SSOE为1的时候,且SPI是主模式,NSS就拉低,那么其他的设备,自动接收到低电平,自动为从设备
NSS的输入,分为硬件输入和软件控制输入两个模式,
 软件模式:
  1. 对于Master来说,设置SPI_CR1的SSM和SSI都为1,SSM为1是为了是能软件管理。此时,NSS外部引脚可以干别的(作为驱动Slave的片选信号)
   内部的NSS则通过SPI_CRL的SSI来驱动,前面讲SSI为1,是为了使内部NSS内电平为1,为毛内电平要为1呢?
   因为STM32上说,要保持Master状态,NSS就应该为1,硬件模式下也是如此。
  2. 对于Slave呢,Master自己解决了NSS为高的问题,Slave自己的NSS为低也要解决啊,
    若Slave是一个MCU,比如是个STM32单片机,你就得把SSM置为1,SSI置为0啊!这就解决了Slave的NSS需要拉低的问题。
    如果Slave是个支持SPI片子(比如我那个EN25Q64),那直接把CS接到GND就可以了;洋气点,不是Master那个NSS信号内部自己解决了吗,那直接用它当作GPIO输出低电平给Slave的CS啊,其他GPIO也成
 硬件模式:
  对于Master,NSS直接怼到VCC,对于Slave,NSS怼到GND就完了
  上面说过,主机SSOE为1的时,它是把NSS信号(低电平)发出去,直接把主机的NSS和从机的CS接一块就成。

你可能感兴趣的:(SPI总线之NSS)