Для связи SPI на плате STM32F407-Discovery, каково значение установки бита управления программным обеспечением?
Я изучаю разработку встраиваемых систем и пытаюсь связаться с акселерометром (LIS3DSH) на плате обнаружения, используя протокол SPI. Я использую только заголовки CMSIS, так что я вынужден напрямую взаимодействовать с регистрами.
Согласно схеме, эти контакты используются платой для связи с акселерометром:
- PA5: SPI1_SCK
- PA7: SPI1_MOSI
- PA6: SPI1_MISO
- PE3: CS_I2C / SPI
Исходя из моего теоретического понимания протокола SPI, всякий раз, когда я хочу получать или передавать данные между ведущим и ведомым устройствами, мне сначала нужно нажать на вывод CS (PE3), а затем начать связь. Это подтверждается также руководством пользователя LIS3DSH.
Но теперь я запутался в том, что означает SSM. Согласно руководству пользователя платы, вот что делает бит управления программным обеспечением:
Когда бит SSM установлен, вход контакта NSS заменяется значением из бита SSI.
Вывод NSS - это не что иное, как выбор ведомого, верно? Что означает, что это PE3 в этом случае.
Бит SSI - это бит 8 в регистре SPI_CR1. Означает ли это, что я должен вместо этого переключить этот бит SSI вместо PE3? Это не имеет смысла, потому что как плата узнает, что PE3 является соответствующим выводом CS?
Так как же связаны между собой вывод / линия CS и бит SSM?
Если они не связаны, нужно ли настроить вывод PE3 с альтернативным режимом работы и в качестве подтягивания, а затем понижать его каждый раз, когда мне нужно общаться через SPI с акселерометром?
1 ответ
Вывод NSS является входом, используемым в качестве CS некоторым другим устройством, когда периферийное устройство SPI находится в подчиненном режиме, или может использоваться в качестве выхода для поддержки конфигураций с несколькими хозяевами.
Если вы работаете с SPI в режиме с одним мастером, этот вывод вообще не используется.
Более того, SPI1_NSS - это альтернативная функция PA4 или PA15, поэтому в вашем случае она не связана с CS GPIO на PE3. В режиме мастера любое количество доступных выводов GPIO может использоваться в качестве линий CS для каждого периферийного устройства на одной и той же шине SPI и управляется программно - это не "альтернативная функция", не часть или не контролируется SPI периферийный.