打印

GD32里SPI的SWNSS是软件NSS控制吗?

[复制链接]
921|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hjz21|  楼主 | 2023-11-5 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,
GD32F150,SPI设置成MASTER模式,我用SWNSS比特不能控制NSS脚的电平?

我在配置SPI是设置:
spi_init_struct.nss                  = SPI_NSS_SOFT;  //设置为软件模式 ,即SWNSSEN
spi_init(SPI1, &spi_init_struct);       
spi_nss_output_enable(SPI1);       //允许驱动NSS
spi_enable(SPI1);
然后调用
spi_nss_internal_high(SPI1); //SWNSS设置
spi_nss_internal_low(SPI1); //SWNSS设置
发现NSS脚不变化。

当ENABLE的时候NSS脚拉低,DISABLE的时候,NSS拉高。
似乎和SWNSS比特位的设置没有关系。

我的问题是:SWNSS不是软件模式设置NSS脚电平的么?

使用特权

评论回复
沙发
zeshoufx| | 2023-11-7 11:40 | 只看该作者
NSS引脚配置部分程序没看到,,,需要配置为推挽输出,,而不是复用推挽输出

使用特权

评论回复
板凳
两只袜子| | 2023-11-8 10:21 | 只看该作者
配置检查,如时钟极性、时钟相位等。错误的配置可能会影响NSS脚的行为。

使用特权

评论回复
地板
jcky001| | 2023-11-8 10:21 | 只看该作者
请确保NSS引脚在硬件层面上是可以配置为推挽输出的。如果NSS引脚被固定为输入,那么无论你在软件中如何尝试,都无法改变其电平状态。

使用特权

评论回复
5
elephant00| | 2023-11-8 10:22 | 只看该作者
在调用spi_nss_internal_high(SPI1)和spi_nss_internal_low(SPI1)之前是否已经正确初始化了SPI接口。这些函数应该在spi_init(SPI1, &spi_init_struct);之后被调用。

使用特权

评论回复
6
cr315| | 2023-11-8 12:00 | 只看该作者
在某些情况下,可能存在一定的延迟。尝试加入适当的延迟(例如使用for循环进行一定次数的延时)来看看是否可以解决问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

145

帖子

1

粉丝