CH32V307 SPI NSS管脚硬件控制使用说明 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回

郭祥峰 关注 私信
[文章]

CH32V307 SPI NSS管脚硬件控制使用说明

CH32V307在使用SPI时,从机片选管脚在是使用时分为由软件控制和由硬件控制,用户手册上的描述如下
image.png

软件控制比较好理解,也是用的比较多的方式,就是可以将NSS管脚由任意管脚去实现,AF映射的NSS被释放。
但硬件控制好像就要复杂点,我针对的使用场景是SPI主机,NSS由AF映射的NSS管脚实现。从用户手册上的描述来看,我的理解是发送数据时,NSS管脚自动拉低(不需要软件控制管脚),传输结束时自动拉高(不需要软件控制管脚)。为了验证我的猜测,我做了如下测试。
首先使用由软件控制NSS测试SPI工作是正常的,在修改配置为由硬件控制,配置如下
Snipaste_2023-06-07_22-32-02.png

这里需要注意一下,在使用有硬件控制是,需要使用函数使能NSS输出(SPI_SSOutputCmd(SPI1, ENABLE);),并且要放在SPI_Init(SPI1, &SPI_InitStructure)前面,否则会初始化错误。
我首先在发送数据前使能SPI,发送完后不关闭SPI
Snipaste_2023-06-07_22-33-28.png

得到的波形如下
P30607-223309.jpg

发现NSS拉低后在发送结束后并没有自动拉高
然后我修改代码如下,在传输结束后,禁用SPI
Snipaste_2023-06-07_22-31-32.png

得到的波形如下
P30607-223113.jpg

在传输结束后,关闭SPI时NSS自动拉高了。
从上述现象可以知道,由硬件控制的NSS可以在发送时自动拉低NSS管教,但不能自动拉高NSS,想要NSS拉高,需要由禁用SPI来实现,并没有实现完全的硬件控制,使用中的效果和由软件控制效率上是一样的。
希望本贴对想用SPI硬件控制NSS的朋友有所帮助。

回帖(1)

挽你何用

2023-8-30 10:04:26
感谢介绍

更多回帖

×
发帖