当前位置:首页 > 问问

stm32f103的nss是什么 STM32F103的NSS引脚解析

1、什么是stm32f103的nss

在控制stm32f103的SPI外设时,我们经常会看到NSS这个概念。它代表的是“Slave Select”,即从机选择信号。而在STM32F103系列的芯片中,NSS引脚不仅仅是一个普通IO引脚,而是专门用于SPI外设的从机选择信号输入口,被称为NSS软件控制位。

2、NSS的作用

SPI为一种多设备总线,多个从机设备需要共享同一个主机设备进行数据交互。在SPI的通信模式中需要根据数据传输需要,通过NSS引脚对某个从机进行选择,让该从机能够与主机进行数据交互。

可以这样理解:使用NSS引脚选择需要进行数据交互的从机,从而使得芯片的SPI控制器能够向该从机进行数据传输,实现与从机设备的通信。

3、NSS的控制方式

NSS引脚有两种控制方式:

第一种方式是硬件控制方式。当NSS引脚被设为输出模式时,通过直接设置GPIO引脚电平的方式实现NSS引脚的控制。这种方式在单主机控制多从机的时候,效果非常好,而且速度也比较快。

另一种方式是软件控制方式。通过在寄存器中设置NSS软件控制位控制该引脚的状态,该方式常用在多主机控制时,或者是主从机的切换控制时,具有较高的灵活性。

4、NSS的代码实现

代码实现过程具体如下:

首先要初始化SPI,并定义NSS引脚的模式:

GPIO_InitTypeDef GPIO_InitStructure;

SPI_InitTypeDef SPI_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

/* 配置NSS为PB12口即PC13口 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

/* 配置SPI相关的引脚,时钟,模式等 */

然后再在主程序中实现控制NSS引脚的方法:

void SPIx_NSS_Set(uint8_t num)

if (num)

GPIO_SetBits(GPIOB, GPIO_Pin_12); // 选中从机

else

GPIO_ResetBits(GPIOB, GPIO_Pin_12); // 不选中从机

在数据收发时使用该方法即可对NSS进行控制。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章