打印
[N32G45x]

SPI软/硬NSS配置

[复制链接]
444|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1 NSS说明
NSS是片选管脚。分为内部管脚和外部管脚,内部管脚检测到高电平时,SPI工作在主模式;反之,工作在从模式。从设备的NSS管脚可以由主设备的一个标准 I/O 引脚来控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。
1.1 软件NSS模式
SPI_CTRL1寄存器的SSMEN=1启用软件从设备管理。
该模式下不使用NSS管脚,通过写 SPI_CTRL1 的 SSEL 位驱动内部NSS信号电平(主模式 SSEL=1,从模式SSEL=0)。
1.1.1 代码配置
以N32G457的SPI_FLASH例程为例。
1、初始化配置中选择软件NSS:
SPI_InitStructure.NSS           = SPI_NSS_SOFT;
2、配置PA3做片选脚,模式为GPIO_Mode_Out_PP,做普通GPIO口,根据数据手册可知PA3并非默认SPI引脚,软件片选时可使用任意引脚。
                              
3、根据时序要求,片选脚先在初始化中拉高。
    4、擦除/读/写数据/WriteEnable/WaitForWriteEnd等时,发送之前需要置低片选,结束再拉高。
1.2 硬件NSS模式
SPI_CTRL1 寄存器的 SSMEN=0 禁止软件从设备管理。
输入模式:配置为主模式、NSS 输出禁止(MSEL=1, SSOEN=0),允许操作于多主模式。主设备(从设备)在整个数据帧传输期间应把 NSS 脚外接到高电平(低电平)。
输出模式:配置为主模式、 NSS 输出使能(MSEL=1, SSOEN=1), SPI 作为主设备必须将 NSS 拉低,所有被设置为 NSS 硬件模式并与之相连的的 SPI 设备会检测到低电平,自动进入从设备状态。若主设备不能拉低 NSS,则进入从模式,并产生主模式失效错误 MODERR 位置‘1’。
8个时钟/16个时钟内不能发数据。
1.2.1 代码配置
以N32G457的SPI_FLASH例程为例,SPI接口做主机,使用输出模式。
1、初始化配置中选择软件NSS:
SPI_InitStructure.NSS           = SPI_NSS_HARD;
2、硬件NSS需要选择输入模式还是输出模式,此次是操作flash,应该配置输出模式。
3、配置GPIO,根据数据手册可知PA4是SPI1_NSS脚,即硬件片选脚。配置模式为GPIO_Mode_AF_PP,复用时NSS需配置空闲状态,空闲时NSS为1。
4、          在每一次操作后关闭SPI,操作前打开,防止SPI因为连续发字节,自动进入连续模式,片选无法拉高。

1.3 NSS模式选择
软件模式或硬件模式的选择,取决于通讯协议中是否需要 NSS 控制。如果不需要,可以选择软件模式,释放一个 GPIO 管脚另作他用。
软件NSS需要自己手动拉高或置低,实际直接连接内部SPI模块,选择片选时可任意GPIO。作为主机时,能接多个从设备。
硬件NSS会自动拉高或置低,通过固定GPIO连接至SPI模块,实际上还是通过软件NSS连接到SPI模块。作为主机时,只能接一个从设备。
目前我们芯片都是使用的软件片选,每个片选脚内部已经和SPI模块连接


使用特权

评论回复
沙发
ZG11211| | 2022-9-3 11:13 | 只看该作者
我用了发现不好使,数据写发送器之后,必须等数据发送完毕后才能拉高NSS,否则接收方接收不完整,以前用STM32设置成硬件NSS写完数据就可以走了,硬件自己发送完毕后拉高NSS。不知道是不是我设置错了

使用特权

评论回复
评论
咿呀咿呀哟rui 2022-9-14 15:48 回复TA
配置硬件片选脚的空闲电平了吗,可以发出代码看看 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:国民技术股份有限公司
简介:国民技术股份有限公司(简称:国民技术)2000年源于国家“909”集成电路专项工程成立,2010年创业板上市(股票代码:300077),是通用MCU、安全芯片领先企业和国家高新技术企业。

15

主题

26

帖子

0

粉丝