Перейти к содержанию

Регистры PADS_BANK0 RP2350

Регистры площадок выводов GPIO0–47 и отладочных выводов RP2350: защёлки изоляции, разрешение входа, подтяжки и режим удержания уровня, сила выхода, триггер Шмитта, скорость фронтов и пороги входов банка.

Электрические свойства выводов задают регистры PADS_BANK0 — по одному на каждый из 48 GPIO (в корпусе QFN-60 их 30) и на выводы отладки SWCLK и SWD; функцию вывода выбирает IO_BANK0 (даташит RP2350, раздел 9.6). Сила выхода — 2, 4, 8 или 12 мА.

Главное отличие от RP2040 — состояние после сброса: выход в высоком импедансе, вход выключен (IE = 0), подтяжка к земле, защёлки изоляции включены (ISO = 1). Программа, перенесённая с RP2040, должна сама установить IE и сбросить ISO, иначе вывод не заработает; в pico-sdk это делает gpio_set_function() (раздел 9.3).

Защёлки изоляции сохраняют выход, разрешение выхода и подтяжки, пока коммутируемое ядро выключено: после его включения все биты ISO снова равны 1, и выводы держат прежнее состояние, пока программа их не освободит (раздел 9.7). Если установить PUE и PDE вместе, включается режим удержания уровня. Из-за эрраты RP2350-E9 подтяжка к земле при некоторых условиях работает не так, как ожидается.

ЭкземплярБазовый адрес
PADS_BANK00x4003 8000

В RP2040 блок PADS_BANK0 устроен иначе — регистры и поля отличаются, они описаны на странице «Регистры PADS_BANK0 RP2040».

Регистры блока

РегистрСмещениеНазначениеПосле сброса
PADS_BANK0_VOLTAGE_SELECT0x00Пороги входов банка: 0 — для IOVDD 2,5–3,3 В, 1 — для 1,8 В0x0000 0000
PADS_BANK0_GPIOn0x04 + n · 0x04Площадка вывода GPIOn0x0000 0116
PADS_BANK0_SWCLK0xC4Площадка вывода SWCLK0x0000 005A
PADS_BANK0_SWD0xC8Площадка вывода SWDIO0x0000 005A

PADS_BANK0_VOLTAGE_SELECT — пороги входов банка: 0 — для IOVDD 2,5–3,3 В, 1 — для 1,8 В

Смещение 0x00, адрес 0x4003 8000, после сброса 0x0000 0000, чтение и запись. Макросы pico-sdk: PADS_BANK0_VOLTAGE_SELECT_…

Отдельных полей нет: значение занимает бит 0, остальные биты не используются.

PADS_BANK0_GPIOn — площадка вывода GPIOn

48 регистров, n = 0…47: смещение 0x04 + n · 0x04, после сброса 0x0000 0116. Макросы pico-sdk: PADS_BANK0_GPIOn_…

1514131211109876543210
—ISOODIEDRIVEPUEPDESCHMITTSLEWFAST
  • ISO (бит 8, чтение и запись, после сброса 0x1) — Изоляция: выход, разрешение выхода и подтяжки защёлкнуты; после сброса 1 — сбрасывают, когда вывод настроен.
  • OD (бит 7, чтение и запись, после сброса 0x0) — Запрет выхода: важнее разрешения выхода от периферии.
  • IE (бит 6, чтение и запись, после сброса 0x0) — Разрешение входа; после сброса выключено — для цифрового ввода устанавливают, у входов АЦП оставляют сброшенным.
  • DRIVE (биты 5:4, чтение и запись, после сброса 0x1) — Сила выхода: 2, 4, 8 или 12 мА.
    ЗначениеИмя в pico-sdk
    0x02ma
    0x14ma
    0x28ma
    0x312ma
  • PUE (бит 3, чтение и запись, после сброса 0x0) — Подтяжка к питанию.
  • PDE (бит 2, чтение и запись, после сброса 0x1) — Подтяжка к земле.
  • SCHMITT (бит 1, чтение и запись, после сброса 0x1) — Триггер Шмитта на входе.
  • SLEWFAST (бит 0, чтение и запись, после сброса 0x0) — Скорость нарастания: 1 — быстрая, 0 — медленная.

PADS_BANK0_SWCLK — площадка вывода SWCLK

Смещение 0xC4, адрес 0x4003 80C4, после сброса 0x0000 005A. Макросы pico-sdk: PADS_BANK0_SWCLK_…

1514131211109876543210
—ISOODIEDRIVEPUEPDESCHMITTSLEWFAST
  • ISO (бит 8, чтение и запись, после сброса 0x0) — Изоляция: выход, разрешение выхода и подтяжки защёлкнуты; после сброса 1 — сбрасывают, когда вывод настроен.
  • OD (бит 7, чтение и запись, после сброса 0x0) — Запрет выхода: важнее разрешения выхода от периферии.
  • IE (бит 6, чтение и запись, после сброса 0x1) — Разрешение входа; для вывода, который работает входом АЦП, сбрасывают.
  • DRIVE (биты 5:4, чтение и запись, после сброса 0x1) — Сила выхода: 2, 4, 8 или 12 мА.
    ЗначениеИмя в pico-sdk
    0x02ma
    0x14ma
    0x28ma
    0x312ma
  • PUE (бит 3, чтение и запись, после сброса 0x1) — Подтяжка к питанию.
  • PDE (бит 2, чтение и запись, после сброса 0x0) — Подтяжка к земле.
  • SCHMITT (бит 1, чтение и запись, после сброса 0x1) — Триггер Шмитта на входе.
  • SLEWFAST (бит 0, чтение и запись, после сброса 0x0) — Скорость нарастания: 1 — быстрая, 0 — медленная.

PADS_BANK0_SWD — площадка вывода SWDIO

Смещение 0xC8, адрес 0x4003 80C8, после сброса 0x0000 005A. Макросы pico-sdk: PADS_BANK0_SWD_…

1514131211109876543210
—ISOODIEDRIVEPUEPDESCHMITTSLEWFAST
  • ISO (бит 8, чтение и запись, после сброса 0x0) — Изоляция: выход, разрешение выхода и подтяжки защёлкнуты; после сброса 1 — сбрасывают, когда вывод настроен.
  • OD (бит 7, чтение и запись, после сброса 0x0) — Запрет выхода: важнее разрешения выхода от периферии.
  • IE (бит 6, чтение и запись, после сброса 0x1) — Разрешение входа; для вывода, который работает входом АЦП, сбрасывают.
  • DRIVE (биты 5:4, чтение и запись, после сброса 0x1) — Сила выхода: 2, 4, 8 или 12 мА.
    ЗначениеИмя в pico-sdk
    0x02ma
    0x14ma
    0x28ma
    0x312ma
  • PUE (бит 3, чтение и запись, после сброса 0x1) — Подтяжка к питанию.
  • PDE (бит 2, чтение и запись, после сброса 0x0) — Подтяжка к земле.
  • SCHMITT (бит 1, чтение и запись, после сброса 0x1) — Триггер Шмитта на входе.
  • SLEWFAST (бит 0, чтение и запись, после сброса 0x0) — Скорость нарастания: 1 — быстрая, 0 — медленная.

Частые вопросы

Почему вывод RP2350 не работает, хотя функция выбрана?

Скорее всего, он изолирован или у него выключен вход: после сброса в регистре площадки ISO = 1 и IE = 0. Сбросьте ISO и установите IE — в pico-sdk это делает gpio_set_function(), а код, перенесённый с RP2040 без SDK, этих шагов не делает.

Что такое режим удержания уровня на RP2350?

Если в регистре площадки установить и PUE, и PDE, вывод подтягивается к питанию при высоком уровне на входе и к земле при низком. Без внешнего сигнала он слабо удерживает последнее логическое состояние и не уходит в среднее напряжение.

Зачем на RP2350 регистр VOLTAGE_SELECT?

Он подстраивает пороги входов под питание выводов IOVDD: 0 — от 2,5 до 3,3 В (после сброса), 1 — 1,8 В. Ставить 1 при IOVDD выше 1,8 В нельзя — это может повредить чип; оба банка питаются от одного IOVDD, поэтому значение задают одинаковым.

Источники

  1. Raspberry Pi. RP2350 Datasheet (release 8, build 80d627281ed5) — раздел 9.11.3: список регистров, назначение полей, тип доступа и значения после сброса
  2. Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2350/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause

Нашли ошибку в регистрах?

Другие регистры RP2350

Статьи и термины