Регистры PIO RP2350
Регистры трёх блоков PIO RP2350: всё, что было у RP2040, плюс одновременный запуск автоматов соседних блоков, сдвиг окна выводов GPIOBASE, маска входов IN_COUNT, прямой доступ к ячейкам FIFO приёма и все восемь флагов IRQ на прерываниях.
Содержание
- Регистры блока
- PIO_CTRL
- PIO_FSTAT
- PIO_FDEBUG
- PIO_FLEVEL
- PIO_TXFn
- PIO_RXFn
- PIO_IRQ
- PIO_IRQ_FORCE
- PIO_INPUT_SYNC_BYPASS
- PIO_DBG_PADOUT
- PIO_DBG_PADOE
- PIO_DBG_CFGINFO
- PIO_INSTR_MEMn
- PIO_SMn_CLKDIV
- PIO_SMn_EXECCTRL
- PIO_SMn_SHIFTCTRL
- PIO_SMn_ADDR
- PIO_SMn_INSTR
- PIO_SMn_PINCTRL
- PIO_RXF0_PUTGET0
- PIO_RXF0_PUTGET1
- PIO_RXF0_PUTGET2
- PIO_RXF0_PUTGET3
- PIO_RXF1_PUTGET0
- PIO_RXF1_PUTGET1
- PIO_RXF1_PUTGET2
- PIO_RXF1_PUTGET3
- PIO_RXF2_PUTGET0
- PIO_RXF2_PUTGET1
- PIO_RXF2_PUTGET2
- PIO_RXF2_PUTGET3
- PIO_RXF3_PUTGET0
- PIO_RXF3_PUTGET1
- PIO_RXF3_PUTGET2
- PIO_RXF3_PUTGET3
- PIO_GPIOBASE
- PIO_INTR
- PIO_IRQ0_INTE
- PIO_IRQ0_INTF
- PIO_IRQ0_INTS
- PIO_IRQ1_INTE
- PIO_IRQ1_INTF
- PIO_IRQ1_INTS
В RP2350 три блока PIO — PIO0, PIO1 и PIO2 по адресам 0x5020 0000, 0x5030 0000 и 0x5040 0000, в каждом четыре автомата состояний и память на 32 команды. Регистры те же, что у RP2040, с дополнениями; поле VERSION регистра DBG_CFGINFO читается как 1, у RP2040 там 0 (даташит RP2350, раздел 11.1.1).
Блок PIO по-прежнему видит 32 GPIO, но GPIOBASE = 16 сдвигает окно на GPIO16–47 — так автоматы достают выводы корпуса QFN-80. Биты NEXT_PIO_MASK и PREV_PIO_MASK регистра CTRL вместе с NEXTPREV_SM_ENABLE, NEXTPREV_SM_DISABLE и NEXTPREV_CLKDIV_RESTART запускают, останавливают и синхронизируют автоматы соседних блоков одной записью. IN_COUNT обнуляет лишние входные выводы в IN PINS, WAIT PIN и MOV x, PINS.
Новые режимы FIFO: при FJOIN_RX_PUT автомат пишет в произвольные ячейки FIFO приёма, а система читает их через RXFn_PUTGETm — так делают регистры состояния; при FJOIN_RX_GET наоборот — система пишет, автомат читает, как регистры управления. Прерывания IRQ0 и IRQ1 получают все восемь флагов IRQ, а MOV x, STATUS умеет проверять флаг IRQ.
| Экземпляр | Базовый адрес |
|---|---|
| PIO0 | 0x5020 0000 |
| PIO1 | 0x5030 0000 |
| PIO2 | 0x5040 0000 |
В RP2040 блок PIO устроен иначе — регистры и поля отличаются, они описаны на странице «Регистры PIO RP2040».
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| PIO_CTRL | 0x00 | Включение и перезапуск автоматов и их делителей | 0x0000 0000 |
| PIO_FSTAT | 0x04 | Состояние FIFO: пустые и заполненные | 0x0F00 0F00 |
| PIO_FDEBUG | 0x08 | Ошибки FIFO и остановки автоматов | 0x0000 0000 |
| PIO_FLEVEL | 0x0C | Число слов в FIFO каждого автомата | 0x0000 0000 |
| PIO_TXFn | 0x10 + n · 0x04 | FIFO передачи автомата n: запись слова | 0x0000 0000 |
| PIO_RXFn | 0x20 + n · 0x04 | FIFO приёма автомата n: чтение слова | не определено |
| PIO_IRQ | 0x30 | Флаги IRQ автоматов; сброс записью 1 | 0x0000 0000 |
| PIO_IRQ_FORCE | 0x34 | Принудительная установка флагов IRQ | 0x0000 0000 |
| PIO_INPUT_SYNC_BYPASS | 0x38 | Обход синхронизаторов входов GPIO | 0x0000 0000 |
| PIO_DBG_PADOUT | 0x3C | Текущие уровни выходов PIO на GPIO | 0x0000 0000 |
| PIO_DBG_PADOE | 0x40 | Текущие разрешения выходов PIO на GPIO | 0x0000 0000 |
| PIO_DBG_CFGINFO | 0x44 | Параметры блока: память команд, автоматы, FIFO | 0x1000 0000 |
| PIO_INSTR_MEMn | 0x48 + n · 0x04 | Ячейка n памяти команд | 0x0000 0000 |
| PIO_SMn_CLKDIV | 0xC8 + n · 0x18 | Делитель частоты автомата n | 0x0001 0000 |
| PIO_SMn_EXECCTRL | 0xCC + n · 0x18 | Исполнение: обёртка, JMP PIN, side-set, STATUS | 0x0001 F000 |
| PIO_SMn_SHIFTCTRL | 0xD0 + n · 0x18 | Сдвиговые регистры, автоматические PUSH и PULL, объединение FIFO | 0x000C 0000 |
| PIO_SMn_ADDR | 0xD4 + n · 0x18 | Текущий адрес команды автомата n | 0x0000 0000 |
| PIO_SMn_INSTR | 0xD8 + n · 0x18 | Текущая команда; запись выполняет команду сразу | не определено |
| PIO_SMn_PINCTRL | 0xDC + n · 0x18 | Назначение выводов автомата n | 0x1400 0000 |
| PIO_RXF0_PUTGET0 | 0x0128 | Ячейка 0 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF0_PUTGET1 | 0x012C | Ячейка 1 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF0_PUTGET2 | 0x0130 | Ячейка 2 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF0_PUTGET3 | 0x0134 | Ячейка 3 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF1_PUTGET0 | 0x0138 | Ячейка 0 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF1_PUTGET1 | 0x013C | Ячейка 1 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF1_PUTGET2 | 0x0140 | Ячейка 2 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF1_PUTGET3 | 0x0144 | Ячейка 3 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF2_PUTGET0 | 0x0148 | Ячейка 0 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF2_PUTGET1 | 0x014C | Ячейка 1 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF2_PUTGET2 | 0x0150 | Ячейка 2 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF2_PUTGET3 | 0x0154 | Ячейка 3 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF3_PUTGET0 | 0x0158 | Ячейка 0 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF3_PUTGET1 | 0x015C | Ячейка 1 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF3_PUTGET2 | 0x0160 | Ячейка 2 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_RXF3_PUTGET3 | 0x0164 | Ячейка 3 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET | 0x0000 0000 |
| PIO_GPIOBASE | 0x0168 | Начало окна из 32 GPIO для блока: 0 или 16 | 0x0000 0000 |
| PIO_INTR | 0x016C | Необработанные флаги прерываний | 0x0000 0000 |
| PIO_IRQ0_INTE | 0x0170 | Разрешение прерываний на выходе IRQ0 | 0x0000 0000 |
| PIO_IRQ0_INTF | 0x0174 | Принудительная установка прерываний на выходе IRQ0 | 0x0000 0000 |
| PIO_IRQ0_INTS | 0x0178 | Прерывания на выходе IRQ0 после маски | 0x0000 0000 |
| PIO_IRQ1_INTE | 0x017C | Разрешение прерываний на выходе IRQ1 | 0x0000 0000 |
| PIO_IRQ1_INTF | 0x0180 | Принудительная установка прерываний на выходе IRQ1 | 0x0000 0000 |
| PIO_IRQ1_INTS | 0x0184 | Прерывания на выходе IRQ1 после маски | 0x0000 0000 |
PIO_CTRL — включение и перезапуск автоматов и их делителей
Смещение 0x00, после сброса 0x0000 0000. Макросы pico-sdk: PIO_CTRL_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | NEXTPREV_CLKDIV_RESTART | NEXTPREV_SM_DISABLE | NEXTPREV_SM_ENABLE | NEXT_PIO_MASK | PREV_PIO_MASK | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CLKDIV_RESTART | SM_RESTART | SM_ENABLE | ||||||||||||
- NEXTPREV_CLKDIV_RESTART (бит 26, сбрасывается сам, после сброса 0x0) — Перезапустить делители автоматов соседних блоков из NEXT_PIO_MASK и PREV_PIO_MASK той же записи.
- NEXTPREV_SM_DISABLE (бит 25, сбрасывается сам, после сброса 0x0) — Остановить автоматы соседних блоков из NEXT_PIO_MASK и PREV_PIO_MASK той же записи.
- NEXTPREV_SM_ENABLE (бит 24, сбрасывается сам, после сброса 0x0) — Запустить автоматы соседних блоков из NEXT_PIO_MASK и PREV_PIO_MASK той же записи.
- NEXT_PIO_MASK (биты 23:20, сбрасывается сам, после сброса 0x0) — Автоматы следующего по номеру блока PIO (после последнего — PIO0).
- PREV_PIO_MASK (биты 19:16, сбрасывается сам, после сброса 0x0) — Автоматы предыдущего по номеру блока PIO (перед PIO0 — последний).
- CLKDIV_RESTART (биты 11:8, сбрасывается сам, после сброса 0x0) — Перезапуск делителей частоты автоматов с нулевой фазы; одновременный перезапуск делает работу автоматов синхронной.
- SM_RESTART (биты 7:4, сбрасывается сам, после сброса 0x0) — Сброс внутреннего состояния автоматов: счётчики сдвигов, входной регистр, задержка, ожидание IRQ; счётчик команд, X, Y и выходной регистр не меняются.
- SM_ENABLE (биты 3:0, чтение и запись, после сброса 0x0) — Включение автоматов: по биту на автомат; можно запускать и останавливать несколько сразу.
PIO_FSTAT — состояние FIFO: пустые и заполненные
Смещение 0x04, после сброса 0x0F00 0F00. Макросы pico-sdk: PIO_FSTAT_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TXEMPTY | — | TXFULL | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RXEMPTY | — | RXFULL | ||||||||||||
- TXEMPTY (биты 27:24, только чтение, после сброса 0xF) — FIFO передачи автомата пусто: по биту на автомат.
- TXFULL (биты 19:16, только чтение, после сброса 0x0) — FIFO передачи автомата заполнено.
- RXEMPTY (биты 11:8, только чтение, после сброса 0xF) — FIFO приёма автомата пусто.
- RXFULL (биты 3:0, только чтение, после сброса 0x0) — FIFO приёма автомата заполнено.
PIO_FDEBUG — ошибки FIFO и остановки автоматов
Смещение 0x08, после сброса 0x0000 0000. Макросы pico-sdk: PIO_FDEBUG_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TXSTALL | — | TXOVER | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | RXUNDER | — | RXSTALL | ||||||||||||
- TXSTALL (биты 27:24, сброс записью 1, после сброса 0x0) — Автомат остановился на пустом FIFO передачи при PULL или OUT с автоматическим PULL; сброс записью 1.
- TXOVER (биты 19:16, сброс записью 1, после сброса 0x0) — Запись в заполненное FIFO передачи: слово потеряно; сброс записью 1.
- RXUNDER (биты 11:8, сброс записью 1, после сброса 0x0) — Чтение из пустого FIFO приёма: прочитано неопределённое значение; сброс записью 1.
- RXSTALL (биты 3:0, сброс записью 1, после сброса 0x0) — Автомат остановился на заполненном FIFO приёма при PUSH или IN с автоматическим PUSH, либо неблокирующий PUSH потерял данные; сброс записью 1.
PIO_FLEVEL — число слов в FIFO каждого автомата
Смещение 0x0C, после сброса 0x0000 0000. Макросы pico-sdk: PIO_FLEVEL_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RX3 | TX3 | RX2 | TX2 | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RX1 | TX1 | RX0 | TX0 | ||||||||||||
- RXn, n = 0…3 (биты 7:4, 15:12, 23:20, 31:28; только чтение, после сброса 0x0) — Число слов в FIFO приёма автомата n.
- TXn, n = 0…3 (биты 3:0, 11:8, 19:16, 27:24; только чтение, после сброса 0x0) — Число слов в FIFO передачи автомата n.
PIO_TXFn — fIFO передачи автомата n: запись слова
4 регистра, n = 0…3: смещение 0x10 + n · 0x04, после сброса 0x0000 0000, запись с побочным действием. Макросы pico-sdk: PIO_TXFn_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXFn — fIFO приёма автомата n: чтение слова
4 регистра, n = 0…3: смещение 0x20 + n · 0x04, после сброса не определено, чтение с побочным действием. Макросы pico-sdk: PIO_RXFn_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_IRQ — флаги IRQ автоматов; сброс записью 1
Смещение 0x30, после сброса 0x0000 0000, сброс записью 1. Макросы pico-sdk: PIO_IRQ_…
Отдельных полей нет: значение занимает биты 7:0, остальные биты не используются.
PIO_IRQ_FORCE — принудительная установка флагов IRQ
Смещение 0x34, после сброса 0x0000 0000, запись с побочным действием. Макросы pico-sdk: PIO_IRQ_FORCE_…
Отдельных полей нет: значение занимает биты 7:0, остальные биты не используются.
PIO_INPUT_SYNC_BYPASS — обход синхронизаторов входов GPIO
Смещение 0x38, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_INPUT_SYNC_BYPASS_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_DBG_PADOUT — текущие уровни выходов PIO на GPIO
Смещение 0x3C, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: PIO_DBG_PADOUT_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_DBG_PADOE — текущие разрешения выходов PIO на GPIO
Смещение 0x40, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: PIO_DBG_PADOE_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_DBG_CFGINFO — параметры блока: память команд, автоматы, FIFO
Смещение 0x44, после сброса 0x1000 0000. Макросы pico-sdk: PIO_DBG_CFGINFO_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| VERSION | — | IMEM_SIZE | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SM_COUNT | — | FIFO_DEPTH | ||||||||||||
- VERSION (биты 31:28, только чтение, после сброса 0x1) — Версия PIO: 1 у RP2350, 0 у RP2040.
Значение Имя в pico-sdk Что значит 0x0 v0 Версия 0 — RP2040 0x1 v1 Версия 1 — RP2350 - IMEM_SIZE (биты 21:16, только чтение, после сброса не определено) — Размер памяти команд в инструкциях.
- SM_COUNT (биты 11:8, только чтение, после сброса не определено) — Число автоматов в блоке.
- FIFO_DEPTH (биты 5:0, только чтение, после сброса не определено) — Глубина FIFO автомата в словах; при объединении — вдвое больше.
PIO_INSTR_MEMn — ячейка n памяти команд
32 регистра, n = 0…31: смещение 0x48 + n · 0x04, после сброса 0x0000 0000, только запись. Макросы pico-sdk: PIO_INSTR_MEMn_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
PIO_SMn_CLKDIV — делитель частоты автомата n
4 регистра, n = 0…3: смещение 0xC8 + n · 0x18, после сброса 0x0001 0000. Макросы pico-sdk: PIO_SMn_CLKDIV_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| INT | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| FRAC | — | ||||||||||||||
- INT (биты 31:16, чтение и запись, после сброса 0x0001) — Целая часть делителя; 0 означает 65 536, и тогда FRAC тоже 0.
- FRAC (биты 15:8, чтение и запись, после сброса 0x00) — Дробная часть делителя в 1/256.
PIO_SMn_EXECCTRL — исполнение: обёртка, JMP PIN, side-set, STATUS
4 регистра, n = 0…3: смещение 0xCC + n · 0x18, после сброса 0x0001 F000. Макросы pico-sdk: PIO_SMn_EXECCTRL_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| EXEC_STALLED | SIDE_EN | SIDE_PINDIR | JMP_PIN | OUT_EN_SEL | INLINE_OUT_EN | OUT_STICKY | WRAP_TOP | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| WRAP_TOP | WRAP_BOTTOM | STATUS_SEL | STATUS_N | ||||||||||||
- EXEC_STALLED (бит 31, только чтение, после сброса 0x0) — Команда, записанная в SMn_INSTR, ещё ждёт выполнения.
- SIDE_EN (бит 30, чтение и запись, после сброса 0x0) — Старший бит поля задержки и side-set включает side-set в каждой команде отдельно; наибольшая ширина side-set — 4 бита.
- SIDE_PINDIR (бит 29, чтение и запись, после сброса 0x0) — Side-set меняет направление выводов, а не их уровень.
- JMP_PIN (биты 28:24, чтение и запись, после сброса 0x00) — Номер GPIO для условия JMP PIN.
- OUT_EN_SEL (биты 23:19, чтение и запись, после сброса 0x00) — Какой бит данных OUT служит разрешением записи на выводы.
- INLINE_OUT_EN (бит 18, чтение и запись, после сброса 0x0) — Использовать бит данных OUT как дополнительное разрешение записи на выводы.
- OUT_STICKY (бит 17, чтение и запись, после сброса 0x0) — Постоянно держать на выводах последнее значение OUT или SET.
- WRAP_TOP (биты 16:12, чтение и запись, после сброса 0x1F) — Адрес конца обёртки: после этой команды выполнение переходит на WRAP_BOTTOM, если только команда — не выполненный переход.
- WRAP_BOTTOM (биты 11:7, чтение и запись, после сброса 0x00) — Адрес начала обёртки.
- STATUS_SEL (биты 6:5, чтение и запись, после сброса 0x0) — Что проверяет MOV x, STATUS: уровень FIFO передачи, приёма или флаг IRQ.
Значение Имя в pico-sdk Что значит 0x0 txlevel Все единицы, если в FIFO передачи меньше N слов 0x1 rxlevel Все единицы, если в FIFO приёма меньше N слов 0x2 irq Все единицы, если установлен флаг IRQ с номером N - STATUS_N (биты 4:0, чтение и запись, после сброса 0x00) — Уровень FIFO или номер флага IRQ для MOV x, STATUS.
Значение Имя в pico-sdk Что значит 0x0 irq Флаг IRQ 0–7 своего блока 0x8 irq_prevpio Флаг IRQ 0–7 предыдущего блока PIO 0x10 irq_nextpio Флаг IRQ 0–7 следующего блока PIO
PIO_SMn_SHIFTCTRL — сдвиговые регистры, автоматические PUSH и PULL, объединение FIFO
4 регистра, n = 0…3: смещение 0xD0 + n · 0x18, после сброса 0x000C 0000. Макросы pico-sdk: PIO_SMn_SHIFTCTRL_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| FJOIN_RX | FJOIN_TX | PULL_THRESH | PUSH_THRESH | OUT_SHIFTDIR | IN_SHIFTDIR | AUTOPULL | AUTOPUSH | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| FJOIN_RX_PUT | FJOIN_RX_GET | — | IN_COUNT | ||||||||||||
- FJOIN_RX (бит 31, чтение и запись, после сброса 0x0) — Объединить FIFO в одно FIFO приёма двойной глубины; FIFO передачи отключается, FIFO очищаются при изменении бита.
- FJOIN_TX (бит 30, чтение и запись, после сброса 0x0) — Объединить FIFO в одно FIFO передачи двойной глубины; FIFO приёма отключается, FIFO очищаются при изменении бита.
- PULL_THRESH (биты 29:25, чтение и запись, после сброса 0x00) — Сколько бит выдвигается из OSR до автоматического или условного PULL; 0 — 32.
- PUSH_THRESH (биты 24:20, чтение и запись, после сброса 0x00) — Сколько бит вдвигается в ISR до автоматического или условного PUSH; 0 — 32.
- OUT_SHIFTDIR (бит 19, чтение и запись, после сброса 0x1) — Направление сдвига выходного регистра: 1 — вправо, 0 — влево.
- IN_SHIFTDIR (бит 18, чтение и запись, после сброса 0x1) — Направление сдвига входного регистра: 1 — вправо, данные входят слева; 0 — влево.
- AUTOPULL (бит 17, чтение и запись, после сброса 0x0) — Автоматический PULL, когда из выходного регистра выдвинуто PULL_THRESH бит.
- AUTOPUSH (бит 16, чтение и запись, после сброса 0x0) — Автоматический PUSH, когда во входной регистр вдвинуто PUSH_THRESH бит.
- FJOIN_RX_PUT (бит 15, чтение и запись, после сброса 0x0) — Отключить FIFO приёма: автомат пишет в его ячейки командой PUT, система читает через RXFn_PUTGETm.
- FJOIN_RX_GET (бит 14, чтение и запись, после сброса 0x0) — Отключить FIFO приёма: автомат читает его ячейки командой GET, система пишет через RXFn_PUTGETm.
- IN_COUNT (биты 4:0, чтение и запись, после сброса 0x00) — Сколько входных выводов не обнуляется в IN PINS, WAIT PIN и MOV x, PINS.
PIO_SMn_ADDR — текущий адрес команды автомата n
4 регистра, n = 0…3: смещение 0xD4 + n · 0x18, после сброса 0x0000 0000, только чтение. Макросы pico-sdk: PIO_SMn_ADDR_…
Отдельных полей нет: значение занимает биты 4:0, остальные биты не используются.
PIO_SMn_INSTR — текущая команда; запись выполняет команду сразу
4 регистра, n = 0…3: смещение 0xD8 + n · 0x18, после сброса не определено, чтение и запись. Макросы pico-sdk: PIO_SMn_INSTR_…
Отдельных полей нет: значение занимает биты 15:0, остальные биты не используются.
PIO_SMn_PINCTRL — назначение выводов автомата n
4 регистра, n = 0…3: смещение 0xDC + n · 0x18, после сброса 0x1400 0000. Макросы pico-sdk: PIO_SMn_PINCTRL_…
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| SIDESET_COUNT | SET_COUNT | OUT_COUNT | IN_BASE | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| IN_BASE | SIDESET_BASE | SET_BASE | OUT_BASE | ||||||||||||
- SIDESET_COUNT (биты 31:29, чтение и запись, после сброса 0x0) — Сколько старших бит поля задержки и side-set отдано side-set, включая бит SIDE_EN: от 0 до 5.
- SET_COUNT (биты 28:26, чтение и запись, после сброса 0x5) — Сколько выводов меняет SET: от 0 до 5.
- OUT_COUNT (биты 25:20, чтение и запись, после сброса 0x00) — Сколько выводов меняют OUT PINS, OUT PINDIRS и MOV PINS: от 0 до 32.
- IN_BASE (биты 19:15, чтение и запись, после сброса 0x00) — Вывод, который попадает в младший бит данных IN; следующие выводы — в старшие.
- SIDESET_BASE (биты 14:10, чтение и запись, после сброса 0x00) — Первый вывод группы side-set.
- SET_BASE (биты 9:5, чтение и запись, после сброса 0x00) — Первый вывод группы SET.
- OUT_BASE (биты 4:0, чтение и запись, после сброса 0x00) — Первый вывод группы OUT и MOV PINS.
PIO_RXF0_PUTGET0 — ячейка 0 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET
Смещение 0x0128, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF0_PUTGET0_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF0_PUTGET1 — ячейка 1 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET
Смещение 0x012C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF0_PUTGET1_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF0_PUTGET2 — ячейка 2 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET
Смещение 0x0130, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF0_PUTGET2_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF0_PUTGET3 — ячейка 3 FIFO приёма автомата 0 — прямой доступ в режимах PUT и GET
Смещение 0x0134, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF0_PUTGET3_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF1_PUTGET0 — ячейка 0 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET
Смещение 0x0138, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF1_PUTGET0_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF1_PUTGET1 — ячейка 1 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET
Смещение 0x013C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF1_PUTGET1_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF1_PUTGET2 — ячейка 2 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET
Смещение 0x0140, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF1_PUTGET2_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF1_PUTGET3 — ячейка 3 FIFO приёма автомата 1 — прямой доступ в режимах PUT и GET
Смещение 0x0144, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF1_PUTGET3_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF2_PUTGET0 — ячейка 0 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET
Смещение 0x0148, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF2_PUTGET0_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF2_PUTGET1 — ячейка 1 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET
Смещение 0x014C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF2_PUTGET1_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF2_PUTGET2 — ячейка 2 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET
Смещение 0x0150, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF2_PUTGET2_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF2_PUTGET3 — ячейка 3 FIFO приёма автомата 2 — прямой доступ в режимах PUT и GET
Смещение 0x0154, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF2_PUTGET3_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF3_PUTGET0 — ячейка 0 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET
Смещение 0x0158, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF3_PUTGET0_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF3_PUTGET1 — ячейка 1 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET
Смещение 0x015C, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF3_PUTGET1_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF3_PUTGET2 — ячейка 2 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET
Смещение 0x0160, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF3_PUTGET2_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_RXF3_PUTGET3 — ячейка 3 FIFO приёма автомата 3 — прямой доступ в режимах PUT и GET
Смещение 0x0164, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_RXF3_PUTGET3_…
Значение занимает регистр целиком, отдельных полей нет.
PIO_GPIOBASE — начало окна из 32 GPIO для блока: 0 или 16
Смещение 0x0168, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PIO_GPIOBASE_…
Отдельных полей нет: значение занимает бит 4, остальные биты не используются.
PIO_INTR — необработанные флаги прерываний
Смещение 0x016C, после сброса 0x0000 0000. Макросы pico-sdk: PIO_INTR_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; только чтение, после сброса 0x0) — Флаг IRQ n автоматов установлен.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; только чтение, после сброса 0x0) — В FIFO передачи автомата n есть место.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; только чтение, после сброса 0x0) — В FIFO приёма автомата n есть данные.
PIO_IRQ0_INTE — разрешение прерываний на выходе IRQ0
Смещение 0x0170, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ0_INTE_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; чтение и запись, после сброса 0x0) — Разрешение прерывания по флагу IRQ n на выходе IRQ0.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; чтение и запись, после сброса 0x0) — Разрешение прерывания на выходе IRQ0: в FIFO передачи автомата n есть место.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x0) — Разрешение прерывания на выходе IRQ0: в FIFO приёма автомата n есть данные.
PIO_IRQ0_INTF — принудительная установка прерываний на выходе IRQ0
Смещение 0x0174, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ0_INTF_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; чтение и запись, после сброса 0x0) — Принудительное прерывание по флагу IRQ n на выходе IRQ0.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; чтение и запись, после сброса 0x0) — Принудительное прерывание FIFO передачи автомата n на выходе IRQ0.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x0) — Принудительное прерывание FIFO приёма автомата n на выходе IRQ0.
PIO_IRQ0_INTS — прерывания на выходе IRQ0 после маски
Смещение 0x0178, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ0_INTS_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; только чтение, после сброса 0x0) — Прерывание по флагу IRQ n на выходе IRQ0 после маски.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; только чтение, после сброса 0x0) — Прерывание FIFO передачи автомата n на выходе IRQ0 после маски.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; только чтение, после сброса 0x0) — Прерывание FIFO приёма автомата n на выходе IRQ0 после маски.
PIO_IRQ1_INTE — разрешение прерываний на выходе IRQ1
Смещение 0x017C, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ1_INTE_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; чтение и запись, после сброса 0x0) — Разрешение прерывания по флагу IRQ n на выходе IRQ1.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; чтение и запись, после сброса 0x0) — Разрешение прерывания на выходе IRQ1: в FIFO передачи автомата n есть место.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x0) — Разрешение прерывания на выходе IRQ1: в FIFO приёма автомата n есть данные.
PIO_IRQ1_INTF — принудительная установка прерываний на выходе IRQ1
Смещение 0x0180, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ1_INTF_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; чтение и запись, после сброса 0x0) — Принудительное прерывание по флагу IRQ n на выходе IRQ1.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; чтение и запись, после сброса 0x0) — Принудительное прерывание FIFO передачи автомата n на выходе IRQ1.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; чтение и запись, после сброса 0x0) — Принудительное прерывание FIFO приёма автомата n на выходе IRQ1.
PIO_IRQ1_INTS — прерывания на выходе IRQ1 после маски
Смещение 0x0184, после сброса 0x0000 0000. Макросы pico-sdk: PIO_IRQ1_INTS_…
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SM7 | SM6 | SM5 | SM4 | SM3 | SM2 | SM1 | SM0 | SM3_TXNFULL | SM2_TXNFULL | SM1_TXNFULL | SM0_TXNFULL | SM3_RXNEMPTY | SM2_RXNEMPTY | SM1_RXNEMPTY | SM0_RXNEMPTY |
- SMn, n = 0…7 (биты 8, 9, 10, 11, 12, 13, 14, 15; только чтение, после сброса 0x0) — Прерывание по флагу IRQ n на выходе IRQ1 после маски.
- SMn_TXNFULL, n = 0…3 (биты 4, 5, 6, 7; только чтение, после сброса 0x0) — Прерывание FIFO передачи автомата n на выходе IRQ1 после маски.
- SMn_RXNEMPTY, n = 0…3 (биты 0, 1, 2, 3; только чтение, после сброса 0x0) — Прерывание FIFO приёма автомата n на выходе IRQ1 после маски.
Частые вопросы
Как PIO RP2350 работает с GPIO32–47?
Каждый блок видит 32 вывода подряд: запишите 16 в GPIOBASE, и выводы автомата 0–31 будут соответствовать GPIO16–47. Кроме 0 и 16, другие значения не поддерживаются — записывается только бит 4.
Как синхронно запустить автоматы в разных блоках PIO RP2350?
Одной записью в CTRL одного блока: укажите автоматы соседних блоков в NEXT_PIO_MASK и PREV_PIO_MASK и установите NEXTPREV_SM_ENABLE. Бит NEXTPREV_CLKDIV_RESTART так же перезапускает их делители частоты в одной фазе.
Зачем режимы FJOIN_RX_PUT и FJOIN_RX_GET?
Они превращают четыре ячейки FIFO приёма в регистры с произвольным доступом: при PUT автомат пишет, а процессор читает через RXFn_PUTGETm — получаются регистры состояния; при GET процессор пишет, а автомат читает — регистры управления. Если включить оба, доступ остаётся только у автомата.
Источники
- Raspberry Pi. RP2350 Datasheet (release 8, build 80d627281ed5) — раздел 11.7: список регистров, назначение полей, тип доступа и значения после сброса
- Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2350/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause
Нашли ошибку в регистрах?
Другие регистры RP2350
- Все регистры RP2350Блоки периферии и базовые адреса
- SHA256 — ускоритель SHA-256SHA256_CSR, SHA256_WDATA, SHA256_SUMn
- TICKS — генераторы тиковTICKS_PROC0_CTRL, TICKS_PROC0_CYCLES, TICKS_PROC0_COUNT, TICKS_PROC1_CTRL, TICKS_PROC1_CYCLES, TICKS_PROC1_COUNT
- TRNG — генератор случайных чиселTRNG_RNG_IMR, TRNG_RNG_ISR, TRNG_RNG_ICR, TRNG_TRNG_CONFIG, TRNG_TRNG_VALID, TRNG_EHR_DATA0
- GLITCH_DETECTOR — детектор сбоевGLITCH_DETECTOR_ARM, GLITCH_DETECTOR_DISARM, GLITCH_DETECTOR_SENSITIVITY, GLITCH_DETECTOR_LOCK, GLITCH_DETECTOR_TRIG_STATUS, GLITCH_DETECTOR_TRIG_FORCE
- HSTX — быстрый последовательный выводHSTX_CTRL_CSR, HSTX_CTRL_BITn, HSTX_CTRL_EXPAND_SHIFT, HSTX_CTRL_EXPAND_TMDS
- HSTX_FIFO — FIFO быстрого выводаHSTX_FIFO_STAT, HSTX_FIFO_FIFO
- QMI — интерфейс QSPI-памятиQMI_DIRECT_CSR, QMI_DIRECT_TX, QMI_DIRECT_RX, QMI_M0_TIMING, QMI_M0_RFMT, QMI_M0_RCMD
- XIP_AUX — быстрый порт FIFO XIPXIP_AUX_STREAM, XIP_AUX_QMI_DIRECT_TX, XIP_AUX_QMI_DIRECT_RX
- BOOTRAM — регистры загрузочной памятиBOOTRAM_WRITE_ONCE0, BOOTRAM_WRITE_ONCE1, BOOTRAM_BOOTLOCK_STAT, BOOTRAM_BOOTLOCKn
- CORESIGHT_TRACE — FIFO трассировкиCORESIGHT_TRACE_CTRL_STATUS, CORESIGHT_TRACE_TRACE_CAPTURE_FIFO
- EPPB — регистры ядра от Raspberry PiM33_EPPB_NMI_MASK0, M33_EPPB_NMI_MASK1, M33_EPPB_SLEEPCTRL
- OTP — однократно программируемая памятьOTP_SW_LOCKn, OTP_SBPI_INSTR, OTP_SBPI_WDATA_0, OTP_SBPI_WDATA_1, OTP_SBPI_WDATA_2, OTP_SBPI_WDATA_3
- POWMAN — менеджер питанияPOWMAN_BADPASSWD, POWMAN_VREG_CTRL, POWMAN_VREG_STS, POWMAN_VREG, POWMAN_VREG_LP_ENTRY, POWMAN_VREG_LP_EXIT
- ACCESSCTRL — права доступа к шинеACCESSCTRL_LOCK, ACCESSCTRL_FORCE_CORE_NS, ACCESSCTRL_CFGRESET, ACCESSCTRL_GPIO_NSMASK0, ACCESSCTRL_GPIO_NSMASK1, ACCESSCTRL_ROM
- TIMER — системные таймерыTIMER_TIMEHW, TIMER_TIMELW, TIMER_TIMEHR, TIMER_TIMELR, TIMER_ALARMn, TIMER_ARMED
- WATCHDOG — сторожевой таймерWATCHDOG_CTRL, WATCHDOG_LOAD, WATCHDOG_REASON, WATCHDOG_SCRATCHn
- ADC — аналого-цифровой преобразовательADC_CS, ADC_RESULT, ADC_FCS, ADC_FIFO, ADC_DIV, ADC_INTR
- PWM — широтно-импульсная модуляцияPWM_CHn_CSR, PWM_CHn_DIV, PWM_CHn_CTR, PWM_CHn_CC, PWM_CHn_TOP, PWM_EN
- XOSC — кварцевый генераторXOSC_CTRL, XOSC_STATUS, XOSC_DORMANT, XOSC_STARTUP, XOSC_COUNT
- PLL — умножители частотыPLL_CS, PLL_PWR, PLL_FBDIV_INT, PLL_PRIM, PLL_INTR, PLL_INTE
- PADS_BANK0 — электрические настройки GPIOPADS_BANK0_VOLTAGE_SELECT, PADS_BANK0_GPIOn, PADS_BANK0_SWCLK, PADS_BANK0_SWD
- PADS_QSPI — электрические настройки выводов QSPIPADS_QSPI_VOLTAGE_SELECT, PADS_QSPI_GPIO_QSPI_SCLK, PADS_QSPI_GPIO_QSPI_SD0, PADS_QSPI_GPIO_QSPI_SD1, PADS_QSPI_GPIO_QSPI_SD2, PADS_QSPI_GPIO_QSPI_SD3
- RESETS — сброс подсистемRESETS_RESET, RESETS_WDSEL, RESETS_RESET_DONE
- PSM — автомат включения питанияPSM_FRCE_ON, PSM_FRCE_OFF, PSM_WDSEL, PSM_DONE
- SYSINFO — сведения о чипеSYSINFO_CHIP_ID, SYSINFO_PACKAGE_SEL, SYSINFO_PLATFORM, SYSINFO_GITREF_RP2350
- BUSCTRL — управление шинойBUSCTRL_BUS_PRIORITY, BUSCTRL_BUS_PRIORITY_ACK, BUSCTRL_PERFCTR_EN, BUSCTRL_PERFCTRn, BUSCTRL_PERFSELn
- ROSC — кольцевой генераторROSC_CTRL, ROSC_FREQA, ROSC_FREQB, ROSC_RANDOM, ROSC_DORMANT, ROSC_DIV
- SYSCFG — системные настройкиSYSCFG_PROC_CONFIG, SYSCFG_PROC_IN_SYNC_BYPASS, SYSCFG_PROC_IN_SYNC_BYPASS_HI, SYSCFG_DBGFORCE, SYSCFG_MEMPOWERDOWN, SYSCFG_AUXCTRL
- XIP_CTRL — кеш выполнения из флеш-памятиXIP_CTRL, XIP_STAT, XIP_CTR_HIT, XIP_CTR_ACC, XIP_STREAM_ADDR, XIP_STREAM_CTR
- USB — контроллер USBUSB_ADDR_ENDP, USB_ADDR_ENDPn, USB_MAIN_CTRL, USB_SOF_WR, USB_SOF_RD, USB_SIE_CTRL
- DMA — прямой доступ к памятиDMA_CHn_READ_ADDR, DMA_CHn_WRITE_ADDR, DMA_CHn_TRANS_COUNT, DMA_CHn_CTRL_TRIG, DMA_CHn_AL1_CTRL, DMA_CHn_AL1_READ_ADDR
- SIO — однотактный ввод-вывод ядерSIO_CPUID, SIO_GPIO_IN, SIO_GPIO_HI_IN, SIO_GPIO_OUT, SIO_GPIO_HI_OUT, SIO_GPIO_OUT_SET
- CLOCKS — тактированиеCLOCKS_CLK_GPOUT0_CTRL, CLOCKS_CLK_GPOUTn_DIV, CLOCKS_CLK_GPOUTn_SELECTED, CLOCKS_CLK_GPOUT1_CTRL, CLOCKS_CLK_GPOUT2_CTRL, CLOCKS_CLK_GPOUT3_CTRL
- IO_BANK0 — мультиплексор GPIOIO_BANK0_GPIOn_STATUS, IO_BANK0_GPIOn_CTRL, IO_BANK0_IRQSUMMARY_PROC0_SECURE0, IO_BANK0_IRQSUMMARY_PROC0_SECURE1, IO_BANK0_IRQSUMMARY_PROC0_NONSECURE0, IO_BANK0_IRQSUMMARY_PROC0_NONSECURE1
- IO_QSPI — мультиплексор выводов QSPI и USBIO_QSPI_USBPHY_DP_STATUS, IO_QSPI_USBPHY_DP_CTRL, IO_QSPI_USBPHY_DM_STATUS, IO_QSPI_USBPHY_DM_CTRL, IO_QSPI_GPIO_QSPI_SCLK_STATUS, IO_QSPI_GPIO_QSPI_SCLK_CTRL
- M33 — системные регистры Cortex-M33M33_ITM_STIMn, M33_ITM_TER0, M33_ITM_TPR, M33_ITM_TCR, M33_INT_ATREADY, M33_INT_ATVALID
Статьи и термины
- PIO RP2040Автоматы PIO: устройство, 9 команд, задержка, side-set, FIFO, частота, пример
- PIOПрограммируемый ввод-вывод: автоматы состояний, FIFO, интерфейсы
- RP2350: выводы и функции GPIO30 или 48 GPIO: выводы QFN-60 и QFN-80, функции F0–F11, АЦП, 5 В, токи
- RP2040 и RP2350RP2040 и RP2350: ядра, память, GPIO, PIO, АЦП, 5 В на выводах, эрраты