Я разрабатываю плату с микроконтроллером stm32f722 (64-контактная версия), и я не могу позволить себе тратить / не использовать какой-либо GPIO.
У меня следующий вопрос : есть ли возможность использовать только Rx-pin uart/usart, чтобы Tx-pin можно было использовать для чего-то еще (в моем случае SPI_SCK)?
Если я включу uart/usart в STM32CubeMx и перейду на вкладку «Конфигурация», я могу изменить «Направление данных» на «Только получение». Но это не отключает Tx-pin.
Другим способом может быть использование полудуплексного режима, но тогда в любом случае будет использоваться Tx-pin, и я не мог использовать его для SPI.
Примечание. Я все еще планирую свою собственную плату, и у меня нет оборудования для тестирования.
Без изучения спецификаций для вашей конкретной детали было бы необычно, если бы она позволяла вам такую гибкость. Хотя, согласно комментарию Бенса, это может быть.
Однако это не означает, что вы не можете использовать контакты для разных функций.
Ключевым моментом здесь является выделение некоторого вывода или нескольких выводов, чтобы позволить внешней схеме, мультиплексорам, вентилям и т. д. понять, как устройство в настоящее время использует выводы. Звучит так, как будто это означает связать еще пару булавок, но если у вас достаточно булавок, которыми вы можете поделиться, общее количество булавок можно уменьшить.
В случае с последовательными линиями вам, конечно, потребуется мультиплексировать их по времени. То есть вы не сможете осуществлять последовательную связь одновременно с использованием контактов для других функций.
Вам нужно будет проверить лист данных, чтобы узнать, поддерживается ли полудуплексный режим с использованием только вывода приема — например, вам может не повезти, и вы обнаружите, что он предлагается, но использует вывод передачи.
Однако есть решение, которое определенно сработает.
Настройте контакт передачи для функции, отличной от USART, для которой вы хотите его использовать, поскольку STM32 допускает уникальное назначение любого контакта независимо от других.
Настройте контакт RX для альтернативной функции приема USART.
Когда вы хотите передавать, перенастройте контакт RX как GPIO и побитовый сигнал. Передача битового удара, возможно, чище, чем получение битовой выборки в любом случае, поскольку вы можете продолжать использовать прерывание приема USART, пока вы вовремя переконфигурируете вывод.
Одна вещь, которую вам нужно выяснить, это то, что происходит с USART, когда вы осуществляете побитовую передачу — не уверен, получите ли вы свои собственные передачи или нет, или даже попадете в состояние ошибки, но вы можете сбросить флаги, когда вы переключаетесь обратно в режим приема.
Спехро Пефхани
Бенс Кауликс
Старожил