5.1. УВВ общего назначения
УВВ общего назначения микроконтроллеров STM32 состоят из портов ввода-вывода (ПВВ) общего назначения, контроллера внешних прерываний, аналогово-цифровых преобразователей, таймеров общего назначения, расширенного таймера и часов реального времени с энергонезависимыми (за счет резервирования питания) регистрами и входом обнаружения вмешательства.
5.1.1. Порты ввода-вывода общего назначения
У МК STM32 предусмотрено до 80 двунаправленных линий ввода-вывода. Все линии ввода-вывода разделены на 5 портов по 16 линий ввода-вывода в каждой.
Каждая цифровая линия ввода-вывода может выполнять функцию линии ввода-вывода общего назначения или альтернативную функцию. Каждый из выводов может выполнять дополнительную функцию одного из 16 входов внешних прерываний
Данные порты называются A…E и совместимы с напряжением 5В. Многие из внешних выводов могут выполнять альтернативную функцию линии ввода-вывода встроенного УВВ, например, модуля УСАПП или I2C. Кроме того, 16 входных линий встроенного блока внешних прерываний могут быть соединены с любыми из линиями портов ввода-вывода.
Каждый ПВВ поддерживает возможность раздельной конфигурации линий на ввод или на вывод. Кроме того, предусмотрены регистры как для записи целых слов, так и для воздействия на отдельные биты. После завершения конфигурации доступ к ней можно заблокировать
У каждого ПВВ имеется два 32-битных конфигурационных регистра. Совместно они образуют 64-битный конфигурационный регистр. Эти 64 бита разделены на 4-битные поля, позволяющие настроить соответствующую им линию ввода-вывода. В свою очередь, 4-битное поле конфигурации состоит из 2-битного поля режима и 2-битного поля конфигурации. Поле режима позволяет указать, в каком направлении работает линия: на ввод или на вывод, а поле конфигурации позволяет настроить характеристики управления:
- если линия настроена как вход, то к ней можно подключить подтягивающий к плюсу или минусу резистор;
- линия, настроенная на вывод, может быть либо двухтактной, либо с открытым стоком. Для линий вывода можно также указать ее максимальное быстродействие: 2, 10 или 50 МГц.
Конфигурация |
CNF1 |
CNF0 |
MOD1 |
MOD0 |
Аналоговый вход |
0 |
0 |
00 |
Плавающий вход (состояние после сброса) |
0 |
1 |
Вход с подтягиванием к плюсу |
1 |
0 |
Вход с подтягиванием к минусу |
1 |
0 |
Двухтактный выход |
0 |
0 |
00: резерв
01: 10МГц
10: 2МГц
11: 50МГц |
Выход с открытым стоком |
0 |
1 |
Двухтактный выход альтернат. функции |
1 |
0 |
Выход с открытым стоком альтернат. функции |
1 |
1 |
После завершения настройки портов, конфигурационные параметры можно защитить. Для этого необходимо выполнить запись в регистр блокировки конфигурации. В этом регистре для каждого вывода предусмотрен бит блокировки. После его установки блокируется возможность записи в соответствующие поля конфигурации и режима. После установки всех требуемых бит блокировки, необходимо в бит 16 регистра блокировки записать последовательность 1, 0, 1. Этим будет активизирована блокировка. Убедиться в активизации блокировки можно, если сразу после записи выполнить подряд два считывания этого же бита. Считывание значений 0, 1 свидетельствует об успешной активации блокировки. Доступ к линиям ввода-вывода осуществляется через регистры ввода и вывода данных. Для выполнения действий над отдельными битами можно использовать либо поддерживаемый ядром Cortex способ "bit banding" применительно к регистрам ввода и вывода, либо воспользоваться двумя специальными регистрами битовой обработки. Регистр установки/сброса бит - 32-битный регистр. Верхние 16 бит связаны с каждой из линий ПВВ. Запись в них логической 1 приводит к сбросу соответствующей линии ввода-вывода. Идентично этому, запись логической 1 в любой из младших 16 бит приведет к установке соответствующей линии ввода-вывода. Второй регистр битовой обработки - регистр сброса бит. Этот регистр 16-битный. Запись в его биты логических 1 приводит к сбросу соответствующих линий ввода-вывода. Сочетание регистров ПВВ, способа "bit banding" и регистров битовой обработки предоставляют пользователю отличные возможности управления всеми линиями ввода-вывода МК STM32 и могут чрезвычайно эффективно использоваться в применениях с интенсивным использованием линий ввода-вывода.
|