以STM32F103RCT6芯片为例,查芯片手册,可以看到SPI1的NSS引脚对应PA4引脚,那么这个NSS引脚作用是什么?
SPI通信需要有MOSI、MISO、SCLK、CS(Chip Select)四个引脚。一般SPI的从机的片选端(CS)为低电平时,从机被选中,此时从机才能正常工作。所有的主机和从机其实都有片选信号,只有片选了,才能工作。而SPI的主机要正常工作,片选端需要为高电平。但是从STM32的数据手册中找不到SPI的CS引脚,其实文章开头提到的NSS引脚起到的就是CS引脚的作用。下面我们对主机的NSS引脚的配置进行分析:
在使用固件库对SPI进行配置时,调用的是SPI_Init函数,在对入口参数SPI_InitStruct的成员的有效性判断函数的定义中,我们可以查找到SPI_Mode成员的有效值为
#define SPI_Mode_Master ((uint16_t)0x0104)
#define SPI_Mode_Slave ((uint16_t)0x0000)
而SPI_NSS成员的有效值为
#define SPI_NSS_Soft ((uint16_t)0x0200)