Порты ввода вывода GPIO: различия между версиями
м (→Регистры) |
Sh-sergey (обсуждение | вклад) Нет описания правки |
||
(не показано 6 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
=== Общая информация === | === Общая информация === | ||
Каждая линия любого порта может быть независимо от остальных выводов сконфигурирована как вход или как выход и управляться через регистры состояния. Если линия порта работает как вход, то можно считать её состояние из регистра статуса. Если линия порта работает как выход, то можно перевести её значение в состояние логического 0 или 1 записью в выходной регистр. | Каждая линия любого порта может быть независимо от остальных выводов сконфигурирована как вход или как выход и управляться через регистры состояния. Если линия порта работает как вход, то можно считать её состояние из регистра статуса. Если линия порта работает как выход, то можно перевести её значение в состояние логического 0 или 1 записью в выходной регистр. | ||
Выводы, помимо функции программного управления, могут управляться периферийными блоками, а так же иметь аналоговый функционал (ЦАП/АЦП) | Выводы, помимо функции программного управления, могут управляться периферийными блоками, а так же иметь аналоговый функционал (ЦАП/АЦП). Каждый вывод снабжен так же встроенными отключаемыми подтяжками к Vdd и Vss. | ||
=== Программное управление выводами === | === Программное управление выводами === | ||
Строка 18: | Строка 12: | ||
==== Регистры ==== | ==== Регистры ==== | ||
Далее перечислены регистры модуля GPIO. Все регистры имеют разрядность соответствующую количествам выводов блока (16 или 8). | Далее перечислены регистры модуля GPIO. Все регистры имеют разрядность соответствующую количествам выводов блока (16 или 8). Далее идет описание для 16-выводных портов, где верхние 16 бит регистров управления - зарезервированы, в случае 8-выводных портов - верхние 24 бита конфигурационных регистров зарезервированы. | ||
===== Регистр GPIOx_SET_STATUS ===== | ===== Регистр GPIOx_SET_STATUS ===== | ||
Строка 191: | Строка 185: | ||
===== Регистр GPIOx_SET_DIRECTION_OUT ===== | ===== Регистр GPIOx_SET_DIRECTION_OUT ===== | ||
Смещение: 0x08, Значение после подачи сброса: | Смещение: 0x08, Значение после подачи сброса: 0x0000FFFF; | ||
{| class="wikitable" | {| class="wikitable" | ||
|31 | |31 | ||
Строка 279: | Строка 273: | ||
===== Регистр GPIOx_SET_DIRECTION_IN ===== | ===== Регистр GPIOx_SET_DIRECTION_IN ===== | ||
Смещение: 0x0C, Значение после подачи сброса: | Смещение: 0x0C, Значение после подачи сброса: 0x0000FFFF; | ||
{| class="wikitable" | {| class="wikitable" | ||
|31 | |31 | ||
Строка 557: | Строка 551: | ||
|rw | |rw | ||
|} | |} | ||
Биты 2y:2y+1 | Биты 2y:2y+1 '''CFGy[0:1]''': конфигурация вывода y, порта x: | ||
* 00 – первая функция (последовательный интерфейс) | * 00 – первая функция (последовательный интерфейс) | ||
Строка 658: | Строка 652: | ||
|rw | |rw | ||
|} | |} | ||
Биты 2y:2y+1 | Биты 2y:2y+1 '''DSy[0:1]''': конфигурация вывода y, порта x: | ||
* 00 – 2мА | * 00 – 2мА | ||
Строка 759: | Строка 753: | ||
|rw | |rw | ||
|} | |} | ||
Биты 2y:2y+1 | Биты 2y:2y+1 '''PUPDy[0:1]''': конфигурация вывода y, порта x: | ||
* 00 – регистры подтяжки не подключаются | * 00 – регистры подтяжки не подключаются |
Текущая версия от 13:44, 17 июля 2024
Общая информация
Каждая линия любого порта может быть независимо от остальных выводов сконфигурирована как вход или как выход и управляться через регистры состояния. Если линия порта работает как вход, то можно считать её состояние из регистра статуса. Если линия порта работает как выход, то можно перевести её значение в состояние логического 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 – зарезервировано
При записи меняет режим порта в выбранное состояние
При чтении - текущая конфигурация выводов порта