STM32F103 использует вывод MISO, когда SPI в полудуплексном режиме

#timer #stm32 #spi #pwm #stm32f1

#таймер #stm32 #spi #шим #stm32f1

Вопрос:

Я использую STM32F103C8T6 с переназначенным SPI1 и в полудуплексном режиме (вывод MISO не используется SPI). Я хотел бы использовать вывод MISO (PB4) для генерации PWM с помощью переназначенного TIM3, но я не могу заставить его работать, пока синхронизирован SPI1. Итак, есть ли способ использовать вывод MISO SPI в полудуплексном режиме для другой функции автофокусировки, пока SPI остается синхронизированным?

UPD. Я обнаружил, что вывод MISO может использоваться в качестве GPIO, когда SPI в полудуплексном режиме master

Комментарии:

1. «Я не могу заставить его работать». Можете ли вы подробно описать, что не работает? Например, работает ли ваша генерация PWN только тогда, когда SPI1 не синхронизирован? Какова конфигурация SPI: master или slave? Вы используете свой собственный код или HAL? Кроме того, добавьте настройки GPIO в свой anwer

2. ШИМ-выход в норме все время, когда я продолжаю синхронизировать SPI. Если я включаю синхронизацию SPI, вывод PWM разряжается (довольно медленно, как и разрядка емкости), пока я снова не отключу синхронизацию SPI. SPI настроен как master, BIDIMODE = 0 (и корректно работает в полудуплексном режиме). Вывод MISO настроен как двухтактный, поскольку альтернативной функцией является PWM.

3. Работаете ли вы над прикладной платой, подобной Nucleo или подобной? при использовании внешних проводов могут возникать некоторые электрические помехи от одного провода к другому. стоит попробовать следующее: скрутите каждый провод другим проводом, подключенным к земле.

4. Я предполагаю, что ваш STM32 является ведущим SPI? Что означает BIDIMODE = 0? (Я не знаю этот конкретный STM32, а на STM32H7 биты режима связи SPI означают полный дуплекс, когда 00)

5. Я использую плату bluepill stm32, поэтому есть прямые соединения без перекрестного влияния. SPI работает в режиме master, BIDIMODE = 1 для полудуплекса (извините, я ошибся в последнем сообщении). Я также обнаружил, что вывод SPI NSS также блокируется SPI, даже если он не используется. Но оба вывода MISO и NSS могут использоваться как обычный GPIO (не AF), когда SPI синхронизирован. Таким образом, в качестве решения проблемы эти выводы могут управляться вручную при прерывании таймера.