SPI的NSS 脉冲模式的作用

在STM32F767的中文参考手册中增加了NSSP Mode 设置:
在这里插入图片描述
以下是STM32F7系列的中文参考手册中关于NSSP Mode的描述:

该模式通过 SPIx_CR2 寄存器中的 NSSP 位来激活,只有将 SPI 接口配置为 Motorola SPI 主模式 (FRF=0)
且在第一个边沿捕捉时,该模式才起作用(SPIx_CR1 CPHA = 0,CPOL 设置忽略)。激活后,当 NSS
至少保持一个时钟周期的高电平状态时,两个连续的数据帧 传输间将生成 NSS 脉冲。该模式下,从器件可以锁存数据。NSSP
脉冲模式旨在用于具有 一个主器件-从器件对的应用。

在这里插入图片描述
对于我们大多数的SPI期间,基本上都是传输开始把NSS拉低,传输完成再拉高。
在这里插入图片描述
但是在某些串行外设接口上,比如74HC595,发送一个byte的代码如下:

void HC595SendData(unsigned char SendVal)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        if((SendVal<<i)&0x80)MOSIO=1;
        else MOSIO=0;
        S_CLK=0;
        NOP();
        NOP();
        S_CLK=1;
    }
    R_CLK=0;
    NOP();
    NOP();
    R_CLK=1;
}

其可以认为是一个工作在Only Transmit模式下的主设备,MOSIO是主机数据输出,S_CLK是时钟输出,单设备不需要 NSS,注意其R_CLK,当R_CLK脉冲发出时,移位寄存器74HC595才会把数据发送出去并重新锁存,所以这里NSSP,可以完美的与74HC595呼应。
只是我们在大多数情况下用不到而已。

### STM32CubeMX 中 SPINSS 引脚配置 在 STM32CubeMX 配置工具中,对于 SPI 接口的 NSS (Slave Select) 引脚有多种配置方式可以选择。这些选项允许开发者根据具体的应用需求灵活调整硬件行为。 #### 1. 硬件 NSS 引脚管理 当选择 **Hardware** 模式时,NSS 引脚由硬件自动控制。这意味着,在主设备发送数据之前会拉低该引脚信号线;而在传输完成后将其恢复高电平状态[^1]。这种模式适用于那些希望减少软件干预程度的设计场景下。 #### 2. 软件 NSS 控制 如果选择了 **Software** 模式NSS,则意味着通过编程手段手动操作此引脚的状态变化。这种方式给予程序员更大的灵活性去定制化通信协议逻辑,比如实现多从机的选择机制等复杂功能[^2]。 #### 3. 内部上拉/下拉电阻设置 除了上述两种基本的工作模式之外,还可以进一步指定是否启用内部上下拉电阻来增强电路稳定性。这通常是在物理连接不够稳固的情况下考虑的因素之一[^4]。 ```c // 示例代码展示如何初始化SPI并配置NSS为硬件模式 void MX_SPI_Init(void){ hspi.Instance = SPIx; hspi.Init.Mode = SPI_MODE_MASTER; // 或者是SPI_MODE_SLAVE取决于应用场景 hspi.Init.Direction = SPI_DIRECTION_2LINES; hspi.Init.DataSize = SPI_DATASIZE_8BIT; hspi.Init.CLKPolarity = SPI_POLARITY_LOW; hspi.Init.CLKPhase = SPI_PHASE_1EDGE; hspi.Init.NSS = SPI_NSS_HARD_OUTPUT; // 设置为硬件NSS输出模式 ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值