Регистры RP2350
Регистры периферии RP2350: базовые адреса всех блоков по заголовкам pico-sdk 2.1.1, назначение регистров и полей, тип доступа и значение после сброса. Блоки, одинаковые с RP2040, описаны на его страницах.
RP2350 — следующий чип Raspberry Pi после RP2040, с двумя ядрами Arm Cortex-M33 или RISC-V Hazard3. Карта адресов устроена так же: периферия APB начинается с 0x4000 0000, периферия AHB — DMA, USB, PIO, FIFO HSTX — с 0x5000 0000, SIO — с 0xD000 0000, системные регистры Cortex-M33 (PPB) — с 0xE000 0000 (даташит RP2350, раздел 2.2).
Появились блоки защиты и питания: ACCESSCTRL задаёт права доступа к периферии по шине, OTP на 8 КБ хранит идентификаторы чипа, настройки защиты и ключи, TRNG и SHA256 — генератор случайных чисел и хеш SHA-256, POWMAN управляет стабилизатором ядра, детектором просадки и сбросами, GLITCH_DETECTOR сбрасывает чип при вмешательстве в такты или питание ядра. Флеш-память и PSRAM подключает QMI вместо SSI, а HSTX выводит быстрый поток данных на GPIO12–19. У SIO и PPB есть зеркала SIO_NONSEC и PPB_NONSEC: через них защищённый код видит банк регистров незащищённого режима (раздел 3.1.1).
Блоки UART, SPI, I2C и USB DPRAM совпадают с RP2040 полностью — регистры, поля и значения после сброса одинаковы, другие только базовые адреса, — поэтому ссылки ведут на страницы RP2040. Отличающиеся и новые блоки 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, TICKS_TIMER0_CTRL, TICKS_TIMER0_CYCLES, TICKS_TIMER0_COUNT, TICKS_TIMER1_CTRL, TICKS_TIMER1_CYCLES, TICKS_TIMER1_COUNT, TICKS_WATCHDOG_CTRL, TICKS_WATCHDOG_CYCLES, TICKS_WATCHDOG_COUNT, TICKS_RISCV_CTRL, TICKS_RISCV_CYCLES, TICKS_RISCV_COUNT
- TRNG — генератор случайных чиселTRNG_RNG_IMR, TRNG_RNG_ISR, TRNG_RNG_ICR, TRNG_TRNG_CONFIG, TRNG_TRNG_VALID, TRNG_EHR_DATA0, TRNG_EHR_DATA1, TRNG_EHR_DATA2, TRNG_EHR_DATA3, TRNG_EHR_DATA4, TRNG_EHR_DATA5, TRNG_RND_SOURCE_ENABLE, TRNG_SAMPLE_CNT1, TRNG_AUTOCORR_STATISTIC, TRNG_TRNG_DEBUG_CONTROL, TRNG_TRNG_SW_RESET, TRNG_RNG_DEBUG_EN_INPUT, TRNG_TRNG_BUSY, TRNG_RST_BITS_COUNTER, TRNG_RNG_VERSION, TRNG_RNG_BIST_CNTR_0, TRNG_RNG_BIST_CNTR_1, TRNG_RNG_BIST_CNTR_2
- 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, QMI_M0_WFMT, QMI_M0_WCMD, QMI_M1_TIMING, QMI_M1_RFMT, QMI_M1_RCMD, QMI_M1_WFMT, QMI_M1_WCMD, QMI_ATRANS0, QMI_ATRANS1, QMI_ATRANS2, QMI_ATRANS3, QMI_ATRANS4, QMI_ATRANS5, QMI_ATRANS6, QMI_ATRANS7
- 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, OTP_SBPI_RDATA_0, OTP_SBPI_RDATA_1, OTP_SBPI_RDATA_2, OTP_SBPI_RDATA_3, OTP_SBPI_STATUS, OTP_USR, OTP_DBG, OTP_BIST, OTP_CRT_KEY_W0, OTP_CRT_KEY_W1, OTP_CRT_KEY_W2, OTP_CRT_KEY_W3, OTP_CRITICAL, OTP_KEY_VALID, OTP_DEBUGEN, OTP_DEBUGEN_LOCK, OTP_ARCHSEL, OTP_ARCHSEL_STATUS, OTP_BOOTDIS, OTP_INTR, OTP_INTE, OTP_INTF, OTP_INTS
- POWMAN — менеджер питанияPOWMAN_BADPASSWD, POWMAN_VREG_CTRL, POWMAN_VREG_STS, POWMAN_VREG, POWMAN_VREG_LP_ENTRY, POWMAN_VREG_LP_EXIT, POWMAN_BOD_CTRL, POWMAN_BOD, POWMAN_BOD_LP_ENTRY, POWMAN_BOD_LP_EXIT, POWMAN_LPOSC, POWMAN_CHIP_RESET, POWMAN_WDSEL, POWMAN_SEQ_CFG, POWMAN_STATE, POWMAN_POW_FASTDIV, POWMAN_POW_DELAY, POWMAN_EXT_CTRL0, POWMAN_EXT_CTRL1, POWMAN_EXT_TIME_REF, POWMAN_LPOSC_FREQ_KHZ_INT, POWMAN_LPOSC_FREQ_KHZ_FRAC, POWMAN_XOSC_FREQ_KHZ_INT, POWMAN_XOSC_FREQ_KHZ_FRAC, POWMAN_SET_TIME_63TO48, POWMAN_SET_TIME_47TO32, POWMAN_SET_TIME_31TO16, POWMAN_SET_TIME_15TO0, POWMAN_READ_TIME_UPPER, POWMAN_READ_TIME_LOWER, POWMAN_ALARM_TIME_63TO48, POWMAN_ALARM_TIME_47TO32, POWMAN_ALARM_TIME_31TO16, POWMAN_ALARM_TIME_15TO0, POWMAN_TIMER, POWMAN_PWRUPn, POWMAN_CURRENT_PWRUP_REQ, POWMAN_LAST_SWCORE_PWRUP, POWMAN_DBG_PWRCFG, POWMAN_BOOTDIS, POWMAN_DBGCONFIG, POWMAN_SCRATCHn, POWMAN_BOOTn, POWMAN_INTR, POWMAN_INTE, POWMAN_INTF, POWMAN_INTS
- ACCESSCTRL — права доступа к шинеACCESSCTRL_LOCK, ACCESSCTRL_FORCE_CORE_NS, ACCESSCTRL_CFGRESET, ACCESSCTRL_GPIO_NSMASK0, ACCESSCTRL_GPIO_NSMASK1, ACCESSCTRL_ROM, ACCESSCTRL_XIP_MAIN, ACCESSCTRL_SRAM0, ACCESSCTRL_SRAM1, ACCESSCTRL_SRAM2, ACCESSCTRL_SRAM3, ACCESSCTRL_SRAM4, ACCESSCTRL_SRAM5, ACCESSCTRL_SRAM6, ACCESSCTRL_SRAM7, ACCESSCTRL_SRAM8, ACCESSCTRL_SRAM9, ACCESSCTRL_DMA, ACCESSCTRL_USBCTRL, ACCESSCTRL_PIO0, ACCESSCTRL_PIO1, ACCESSCTRL_PIO2, ACCESSCTRL_CORESIGHT_TRACE, ACCESSCTRL_CORESIGHT_PERIPH, ACCESSCTRL_SYSINFO, ACCESSCTRL_RESETS, ACCESSCTRL_IO_BANK0, ACCESSCTRL_IO_BANK1, ACCESSCTRL_PADS_BANK0, ACCESSCTRL_PADS_QSPI, ACCESSCTRL_BUSCTRL, ACCESSCTRL_ADC0, ACCESSCTRL_HSTX, ACCESSCTRL_I2C0, ACCESSCTRL_I2C1, ACCESSCTRL_PWM, ACCESSCTRL_SPI0, ACCESSCTRL_SPI1, ACCESSCTRL_TIMER0, ACCESSCTRL_TIMER1, ACCESSCTRL_UART0, ACCESSCTRL_UART1, ACCESSCTRL_OTP, ACCESSCTRL_TBMAN, ACCESSCTRL_POWMAN, ACCESSCTRL_TRNG, ACCESSCTRL_SHA256, ACCESSCTRL_SYSCFG, ACCESSCTRL_CLOCKS, ACCESSCTRL_XOSC, ACCESSCTRL_ROSC, ACCESSCTRL_PLL_SYS, ACCESSCTRL_PLL_USB, ACCESSCTRL_TICKS, ACCESSCTRL_WATCHDOG, ACCESSCTRL_RSM, ACCESSCTRL_XIP_CTRL, ACCESSCTRL_XIP_QMI, ACCESSCTRL_XIP_AUX
- TIMER — системные таймерыTIMER_TIMEHW, TIMER_TIMELW, TIMER_TIMEHR, TIMER_TIMELR, TIMER_ALARMn, TIMER_ARMED, TIMER_TIMERAWH, TIMER_TIMERAWL, TIMER_DBGPAUSE, TIMER_PAUSE, TIMER_LOCKED, TIMER_SOURCE, TIMER_INTR, TIMER_INTE, TIMER_INTF, TIMER_INTS
- WATCHDOG — сторожевой таймерWATCHDOG_CTRL, WATCHDOG_LOAD, WATCHDOG_REASON, WATCHDOG_SCRATCHn
- ADC — аналого-цифровой преобразовательADC_CS, ADC_RESULT, ADC_FCS, ADC_FIFO, ADC_DIV, ADC_INTR, ADC_INTE, ADC_INTF, ADC_INTS
- PWM — широтно-импульсная модуляцияPWM_CHn_CSR, PWM_CHn_DIV, PWM_CHn_CTR, PWM_CHn_CC, PWM_CHn_TOP, PWM_EN, PWM_INTR, PWM_IRQ0_INTE, PWM_IRQ0_INTF, PWM_IRQ0_INTS, PWM_IRQ1_INTE, PWM_IRQ1_INTF, PWM_IRQ1_INTS
- 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, PLL_INTF, PLL_INTS
- 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, PADS_QSPI_GPIO_QSPI_SS
- 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, ROSC_PHASE, ROSC_STATUS, ROSC_RANDOMBIT, ROSC_COUNT
- 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, XIP_STREAM_FIFO
- USB — контроллер USBUSB_ADDR_ENDP, USB_ADDR_ENDPn, USB_MAIN_CTRL, USB_SOF_WR, USB_SOF_RD, USB_SIE_CTRL, USB_SIE_STATUS, USB_INT_EP_CTRL, USB_BUFF_STATUS, USB_BUFF_CPU_SHOULD_HANDLE, USB_EP_ABORT, USB_EP_ABORT_DONE, USB_EP_STALL_ARM, USB_NAK_POLL, USB_EP_STATUS_STALL_NAK, USB_USB_MUXING, USB_USB_PWR, USB_USBPHY_DIRECT, USB_USBPHY_DIRECT_OVERRIDE, USB_USBPHY_TRIM, USB_LINESTATE_TUNING, USB_INTR, USB_INTE, USB_INTF, USB_INTS, USB_SOF_TIMESTAMP_RAW, USB_SOF_TIMESTAMP_LAST, USB_SM_STATE, USB_EP_TX_ERROR, USB_EP_RX_ERROR, USB_DEV_SM_WATCHDOG
- PIO — программируемый ввод-вывод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
- 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, DMA_CHn_AL1_WRITE_ADDR, DMA_CHn_AL1_TRANS_COUNT_TRIG, DMA_CHn_AL2_CTRL, DMA_CHn_AL2_TRANS_COUNT, DMA_CHn_AL2_READ_ADDR, DMA_CHn_AL2_WRITE_ADDR_TRIG, DMA_CHn_AL3_CTRL, DMA_CHn_AL3_WRITE_ADDR, DMA_CHn_AL3_TRANS_COUNT, DMA_CHn_AL3_READ_ADDR_TRIG, DMA_INTR, DMA_INTEn, DMA_INTFn, DMA_INTS0, DMA_INTS1, DMA_INTS2, DMA_INTS3, DMA_TIMERn, DMA_MULTI_CHAN_TRIGGER, DMA_SNIFF_CTRL, DMA_SNIFF_DATA, DMA_FIFO_LEVELS, DMA_CHAN_ABORT, DMA_N_CHANNELS, DMA_SECCFG_CHn, DMA_SECCFG_IRQn, DMA_SECCFG_MISC, DMA_MPU_CTRL, DMA_MPU_BARn, DMA_MPU_LARn, DMA_CHn_DBG_CTDREQ, DMA_CHn_DBG_TCR
- SIO — однотактный ввод-вывод ядерSIO_CPUID, SIO_GPIO_IN, SIO_GPIO_HI_IN, SIO_GPIO_OUT, SIO_GPIO_HI_OUT, SIO_GPIO_OUT_SET, SIO_GPIO_HI_OUT_SET, SIO_GPIO_OUT_CLR, SIO_GPIO_HI_OUT_CLR, SIO_GPIO_OUT_XOR, SIO_GPIO_HI_OUT_XOR, SIO_GPIO_OE, SIO_GPIO_HI_OE, SIO_GPIO_OE_SET, SIO_GPIO_HI_OE_SET, SIO_GPIO_OE_CLR, SIO_GPIO_HI_OE_CLR, SIO_GPIO_OE_XOR, SIO_GPIO_HI_OE_XOR, SIO_FIFO_ST, SIO_FIFO_WR, SIO_FIFO_RD, SIO_SPINLOCK_ST, SIO_INTERP0_ACCUM0, SIO_INTERP0_ACCUM1, SIO_INTERP0_BASE0, SIO_INTERP0_BASE1, SIO_INTERP0_BASE2, SIO_INTERP0_POP_LANE0, SIO_INTERP0_POP_LANE1, SIO_INTERP0_POP_FULL, SIO_INTERP0_PEEK_LANE0, SIO_INTERP0_PEEK_LANE1, SIO_INTERP0_PEEK_FULL, SIO_INTERP0_CTRL_LANE0, SIO_INTERP0_CTRL_LANE1, SIO_INTERP0_ACCUM0_ADD, SIO_INTERP0_ACCUM1_ADD, SIO_INTERP0_BASE_1AND0, SIO_INTERP1_ACCUM0, SIO_INTERP1_ACCUM1, SIO_INTERP1_BASE0, SIO_INTERP1_BASE1, SIO_INTERP1_BASE2, SIO_INTERP1_POP_LANE0, SIO_INTERP1_POP_LANE1, SIO_INTERP1_POP_FULL, SIO_INTERP1_PEEK_LANE0, SIO_INTERP1_PEEK_LANE1, SIO_INTERP1_PEEK_FULL, SIO_INTERP1_CTRL_LANE0, SIO_INTERP1_CTRL_LANE1, SIO_INTERP1_ACCUM0_ADD, SIO_INTERP1_ACCUM1_ADD, SIO_INTERP1_BASE_1AND0, SIO_SPINLOCKn, SIO_DOORBELL_OUT_SET, SIO_DOORBELL_OUT_CLR, SIO_DOORBELL_IN_SET, SIO_DOORBELL_IN_CLR, SIO_PERI_NONSEC, SIO_RISCV_SOFTIRQ, SIO_MTIME_CTRL, SIO_MTIME, SIO_MTIMEH, SIO_MTIMECMP, SIO_MTIMECMPH, SIO_TMDS_CTRL, SIO_TMDS_WDATA, SIO_TMDS_PEEK_SINGLE, SIO_TMDS_POP_SINGLE, SIO_TMDS_PEEK_DOUBLE_Ln, SIO_TMDS_POP_DOUBLE_Ln
- 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, CLOCKS_CLK_REF_CTRL, CLOCKS_CLK_REF_DIV, CLOCKS_CLK_REF_SELECTED, CLOCKS_CLK_SYS_CTRL, CLOCKS_CLK_SYS_DIV, CLOCKS_CLK_SYS_SELECTED, CLOCKS_CLK_PERI_CTRL, CLOCKS_CLK_PERI_DIV, CLOCKS_CLK_PERI_SELECTED, CLOCKS_CLK_HSTX_CTRL, CLOCKS_CLK_HSTX_DIV, CLOCKS_CLK_HSTX_SELECTED, CLOCKS_CLK_USB_CTRL, CLOCKS_CLK_USB_DIV, CLOCKS_CLK_USB_SELECTED, CLOCKS_CLK_ADC_CTRL, CLOCKS_CLK_ADC_DIV, CLOCKS_CLK_ADC_SELECTED, CLOCKS_DFTCLK_XOSC_CTRL, CLOCKS_DFTCLK_ROSC_CTRL, CLOCKS_DFTCLK_LPOSC_CTRL, CLOCKS_CLK_SYS_RESUS_CTRL, CLOCKS_CLK_SYS_RESUS_STATUS, CLOCKS_FC0_REF_KHZ, CLOCKS_FC0_MIN_KHZ, CLOCKS_FC0_MAX_KHZ, CLOCKS_FC0_DELAY, CLOCKS_FC0_INTERVAL, CLOCKS_FC0_SRC, CLOCKS_FC0_STATUS, CLOCKS_FC0_RESULT, CLOCKS_WAKE_EN0, CLOCKS_WAKE_EN1, CLOCKS_SLEEP_EN0, CLOCKS_SLEEP_EN1, CLOCKS_ENABLED0, CLOCKS_ENABLED1, CLOCKS_INTR, CLOCKS_INTE, CLOCKS_INTF, CLOCKS_INTS
- 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_BANK0_IRQSUMMARY_PROC1_SECURE0, IO_BANK0_IRQSUMMARY_PROC1_SECURE1, IO_BANK0_IRQSUMMARY_PROC1_NONSECURE0, IO_BANK0_IRQSUMMARY_PROC1_NONSECURE1, IO_BANK0_IRQSUMMARY_DORMANT_WAKE_SECURE0, IO_BANK0_IRQSUMMARY_DORMANT_WAKE_SECURE1, IO_BANK0_IRQSUMMARY_DORMANT_WAKE_NONSECURE0, IO_BANK0_IRQSUMMARY_DORMANT_WAKE_NONSECURE1, IO_BANK0_INTR0, IO_BANK0_INTR1, IO_BANK0_INTR2, IO_BANK0_INTR3, IO_BANK0_INTR4, IO_BANK0_INTR5, IO_BANK0_PROC0_INTE0, IO_BANK0_PROC0_INTE1, IO_BANK0_PROC0_INTE2, IO_BANK0_PROC0_INTE3, IO_BANK0_PROC0_INTE4, IO_BANK0_PROC0_INTE5, IO_BANK0_PROC0_INTF0, IO_BANK0_PROC0_INTF1, IO_BANK0_PROC0_INTF2, IO_BANK0_PROC0_INTF3, IO_BANK0_PROC0_INTF4, IO_BANK0_PROC0_INTF5, IO_BANK0_PROC0_INTS0, IO_BANK0_PROC0_INTS1, IO_BANK0_PROC0_INTS2, IO_BANK0_PROC0_INTS3, IO_BANK0_PROC0_INTS4, IO_BANK0_PROC0_INTS5, IO_BANK0_PROC1_INTE0, IO_BANK0_PROC1_INTE1, IO_BANK0_PROC1_INTE2, IO_BANK0_PROC1_INTE3, IO_BANK0_PROC1_INTE4, IO_BANK0_PROC1_INTE5, IO_BANK0_PROC1_INTF0, IO_BANK0_PROC1_INTF1, IO_BANK0_PROC1_INTF2, IO_BANK0_PROC1_INTF3, IO_BANK0_PROC1_INTF4, IO_BANK0_PROC1_INTF5, IO_BANK0_PROC1_INTS0, IO_BANK0_PROC1_INTS1, IO_BANK0_PROC1_INTS2, IO_BANK0_PROC1_INTS3, IO_BANK0_PROC1_INTS4, IO_BANK0_PROC1_INTS5, IO_BANK0_DORMANT_WAKE_INTE0, IO_BANK0_DORMANT_WAKE_INTE1, IO_BANK0_DORMANT_WAKE_INTE2, IO_BANK0_DORMANT_WAKE_INTE3, IO_BANK0_DORMANT_WAKE_INTE4, IO_BANK0_DORMANT_WAKE_INTE5, IO_BANK0_DORMANT_WAKE_INTF0, IO_BANK0_DORMANT_WAKE_INTF1, IO_BANK0_DORMANT_WAKE_INTF2, IO_BANK0_DORMANT_WAKE_INTF3, IO_BANK0_DORMANT_WAKE_INTF4, IO_BANK0_DORMANT_WAKE_INTF5, IO_BANK0_DORMANT_WAKE_INTS0, IO_BANK0_DORMANT_WAKE_INTS1, IO_BANK0_DORMANT_WAKE_INTS2, IO_BANK0_DORMANT_WAKE_INTS3, IO_BANK0_DORMANT_WAKE_INTS4, IO_BANK0_DORMANT_WAKE_INTS5
- 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, IO_QSPI_GPIO_QSPI_SS_STATUS, IO_QSPI_GPIO_QSPI_SS_CTRL, IO_QSPI_GPIO_QSPI_SDn_STATUS, IO_QSPI_GPIO_QSPI_SDn_CTRL, IO_QSPI_IRQSUMMARY_PROC0_SECURE, IO_QSPI_IRQSUMMARY_PROC0_NONSECURE, IO_QSPI_IRQSUMMARY_PROC1_SECURE, IO_QSPI_IRQSUMMARY_PROC1_NONSECURE, IO_QSPI_IRQSUMMARY_DORMANT_WAKE_SECURE, IO_QSPI_IRQSUMMARY_DORMANT_WAKE_NONSECURE, IO_QSPI_INTR, IO_QSPI_PROC0_INTE, IO_QSPI_PROC0_INTF, IO_QSPI_PROC0_INTS, IO_QSPI_PROC1_INTE, IO_QSPI_PROC1_INTF, IO_QSPI_PROC1_INTS, IO_QSPI_DORMANT_WAKE_INTE, IO_QSPI_DORMANT_WAKE_INTF, IO_QSPI_DORMANT_WAKE_INTS
- M33 — системные регистры Cortex-M33M33_ITM_STIMn, M33_ITM_TER0, M33_ITM_TPR, M33_ITM_TCR, M33_INT_ATREADY, M33_INT_ATVALID, M33_ITM_ITCTRL, M33_ITM_DEVARCH, M33_ITM_DEVTYPE, M33_ITM_PIDR4, M33_ITM_PIDR5, M33_ITM_PIDR6, M33_ITM_PIDR7, M33_ITM_PIDR0, M33_ITM_PIDR1, M33_ITM_PIDR2, M33_ITM_PIDR3, M33_ITM_CIDR0, M33_ITM_CIDR1, M33_ITM_CIDR2, M33_ITM_CIDR3, M33_DWT_CTRL, M33_DWT_CYCCNT, M33_DWT_EXCCNT, M33_DWT_LSUCNT, M33_DWT_FOLDCNT, M33_DWT_COMPn, M33_DWT_FUNCTION0, M33_DWT_FUNCTION1, M33_DWT_FUNCTION2, M33_DWT_FUNCTION3, M33_DWT_DEVARCH, M33_DWT_DEVTYPE, M33_DWT_PIDR4, M33_DWT_PIDR5, M33_DWT_PIDR6, M33_DWT_PIDR7, M33_DWT_PIDR0, M33_DWT_PIDR1, M33_DWT_PIDR2, M33_DWT_PIDR3, M33_DWT_CIDR0, M33_DWT_CIDR1, M33_DWT_CIDR2, M33_DWT_CIDR3, M33_FP_CTRL, M33_FP_REMAP, M33_FP_COMPn, M33_FP_DEVARCH, M33_FP_DEVTYPE, M33_FP_PIDR4, M33_FP_PIDR5, M33_FP_PIDR6, M33_FP_PIDR7, M33_FP_PIDR0, M33_FP_PIDR1, M33_FP_PIDR2, M33_FP_PIDR3, M33_FP_CIDR0, M33_FP_CIDR1, M33_FP_CIDR2, M33_FP_CIDR3, M33_ICTR, M33_ACTLR, M33_SYST_CSR, M33_SYST_RVR, M33_SYST_CVR, M33_SYST_CALIB, M33_NVIC_ISER0, M33_NVIC_ISER1, M33_NVIC_ICER0, M33_NVIC_ICER1, M33_NVIC_ISPR0, M33_NVIC_ISPR1, M33_NVIC_ICPR0, M33_NVIC_ICPR1, M33_NVIC_IABR0, M33_NVIC_IABR1, M33_NVIC_ITNS0, M33_NVIC_ITNS1, M33_NVIC_IPRn, M33_CPUID, M33_ICSR, M33_VTOR, M33_AIRCR, M33_SCR, M33_CCR, M33_SHPR1, M33_SHPR2, M33_SHPR3, M33_SHCSR, M33_CFSR, M33_HFSR, M33_DFSR, M33_MMFAR, M33_BFAR, M33_ID_PFR0, M33_ID_PFR1, M33_ID_DFR0, M33_ID_AFR0, M33_ID_MMFR0, M33_ID_MMFR1, M33_ID_MMFR2, M33_ID_MMFR3, M33_ID_ISAR0, M33_ID_ISAR1, M33_ID_ISAR2, M33_ID_ISAR3, M33_ID_ISAR4, M33_ID_ISAR5, M33_CTR, M33_CPACR, M33_NSACR, M33_MPU_TYPE, M33_MPU_CTRL, M33_MPU_RNR, M33_MPU_RBAR, M33_MPU_RLAR, M33_MPU_RBAR_A1, M33_MPU_RLAR_A1, M33_MPU_RBAR_A2, M33_MPU_RLAR_A2, M33_MPU_RBAR_A3, M33_MPU_RLAR_A3, M33_MPU_MAIR0, M33_MPU_MAIR1, M33_SAU_CTRL, M33_SAU_TYPE, M33_SAU_RNR, M33_SAU_RBAR, M33_SAU_RLAR, M33_SFSR, M33_SFAR, M33_DHCSR, M33_DCRSR, M33_DCRDR, M33_DEMCR, M33_DSCSR, M33_STIR, M33_FPCCR, M33_FPCAR, M33_FPDSCR, M33_MVFR0, M33_MVFR1, M33_MVFR2, M33_DDEVARCH, M33_DDEVTYPE, M33_DPIDR4, M33_DPIDR5, M33_DPIDR6, M33_DPIDR7, M33_DPIDR0, M33_DPIDR1, M33_DPIDR2, M33_DPIDR3, M33_DCIDR0, M33_DCIDR1, M33_DCIDR2, M33_DCIDR3, M33_TRCPRGCTLR, M33_TRCSTATR, M33_TRCCONFIGR, M33_TRCEVENTCTL0R, M33_TRCEVENTCTL1R, M33_TRCSTALLCTLR, M33_TRCTSCTLR, M33_TRCSYNCPR, M33_TRCCCCTLR, M33_TRCVICTLR, M33_TRCCNTRLDVR0, M33_TRCIDR8, M33_TRCIDR9, M33_TRCIDR10, M33_TRCIDR11, M33_TRCIDR12, M33_TRCIDR13, M33_TRCIMSPEC, M33_TRCIDR0, M33_TRCIDR1, M33_TRCIDR2, M33_TRCIDR3, M33_TRCIDR4, M33_TRCIDR5, M33_TRCIDR6, M33_TRCIDR7, M33_TRCRSCTLR2, M33_TRCRSCTLR3, M33_TRCSSCSR, M33_TRCSSPCICR, M33_TRCPDCR, M33_TRCPDSR, M33_TRCITATBIDR, M33_TRCITIATBINR, M33_TRCITIATBOUTR, M33_TRCCLAIMSET, M33_TRCCLAIMCLR, M33_TRCAUTHSTATUS, M33_TRCDEVARCH, M33_TRCDEVID, M33_TRCDEVTYPE, M33_TRCPIDR4, M33_TRCPIDR5, M33_TRCPIDR6, M33_TRCPIDR7, M33_TRCPIDR0, M33_TRCPIDR1, M33_TRCPIDR2, M33_TRCPIDR3, M33_TRCCIDR0, M33_TRCCIDR1, M33_TRCCIDR2, M33_TRCCIDR3, M33_CTICONTROL, M33_CTIINTACK, M33_CTIAPPSET, M33_CTIAPPCLEAR, M33_CTIAPPPULSE, M33_CTIINENn, M33_CTIOUTENn, M33_CTITRIGINSTATUS, M33_CTITRIGOUTSTATUS, M33_CTICHINSTATUS, M33_CTIGATE, M33_ASICCTL, M33_ITCHOUT, M33_ITTRIGOUT, M33_ITCHIN, M33_ITCTRL, M33_DEVARCH, M33_DEVID, M33_DEVTYPE, M33_PIDR4, M33_PIDR5, M33_PIDR6, M33_PIDR7, M33_PIDR0, M33_PIDR1, M33_PIDR2, M33_PIDR3, M33_CIDR0, M33_CIDR1, M33_CIDR2, M33_CIDR3
- I2C — интерфейсы I²CКак у RP2040: I2C_IC_CON, I2C_IC_TAR, I2C_IC_SAR, I2C_IC_DATA_CMD, I2C_IC_SS_SCL_HCNT, I2C_IC_SS_SCL_LCNT, I2C_IC_FS_SCL_HCNT, I2C_IC_FS_SCL_LCNT, I2C_IC_INTR_STAT, I2C_IC_INTR_MASK, I2C_IC_RAW_INTR_STAT, I2C_IC_RX_TL, I2C_IC_TX_TL, I2C_IC_CLR_INTR, I2C_IC_CLR_RX_UNDER, I2C_IC_CLR_RX_OVER, I2C_IC_CLR_TX_OVER, I2C_IC_CLR_RD_REQ, I2C_IC_CLR_TX_ABRT, I2C_IC_CLR_RX_DONE, I2C_IC_CLR_ACTIVITY, I2C_IC_CLR_STOP_DET, I2C_IC_CLR_START_DET, I2C_IC_CLR_GEN_CALL, I2C_IC_ENABLE, I2C_IC_STATUS, I2C_IC_TXFLR, I2C_IC_RXFLR, I2C_IC_SDA_HOLD, I2C_IC_TX_ABRT_SOURCE, I2C_IC_SLV_DATA_NACK_ONLY, I2C_IC_DMA_CR, I2C_IC_DMA_TDLR, I2C_IC_DMA_RDLR, I2C_IC_SDA_SETUP, I2C_IC_ACK_GENERAL_CALL, I2C_IC_ENABLE_STATUS, I2C_IC_FS_SPKLEN, I2C_IC_CLR_RESTART_DET, I2C_IC_COMP_PARAM_1, I2C_IC_COMP_VERSION, I2C_IC_COMP_TYPE
- SPI — интерфейсы SPIКак у RP2040: SPI_SSPCR0, SPI_SSPCR1, SPI_SSPDR, SPI_SSPSR, SPI_SSPCPSR, SPI_SSPIMSC, SPI_SSPRIS, SPI_SSPMIS, SPI_SSPICR, SPI_SSPDMACR, SPI_SSPPERIPHID0, SPI_SSPPERIPHID1, SPI_SSPPERIPHID2, SPI_SSPPERIPHID3, SPI_SSPPCELLID0, SPI_SSPPCELLID1, SPI_SSPPCELLID2, SPI_SSPPCELLID3
- UART — последовательные порты UARTКак у RP2040: UART_UARTDR, UART_UARTRSR, UART_UARTFR, UART_UARTILPR, UART_UARTIBRD, UART_UARTFBRD, UART_UARTLCR_H, UART_UARTCR, UART_UARTIFLS, UART_UARTIMSC, UART_UARTRIS, UART_UARTMIS, UART_UARTICR, UART_UARTDMACR, UART_UARTPERIPHID0, UART_UARTPERIPHID1, UART_UARTPERIPHID2, UART_UARTPERIPHID3, UART_UARTPCELLID0, UART_UARTPCELLID1, UART_UARTPCELLID2, UART_UARTPCELLID3
- USB DPRAM — память конечных точек USBКак у RP2040: USB_DEVICE_DPRAM_SETUP_PACKET_LOW, USB_DEVICE_DPRAM_SETUP_PACKET_HIGH, USB_DEVICE_DPRAM_EPn_IN_CONTROL, USB_DEVICE_DPRAM_EPn_OUT_CONTROL, USB_DEVICE_DPRAM_EPn_IN_BUFFER_CONTROL, USB_DEVICE_DPRAM_EPn_OUT_BUFFER_CONTROL
Адреса всех блоков
Базовые адреса блоков периферии по файлу addressmap.h pico-sdk. Страницы с описанием регистров есть у блоков со ссылкой; блоки, одинаковые с RP2040, ведут на его страницы; у TBMAN слишком мало регистров для отдельной страницы.
| Блок | Экземпляры и адреса | Регистров |
|---|---|---|
| ACCESSCTRL | ACCESSCTRL 0x4006 0000 | 59 |
| ADC | ADC 0x400A 0000 | 9 |
| BOOTRAM | BOOTRAM 0x400E 0000 | 11 |
| BUSCTRL | BUSCTRL 0x4006 8000 | 11 |
| CLOCKS | CLOCKS 0x4001 0000 | 53 |
| CORESIGHT_TRACE | CORESIGHT_TRACE 0x5070 0000 | 2 |
| DMA | DMA 0x5000 0000 | 349 |
| GLITCH_DETECTOR | GLITCH_DETECTOR 0x4015 8000 | 6 |
| HSTX_CTRL | HSTX_CTRL 0x400C 0000 | 11 |
| HSTX_FIFO | HSTX_FIFO 0x5060 0000 | 2 |
| I2C (как у RP2040) | I2C0 0x4009 0000, I2C1 0x4009 8000 | 42 |
| IO_BANK0 | IO_BANK0 0x4002 8000 | 168 |
| IO_QSPI | IO_QSPI 0x4003 0000 | 32 |
| M33 | PPB 0xE000 0000 | 313 |
| M33_EPPB | EPPB 0xE008 0000 | 3 |
| OTP | OTP 0x4012 0000 | 92 |
| PADS_BANK0 | PADS_BANK0 0x4003 8000 | 51 |
| PADS_QSPI | PADS_QSPI 0x4004 0000 | 7 |
| PIO | PIO0 0x5020 0000, PIO1 0x5030 0000, PIO2 0x5040 0000 | 98 |
| PLL | PLL_SYS 0x4005 0000, PLL_USB 0x4005 8000 | 8 |
| POWMAN | POWMAN 0x4010 0000 | 60 |
| PSM | PSM 0x4001 8000 | 4 |
| PWM | PWM 0x400A 8000 | 68 |
| QMI | XIP_QMI 0x400D 0000 | 21 |
| RESETS | RESETS 0x4002 0000 | 3 |
| ROSC | ROSC 0x400E 8000 | 10 |
| SHA256 | SHA256 0x400F 8000 | 10 |
| SIO | SIO 0xD000 0000 | 108 |
| SPI (как у RP2040) | SPI0 0x4008 0000, SPI1 0x4008 8000 | 18 |
| SYSCFG | SYSCFG 0x4000 8000 | 6 |
| SYSINFO | SYSINFO 0x4000 0000 | 4 |
| TBMAN | TBMAN 0x4016 0000 | 1 |
| TICKS | TICKS 0x4010 8000 | 18 |
| TIMER | TIMER0 0x400B 0000, TIMER1 0x400B 8000 | 19 |
| TRNG | TRNG 0x400F 0000 | 23 |
| UART (как у RP2040) | UART0 0x4007 0000, UART1 0x4007 8000 | 22 |
| USB | USBCTRL_REGS 0x5011 0000 | 45 |
| USB_DEVICE_DPRAM (как у RP2040) | USBCTRL_DPRAM 0x5010 0000 | 64 |
| WATCHDOG | WATCHDOG 0x400D 8000 | 11 |
| XIP | XIP_CTRL 0x400C 8000 | 7 |
| XIP_AUX | XIP_AUX 0x5050 0000 | 3 |
| XOSC | XOSC 0x4004 8000 | 5 |
Выводы чипа и функции GPIO — на странице RP2350.
Частые вопросы
Совместимы ли регистры UART и SPI у RP2040 и RP2350?
Да: по заголовкам pico-sdk 2.1.1 у блоков UART, SPI и I2C обоих чипов одинаковые регистры, поля, типы доступа и значения после сброса. Отличаются базовые адреса: у RP2350 UART0 по адресу 0x4007 0000, SPI0 — 0x4008 0000, I2C0 — 0x4009 0000.
Где у RP2350 регистры контроллера флеш-памяти?
В блоке QMI по адресу 0x400D 0000: он заменил SSI из RP2040 и подключает к окну XIP с адреса 0x1000 0000 флеш-память и PSRAM. Регистры кеша XIP — в блоке XIP_CTRL, а прямой доступ к FIFO потоковой передачи — в XIP_AUX.
Источники
- Raspberry Pi. RP2350 Datasheet (release 8, build 80d627281ed5) — разделы «List of Registers»: назначение регистров и полей, значения после сброса; раздел 2.2 — карта адресов
- Raspberry Pi. pico-sdk 2.1.1: заголовки src/rp2350/hardware_regs/include/hardware/regs/*.h (коммит bddd20f) — смещения, биты, тип доступа и значение после сброса каждого поля, базовые адреса из addressmap.h; лицензия BSD-3-Clause
Нашли ошибку в регистрах?