Я хотел бы знать, что означает «Альтернативная функция» в контексте портов ввода-вывода микроконтроллера.
Мне не нужно знать, как активировать его при подключении к периферийному устройству, но я хотел бы знать, что это такое и зачем оно нам нужно.
Многие выводы вашего микроконтроллера имеют разные функции. «Нормальная» функция будет относиться к GPIO, вводу/выводу общего назначения . В этом случае вы можете использовать эти контакты напрямую, записывая и читая из соответствующих регистров.
«Альтернативные» функции будут относиться к другим функциям, которые могут включать в себя I 2 C, SPI, USART, CCP, PWM, Clock, ADC и т. д. То, как вы управляете контактами в альтернативной функции, зависит от периферийного устройства, но это обычно сводится к записи и чтению из регистров специальных функций (SFR); периферийное устройство позаботится обо всем остальном.
Какая функция является стандартной после RESET, зависит (это не всегда GPIO!), и вы можете найти это в соответствующем описании. В большинстве случаев вы можете выбрать функцию, которую хотите использовать, «на лету», чтобы переключаться между периферийными устройствами.
Используя один вывод для нескольких периферийных устройств, вы можете создавать микроконтроллеры с очень широким набором функций. Однако, поскольку вы большую часть времени хотите, чтобы это периферийное устройство было постоянно подключено к этому контакту (и вы не хотите переключать функции на лету), вы не можете использовать все периферийные устройства в одной программе или, по крайней мере, не одновременно. время. С другой стороны, это не так уж и часто нужно.
Как отмечает Коннор , «альтернативная функция» может относиться и к чему-то другому, просто в несколько ином контексте: здесь речь идет не о том, какую функцию вы назначите булавке, а о том, какую булавку вы используете для функции. Это называется Peripheral Pin Select, и в основном означает, что вы можете выбрать, какой контакт использует ваше периферийное устройство. Например, вы можете использовать RS232 через RA1 и RA2 или через RB1 и RB2.
Смотрите ответ Коннора для более подробного описания (и проголосуйте за него).
В дополнение к ответу @CamilStaps есть еще один контекст, в котором «альтернативная функция вывода» является широко используемым термином.
Некоторые микроконтроллеры имеют возможность переключать свои внутренние периферийные устройства между несколькими наборами линий ввода-вывода. Таким образом, вы можете избежать проблем, если хотите использовать внутренние модули (SPI, I2C и т. д.), функции которых сопоставлены с одним и тем же набором контактов.
Как правило, существует управляющий регистр, который определяет, на какой набор контактов сопоставляются различные периферийные устройства.
Я знаю, что работал с микроконтроллером, у которого была эта возможность, но будь я проклят, если я вспомню конкретный номер детали.
Редактировать: нашел - он доступен на многих частях PIC24 и dsPIC:
Они называют это «Выбор периферийного контакта», но в основном это механизм для настройки альтернативных функций контакта.