STM32F407-Discovery板上的SPI通信,设置软件slave管理位有什么含义?
For SPI communication on the STM32F407-Discovery board, what is the implication of setting the software slave management bit?
我正在学习嵌入式开发,我正在尝试使用 SPI 协议与发现板上的加速度计 (LIS3DSH) 进行通信。我只使用 CMSIS headers,所以我不得不直接与寄存器交互。
根据原理图,这些是电路板用于与加速度计通信的引脚:
- PA5: SPI1_SCK
- PA7: SPI1_MOSI
- PA6: SPI1_MISO
- PE3: CS_I2C/SPI
从我对SPI协议的理论理解来看,每当我想在主机和从机之间接收或发送数据时,我首先需要将CS引脚(PE3)拉低,然后再开始通信。 LIS3DSH 用户手册似乎也证实了这一点。
但是现在我对SSM的含义感到困惑。根据开发板的用户手册,这就是软件从属管理位的作用:
When the SSM bit is set, the NSS pin input is replaced with the value from the SSI bit.
NSS 引脚只是从 select 引脚,对吧?这意味着在这种情况下它是 PE3。
SSI 位是 SPI_CR1 寄存器的第 8 位。这是否意味着我应该改为切换此 SSI 位而不是 PE3?这没有意义,因为电路板如何知道 PE3 是相关的 CS 引脚?
那么 CS pin/line 和 SSM 位有什么关系(如果有的话)?
如果它们不相关,我是否需要将 PE3 引脚配置为交替功能模式和 pull-up,然后每次我需要使用 SPI 与加速度计通信时将其拉低?
NSS 引脚是一个 输入,当 SPI 外设处于 从模式 时,被其他设备用作 CS,或者可以用作输出以支持多主机配置。
如果您在单主机模式下操作 SPI,则根本不会使用该引脚。
此外 SPI1_NSS 是 PA4 或 PA15 的替代功能,因此与您的情况下 PE3 上的 CS GPIO 无关。在主机模式下,任何数量的可用 GPIO 引脚都可以用作同一 SPI 总线上每个外设的 CS 线,并由软件驱动 - 它不是 "alternate function",也不是其一部分或受其控制SPI 外围设备。
我正在学习嵌入式开发,我正在尝试使用 SPI 协议与发现板上的加速度计 (LIS3DSH) 进行通信。我只使用 CMSIS headers,所以我不得不直接与寄存器交互。
根据原理图,这些是电路板用于与加速度计通信的引脚:
- PA5: SPI1_SCK
- PA7: SPI1_MOSI
- PA6: SPI1_MISO
- PE3: CS_I2C/SPI
从我对SPI协议的理论理解来看,每当我想在主机和从机之间接收或发送数据时,我首先需要将CS引脚(PE3)拉低,然后再开始通信。 LIS3DSH 用户手册似乎也证实了这一点。
但是现在我对SSM的含义感到困惑。根据开发板的用户手册,这就是软件从属管理位的作用:
When the SSM bit is set, the NSS pin input is replaced with the value from the SSI bit.
NSS 引脚只是从 select 引脚,对吧?这意味着在这种情况下它是 PE3。
SSI 位是 SPI_CR1 寄存器的第 8 位。这是否意味着我应该改为切换此 SSI 位而不是 PE3?这没有意义,因为电路板如何知道 PE3 是相关的 CS 引脚?
那么 CS pin/line 和 SSM 位有什么关系(如果有的话)?
如果它们不相关,我是否需要将 PE3 引脚配置为交替功能模式和 pull-up,然后每次我需要使用 SPI 与加速度计通信时将其拉低?
NSS 引脚是一个 输入,当 SPI 外设处于 从模式 时,被其他设备用作 CS,或者可以用作输出以支持多主机配置。
如果您在单主机模式下操作 SPI,则根本不会使用该引脚。
此外 SPI1_NSS 是 PA4 或 PA15 的替代功能,因此与您的情况下 PE3 上的 CS GPIO 无关。在主机模式下,任何数量的可用 GPIO 引脚都可以用作同一 SPI 总线上每个外设的 CS 线,并由软件驱动 - 它不是 "alternate function",也不是其一部分或受其控制SPI 外围设备。