完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 912293097 于 2013-8-6 20:24 编辑
这个NSS到底是怎么作用呢?回答是片选。 主设备和从设备在进行SPI通信的时候,从设备都有个CS片选信号,低电平有效,我们通常都要用这个NSS连到从设备的CS上。但是这里只是大体让大家大体明白怎么回事,东西很多,关于这个NSS,还有很多东西呢,下面让我娓娓道来。 先看输入输出模式. 对于每个SPI的NSS可以输入,也可以输出。所谓输入,就是NSS的电平信号给自己,所谓输出,就是将NSS的电平信号发送出去,给从机。配置为输出,还是不输出,我们可以通过SPI_CR2寄存器的SSOE位。当SSOE为1时,并且SPI处于主模式控制时,NSS就输出低电平,也就是拉低,因此当其他SPI设备的NSS引脚与它相连,必然接收到低电平,则片选成功,都成为从设备了。NSS的输出就介绍到这里 下面介绍NSS的输入。 我们都知道NSS输入又分为硬件输入和软件控制输入两种模式,那么就从这两种模式入手,来揭开它的面纱吧。 先说软件模式吧。 1、 对于SPI主机来说,需要设置SPI_CR1寄存器的SSM为1和SSI位为1,SSM为1是为了使能软件管理。,NSS有内部和外部引脚。这时候,外部引脚留作他用(可以用来作为GPIO驱动从设备的片选信号)。内部NSS引脚电平则通过SPI_CRL寄存器的SSI位来驱动。SSI位为1是为了使NSS内电平为高电平。这时候,不免产生疑问,为什么主设备的内部NSS电平要为1呢? STM32手册上说,要保持MSTR和SPE位为1,也就是说要保持主机模式,只有NSS接到高电平信号时,这两位才能保持置1.也就是说对于STM32的SPI,要保持为主机状态,内部输入的NSS电平必须为高。当然这里在硬件模式下也是如此。 2、 对于SPI 从机来说 主机自己的内部NSS高电平解决了,那么SPI从机的NSS片选低电平也得解决啊。 如果从机选择STM32的一个SPI,譬如主机选为SPI1,从机选为SPI2,则要按照以下操作 手册说,NSS引脚在完成字节传输之前必须连接到一个低电平信号。在软件模式下,则需要设置SPI_CR1寄存器的SSM位为1(软件管理使能)和SSI位为0.果然如此。SSI必须要为0,也就是SPI2的片选为低,则片选成功。 若从机为一个其他的SPI芯片,譬如我那个ADXL345加速度传感器。那么,我们可以有两种方法 一种方法,是把芯片的CS接到GND上,另一种方法是,用一个GPIO口去输出低电平来控制CS片选成功。这个GPIO可以是任何一个GPIO口,当然我们上面提到当SPI的主机配置为软件模式,外部NSS引脚留作他用了,它就是一个GPIO了,我们也可以用它。这时候,我们可以设置它推挽输出为低电平,然后用线跟从机的CS相连,那么就可以片选从芯片了。 再说说硬件模式。 对于主机,我们的NSS可以直接接到高电平,对于从机,NSS接低就可以。 当然我们上面提过当一个主机的SSOE为1时,主机工作在输出模式,而且NSS拉低了,我们要让从机片选,只要将CS接到主机的NSS上,CS自动拉低。 这便是,ST公司设计的STM32 SPI NSS的工作流程。下面用实例向大家介绍。 我们介绍一个STM32上SPI1和SPI2全双工通信的程序。这里只介绍SPI配置方面的程序。
来自小组: 王奇 |
|
相关推荐
5 个讨论
|
|
最近在学STM32的SPI,mark一下
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1398 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1462 浏览 0 评论
STM32串口接受中断使用C++STL中的queue导致所有中断失效
8925 浏览 1 评论
3737 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1642 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-9 07:49 , Processed in 0.458457 second(s), Total 41, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191