完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以STM32F103RCT6芯片为例,查芯片手册,可以看到SPI1的NSS引脚对应PA4引脚,那么这个NSS引脚作用是什么?
SPI通信需要有MOSI、MISO、SCLK、CS(Chip Select)四个引脚。一般SPI的从机的片选端(CS)为低电平时,从机被选中,此时从机才能正常工作。所有的主机和从机其实都有片选信号,只有片选了,才能工作。而SPI的主机要正常工作,片选端需要为高电平。但是从STM32的数据手册中找不到SPI的CS引脚,其实文章开头提到的NSS引脚起到的就是CS引脚的作用。下面我们对主机的NSS引脚的配置进行分析: 在使用固件库对SPI进行配置时,调用的是SPI_Init函数,在对入口参数SPI_InitStruct的成员的有效性判断函数的定义中,我们可以查找到SPI_Mode成员的有效值为 #define SPI_Mode_Master ((uint16_t)0x0104) #define SPI_Mode_Slave ((uint16_t)0x0000) 而SPI_NSS成员的有效值为 #define SPI_NSS_Soft ((uint16_t)0x0200) #define SPI_NSS_Hard ((uint16_t)0x0000) 在调用SPI_Init配置SPI主机时,我们将SPI_Mode设置为SPI_Mode_Master,并将SPI_NSS设置为SPI_NSS_Soft即可。这其中的原理是什么呢? 根据SPI_Mode_Master和SPI_NSS_Soft的宏定义,实际上这两个参数将SPI_CR1寄存器的第2、8、9位设置为了1。位2是主设备选择位,查手册可知要配置为主机,显然要将此位置1。但仅配置这一位是不够的,上面提到NSS引相当于CS引脚的作用,在配置为主设备时,需要将其接高电平。一种方法是硬件上直接接高电平,也就是在芯片的外部把PA4引脚接到高电平。而我们这里的配置则采用了软件上的方法。CR1寄存器的第九位SSM实际上就决定了是通过软件的方法来配置NSS引脚的电平还是通过硬件的方法来配置NSS引脚的电平。我们使用的SPI_NSS_Soft 宏就是将第九位置位,选择使用软件方法将NSS引脚接高电平。 那么软件方法是什么意思?软件方法就是在我们把SSM位置位后,芯片外部的PA4引脚输入的电平就不再影响NSS引脚最终获得的电平,NSS引脚与CR1寄存器的第八位(SSI)自动进行了关联。NSS引脚的电平将由SSI位来决定。当SSI位置1时,就相当于给NSS引脚接了高电平,当SSI位置0时,就相当于给NSS引脚接了低电平,也就是说我们完全可以通过编程操作CR1寄存器的SSI位来实现将NSS引脚接到高电平,而无需在芯片外部进行实际电路的连接。我们调用SPI_Init函数时,SPI_Mode_Master宏将SSI位置1,因此这个宏相当于给NSS接了高电平,将这个SPI设置为了主机。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:21 , Processed in 0.859285 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号