Порты ввода вывода GPIO

Материал из MIK32 микроконтроллер
(перенаправлено с «Порты ввода вывода»)

Общая информация

Каждая линия любого порта может быть независимо от остальных выводов сконфигурирована как вход или как выход и управляться через регистры состояния. Если линия порта работает как вход, то можно считать её состояние из регистра статуса. Если линия порта работает как выход, то можно перевести её значение в состояние логического 0 или 1 записью в выходной регистр.

Выводы, помимо функции программного управления, могут управляться периферийными блоками, а так же иметь аналоговый функционал (ЦАП/АЦП). Каждый вывод снабжен так же встроенными отключаемыми подтяжками к Vdd и Vss.

Структура порта

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

Программное управление выводами

Введение

Каждый модуль ввода/вывода (GPIO) подключен к шине APB и управляет до 16 внешними выводами. Каждый из внешних выводов может управляться индивидуально.

Для работы с конфигурационными регистрами и операционными регистрами требуется подать соответствующие тактовые сигналы на эти блоки.

Регистры

Далее перечислены регистры модуля GPIO. Все регистры имеют разрядность соответствующую количествам выводов блока (16 или 8). Далее идет описание для 16-выводных портов, где верхние 16 бит регистров управления - зарезервированы, в случае 8-выводных портов - верхние 24 бита конфигурационных регистров зарезервированы.

Регистр GPIOx_SET_STATUS

Смещение: 0x00, Значение после подачи сброса: 0x0000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SS15 SS14 SS13 SS12 SS11 SS10 SS9 SS8 SS7 SS6 SS5 SS4 SS3 SS2 SS1 SS0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31:16 Зарезервировано

Биты 15:0 SSy - Биты установки порта в 1цу (y=0...15)

При записи:

  • 0: эффекта нет
  • 1: соответствующий вывод y порта x будет переведен в состояние логической 1

При чтении - состояние вывода y порта x.

Регистр GPIOx_RESET

Смещение: 0x04, Значение после подачи сброса: 0x0000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OR15 OR14 OR13 OR12 OR11 OR10 OR9 ORR8 OR7 OR6 OR5 OR4 OR3 OR2 OR1 OR0
w w w w w w w w w w w w w w w w

Биты 31:16 Зарезервировано

Биты 15:0 ORy - Биты установки порта в 0 (y=0...15)

При записи:

  • 0: эффекта нет
  • 1: соответствующий вывод y порта x будет переведен в состояние логического 0
Регистр GPIOx_SET_DIRECTION_OUT

Смещение: 0x08, Значение после подачи сброса: 0x0000FFFF;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DIR15 DIR14 DIR13 DIR12 DIR11 DIR10 DIR9 DIR8 DIR7 DIR6 DIR5 DIR4 DIR3 DIR2 DIR1 DIR0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31:16 Зарезервировано

Биты 15:0 DIRy - Биты установки порта в 0 (y=0...15)

При записи:

  • 0: эффекта нет
  • 1: соответствующий вывод y порта x будет переведен в состояние выхода

При чтении текущая конфигурация вывода y порта х

  • 0: вывод в режиме выхода
  • 1: вывод в режиме входа
Регистр GPIOx_SET_DIRECTION_IN

Смещение: 0x0C, Значение после подачи сброса: 0x0000FFFF;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DIR15 DIR14 DIR13 DIR12 DIR11 DIR10 DIR9 DIR8 DIR7 DIR6 DIR5 DIR4 DIR3 DIR2 DIR1 DIR0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31:16 Зарезервировано

Биты 15:0 DIRy - Биты установки порта в 0 (y=0...15)

При записи:

  • 0: эффекта нет
  • 1: соответствующий вывод y порта x будет переведен в состояние выхода

При чтении текущая конфигурация вывода y порта х

  • 0: вывод в режиме выхода
  • 1: вывод в режиме входа
Регистр GPIOx_OUTPUT

Смещение: 0x10, Значение после подачи сброса: 0x0000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OD15 OD14 OD13 OD12 OD11 OD10 OD9 OD8 OD7 OD6 OD5 OD4 OD3 OD2 OD1 OD0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31:16 Зарезервировано

Биты 15:0 ODy - Биты установки порта в 0 (y=0...15)

При записи:

  • 0: соответствующий вывод y порта x будет переведен в состояние 0
  • 1: соответствующий вывод y порта x будет переведен в состояние 1

При чтении текущее состояние вывода y порта х

  • 0: вывод в 0
  • 1: вывод в 1

Дополнительный/альтернативный функционал выводов

Введение

Помимо основной функции программного управления входы-выходы GPIO мультиплексированы с входами-выходами встроенных периферийных модулей. Назначение и схема мультеплексирования представлена в таблице выводов. Для управления функциями используются регистры конфигурации.

Ячейка ввода-вывода позволяет регулировать нагрузочную способность вывода с помощью специального регистра

А так же можно подключать резисторы подтяжки к питанию/земле активируя соответствующую функцию в соответствующем специальном регистре

Регистры

Далее перечислены регистры модуля PAD. Все регистры имеют разрядность соответствующую удвоенному количеству выводов соответствующего порта (32 или 16).

Регистр PADx_CFG

Смещение: 0x00 + x*4, Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
CFG15 CFG14 CFG13 CFG12 CFG11 CFG10 CFG9 CFG8
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CFG7 CFG6 CFG5 CFG4 CFG3 CFG2 CFG1 CFG0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 2y:2y+1 CFGy[0:1]: конфигурация вывода y, порта x:

  • 00 – первая функция (последовательный интерфейс)
  • 01 – вторая функция (порт о,щего назначения)
  • 10  – третья функция (последовательный интерфейс или таймер)
  • 11 – четвертая функция (аналоговый сигнал)

При записи меняет режим порта в выбранное состояние

При чтении - текущая конфигурация выводов порта

Регистр PADx_DS

Смещение: 0x0С + x*4, Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DS15 DS14 DS13 DS12 DS11 DS10 DS9 DS8
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DS7 DS6 DS5 DS4 DS3 DS2 DS1 DS0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 2y:2y+1 DSy[0:1]: конфигурация вывода y, порта x:

  • 00  – 2мА
  • 01  – 4мА
  • 10  – 8мА
  • 11  – 8мА

При записи меняет режим порта в выбранное состояние

При чтении - текущая конфигурация выводов порта

Регистр PADx_PUPD

Смещение: 0x18 + x*4, Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
PUPD15 PUPD14 PUPD13 PUPD12 PUPD11 PUPD10 PUPD9 PUPD8
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PUPD7 PUPD6 PUPD5 PUPD4 PUPD3 PUPD2 PUPD1 PUPD0
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 2y:2y+1 PUPDy[0:1]: конфигурация вывода y, порта x:

  • 00  – регистры подтяжки не подключаются
  • 01  – подключен регистр подтяжки к питанию
  • 10  – подключен регистр подтяжки к земле
  • 11  – зарезервировано

При записи меняет режим порта в выбранное состояние

При чтении - текущая конфигурация выводов порта