Благодаря предыдущей статье, у нас теперь есть базовые представления об интерфейсе UART. Руководствуясь ими и даташитом на контроллер STM32F100RBT6B попробуем разобраться, как что-то передать через UART в компьютер и наоборот, заставить контроллер принять что-то от компьютера. Начать нужно с того, что UART интерфейс в контроллерах STM32 не один, в вышеупомянутом контроллере их аж три штуки. Я планирую использовать UART1, следовательно передающий провод (TxD) от USB-UART преобразователя я подсоединяю к ноге контроллера работающей на приём (PA10), а передающую ногу (PA9) я подключаю ко входу (RxD) преобразователя USB-UART. Для работы с этим интерфейсом существует великое множество регистров. Для облегчения работы программиста, вместе с CooCox’ом поставляется библиотека предназначенная для работы с UART’ом. Я довольно хорошо изучил её и она мне понравилась, но для лучшего понимания принципов её работы нужно вкратце познакомится с регистрами. В следующей статье, в которой будет описан практический пример использования UART’a, я буду использовать именно её. Для начала стоит сказать что нужно настроить чтоб интерфейс заработал:
- Включить тактирование порта А
- Настроить ногу PA9 как выход push-pull в альтернативном режиме. Частота 50 МГц
- Настроить ногу PA10 как вход без подтяжки
- Включить тактирование UART1
- Настроить параметры UART1: Скорость, кол-во стоп бит, проверку четности итд.
С первыми четырьмя пунктами проблем быть не должно, всё это знакомо из статьи про портымикроконтроллера, а вот с пятым пунктом немного сложнее, но попробуем разобраться.