推荐星级:
- 1
- 2
- 3
- 4
- 5
STM32的SPI中的NSS详细解释.
资料介绍
主设备和从设备在进行SPI通信的时候,从设备都有个CS片选信号,低电平有效,我们通常都要用这个NSS连到从设备的CS上。但是这里只是大体让大家大体明白怎么回事,东西很多,关于这个NSS还有很多东西呢,下面让我娓妮道来。
先看输入输出模式.
对于每个SPI的NSS可以输入,也可以输出。所谓输入,就是NSS的电平信号给自己,所谓输出,就是将NSS的电平信号发送出去,给从机。配置为输出,还是不输出,我们可以通过SPI_CR2寄存器的SSOE位。当SSOE为1时,并且SPI处于主模式控制时,NSS就输出低电平,也就是拉低,因此当其他SPI设备的NSS引脚与它相连,必然接收到低电平,则片选成功,都成为从设备了。NSS的输出就介绍到这里下面介绍NSS的输入。
我们都知道NSS输入又分为硬件输入和软件控制输入两种模式,那么就从这两种模式入手,来揭开它的面纱吧。
先说软件模式吧。
部分文件列表
文件名 | 大小 |
STM32的SPI中的NSS详细解释.pdf | 7K |
部分页面预览
(完整内容请下载后查看)stm32 SPI NSS的解释
这个 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片选成功。这个 GPIO可以是任何一个 GPIO口,当然我们上面提到当
为软件模式,外部 NSS引脚留作他用了,它就是一个 GPIO 了,我们也可以用它。这时候,
CS接到 GND 上,另一种方法是,用一个
GPIO口去输出低电平来控
SPI的主机配置
我们可以设置它推挽输出为低电平, 然后用线跟从机的 CS相连,那么就可以片选从芯片了。
再说说硬件模式。
对于主机,我们的 NSS可以直接接到高电平,对于从机,
当然我们上面提过当一个主机的 SSOE为 1 时,主机工作在输出模式,而且
们要让从机片选,只要将 CS接到主机的 NSS上,CS自动拉低。
这便是, ST公司设计的 STM32 SPI NSS的工作流程。下面用实例向大家介绍。
NSS接低就可以。
NSS拉低了,我
我们介绍一个 STM32 上 SPI1和 SPI2全双工通信的程序, 具体的程序,可以加 QQ843538946,
问我要。这里只介绍 SPI配置方面的程序。
全部评论(0)