Порты ввода вывода GPIO: различия между версиями
Строка 654: | Строка 654: | ||
* 10 – 8мА, | * 10 – 8мА, | ||
* 11 – 8мА, | * 11 – 8мА, | ||
При записи меняет режим порта в выбранное состояние | |||
При чтении - текущая конфигурация выводов порта | |||
===== Регистр PADx_PUPD ===== | |||
Cмещение: 0x18 + x*4, Значение после подачи сброса: 0x00000000; | |||
{| class="wikitable" | |||
|31 | |||
|30 | |||
|29 | |||
|28 | |||
|27 | |||
|26 | |||
|25 | |||
|24 | |||
|23 | |||
|22 | |||
|21 | |||
|20 | |||
|19 | |||
|18 | |||
|17 | |||
|16 | |||
|- | |||
| colspan="2" |PUPD15 | |||
| colspan="2" |PUPD14 | |||
| colspan="2" |PUPD13 | |||
| colspan="2" |PUPD12 | |||
| colspan="2" |PUPD11 | |||
| colspan="2" |PUPD10 | |||
| colspan="2" |PUPD9 | |||
| colspan="2" |PUPD8 | |||
|- | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|} | |||
{| class="wikitable" | |||
|15 | |||
|14 | |||
|13 | |||
|12 | |||
|11 | |||
|10 | |||
|9 | |||
|8 | |||
|7 | |||
|6 | |||
|5 | |||
|4 | |||
|3 | |||
|2 | |||
|1 | |||
|0 | |||
|- | |||
| colspan="2" |PUPD7 | |||
| colspan="2" |PUPD6 | |||
| colspan="2" |PUPD5 | |||
| colspan="2" |PUPD4 | |||
| colspan="2" |PUPD3 | |||
| colspan="2" |PUPD2 | |||
| colspan="2" |PUPD1 | |||
| colspan="2" |PUPD0 | |||
|- | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|rw | |||
|} | |||
Биты 2y:2y+1: '''PUPDy[0:1]''': конфигурация порта x, вывода y: | |||
* 00 –регистры подтяжки не подключаются, | |||
* 01 – подключен регистр подтяжки к питанию, | |||
* 10 – подключен регистр подтяжки к земле, | |||
* 11 – зарезервировано | |||
При записи меняет режим порта в выбранное состояние | При записи меняет режим порта в выбранное состояние | ||
При чтении - текущая конфигурация выводов порта | При чтении - текущая конфигурация выводов порта |
Версия от 15:13, 7 апреля 2023
Программное управление выводами
Введение
Каждый модуль ввода/вывода (GPIO) подключен к шине APB и управляет до 16 внешними выводами. Каждый из внешних выводов может управляться индивидуально.
Каждый вывод снабжен встроенными отключаемыми подтяжками к Vdd и Vss.
Выводы помимо функции программного управления так же могут управляться периферийными блоками, а так же иметь аналоговый функционал (ЦАП/АЦП)
Регистры
Далее перечислены регистры модуля GPIO. Все регистры имеют разрядность соответствующую количествам выводов блока.
Регистр GPIOx_SET_STATUS
Cмещение: 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 |
OSR15 | OSR14 | OSR13 | OSR12 | OSR11 | OSR10 | OSR9 | OSR8 | OSR7 | OSR6 | OSR5 | OSR4 | OSR3 | OSR2 | OSR1 | OSR0 |
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:16 Зарезервировано
Биты 15:0 OSRy - Биты установки порта в 1цу (y=0...15)
При записи:
- 0: эффекта нет
- 1: соответствующий вывод y порта x будет переведен в состояние логической 1
При чтении - состояние вывода y порта x.
Регистр GPIOx_CLEAR
Cмещение: 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 |
ORR15 | ORR14 | ORR13 | ORR12 | ORR11 | ORR10 | ORR9 | ORR8 | ORR7 | ORR6 | ORR5 | ORR4 | ORR3 | ORR2 | ORR1 | ORR0 |
w | w | w | w | w | w | w | w | w | w | w | w | w | w | w | w |
Биты 31:16 Зарезервировано
Биты 15:0 OSRy - Биты установки порта в 0 (y=0...15)
При записи:
- 0: эффекта нет
- 1: соответствующий вывод y порта x будет переведен в состояние логического 0
Регистр GPIOx_SET_DIRECTION_OUT
Cмещение: 0x08, Значение после подачи сброса: 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 |
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
Cмещение: 0x0C, Значение после подачи сброса: 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 |
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
Cмещение: 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 |
ODR15 | ODR14 | ODR13 | ODR12 | ODR11 | ODR10 | ODR9 | ODR8 | ODR7 | ODR6 | ODR5 | ODR4 | ODR3 | ODR2 | ODR1 | ODR0 |
rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw | rw |
Биты 31:16 Зарезервировано
Биты 15:0 ODRy - Биты установки порта в 0 (y=0...15)
При записи:
- 0: соответствующий вывод y порта x будет переведен в состояние 0
- 1: соответствующий вывод y порта x будет переведен в состояние 1
При чтении текущее состояние вывода y порта х
- 0: вывод в 0
- 1: вывод в 1
Дополнительный функционал выводов
Введение
Помимо основной функции программного управления входы-выходы GPIO мультиплексированы с входами-выходами встроенных периферийных модулей. Назначение и схема мультеплексирования представлена в таблице выводов. Для управления функциями используются регистры конфигурации.
Ячейка ввода-вывода позволяет регулировать нагрузочную способность вывода с помощью специального регистра
А так же можно подключать резисторы подтяжки к питанию/земле активируя соответствующую функцию в соответствующем специальном регистре
Регистры
Регистр PADx_CFG
Cмещение: 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]: конфигурация порта x, вывода y:
- 00 – первая функция (последовательный интерфейс)
- 01 – вторая функция (порт ощего назначения)
- 10 – третья функция (последовательный интерфейс или таймер)
- 11 – четвертая функция (аналоговый сигнал)
При записи меняет режим порта в выбранное состояние
При чтении - текущая конфигурация выводов порта
Регистр PADx_DS
Cмещение: 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]: конфигурация порта x, вывода y:
- 00 – 2мА,
- 01 – 4мА,
- 10 – 8мА,
- 11 – 8мА,
При записи меняет режим порта в выбранное состояние
При чтении - текущая конфигурация выводов порта
Регистр PADx_PUPD
Cмещение: 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]: конфигурация порта x, вывода y:
- 00 –регистры подтяжки не подключаются,
- 01 – подключен регистр подтяжки к питанию,
- 10 – подключен регистр подтяжки к земле,
- 11 – зарезервировано
При записи меняет режим порта в выбранное состояние
При чтении - текущая конфигурация выводов порта