Uart / Usart: используйте только Rx-pin

Я разрабатываю плату с микроконтроллером stm32f722 (64-контактная версия), и я не могу позволить себе тратить / не использовать какой-либо GPIO.

У меня следующий вопрос : есть ли возможность использовать только Rx-pin uart/usart, чтобы Tx-pin можно было использовать для чего-то еще (в моем случае SPI_SCK)?

Если я включу uart/usart в STM32CubeMx и перейду на вкладку «Конфигурация», я могу изменить «Направление данных» на «Только получение». Но это не отключает Tx-pin.

Другим способом может быть использование полудуплексного режима, но тогда в любом случае будет использоваться Tx-pin, и я не мог использовать его для SPI.

Примечание. Я все еще планирую свою собственную плату, и у меня нет оборудования для тестирования.

Рассматривали ли вы возможность прочитать техническое описание MCU?
Из справочного руководства : «Когда передатчик отключен, выходной контакт возвращается к своей конфигурации порта ввода-вывода». Я не уверен на 100%, поэтому я не публикую это как ответ, но я думаю, что это означает, что у вас может быть любая конфигурация для этого вывода. Таким образом, альтернативная функция, установленная на SPI_SCK, и UART не будут управлять этим выводом. Обязательно свяжитесь с самим ST.
или просто попробуйте.

Ответы (2)

Без изучения спецификаций для вашей конкретной детали было бы необычно, если бы она позволяла вам такую ​​гибкость. Хотя, согласно комментарию Бенса, это может быть.

Однако это не означает, что вы не можете использовать контакты для разных функций.

Ключевым моментом здесь является выделение некоторого вывода или нескольких выводов, чтобы позволить внешней схеме, мультиплексорам, вентилям и т. д. понять, как устройство в настоящее время использует выводы. Звучит так, как будто это означает связать еще пару булавок, но если у вас достаточно булавок, которыми вы можете поделиться, общее количество булавок можно уменьшить.

В случае с последовательными линиями вам, конечно, потребуется мультиплексировать их по времени. То есть вы не сможете осуществлять последовательную связь одновременно с использованием контактов для других функций.

На самом деле MCU U(S)ARTS довольно часто поддерживает полудуплексный режим, когда один или другой контакт используется как для передачи, так и для приема. Но если поддерживается, тогда вопрос заключается в том, используется ли пин-код, который хочет запрашивающий, или это другой.

Вам нужно будет проверить лист данных, чтобы узнать, поддерживается ли полудуплексный режим с использованием только вывода приема — например, вам может не повезти, и вы обнаружите, что он предлагается, но использует вывод передачи.

Однако есть решение, которое определенно сработает.

  1. Настройте контакт передачи для функции, отличной от USART, для которой вы хотите его использовать, поскольку STM32 допускает уникальное назначение любого контакта независимо от других.

  2. Настройте контакт RX для альтернативной функции приема USART.

  3. Когда вы хотите передавать, перенастройте контакт RX как GPIO и побитовый сигнал. Передача битового удара, возможно, чище, чем получение битовой выборки в любом случае, поскольку вы можете продолжать использовать прерывание приема USART, пока вы вовремя переконфигурируете вывод.

Одна вещь, которую вам нужно выяснить, это то, что происходит с USART, когда вы осуществляете побитовую передачу — не уверен, получите ли вы свои собственные передачи или нет, или даже попадете в состояние ошибки, но вы можете сбросить флаги, когда вы переключаетесь обратно в режим приема.

Мне нужно только получать данные и не хочу ничего отправлять. Таким образом, шаг 3 не требуется. Вы уверены, что использование вывода RX для USART не повлияет на функциональность часов SPI на выводе TX?