本文共 711 字,大约阅读时间需要 2 分钟。
对于每个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接一块就成。转载地址:http://ovhgi.baihongyu.com/