[−][src]Module rp2040::pio0
Programmable IO block
Modules
ctrl | PIO control register |
dbg_cfginfo | The PIO hardware has some free parameters that may vary between chip products.\n These should be provided in the chip datasheet, but are also exposed here. |
dbg_padoe | Read to sample the pad output enables (direction) PIO is currently driving to the GPIOs. |
dbg_padout | Read to sample the pad output values PIO is currently driving to the GPIOs. |
fdebug | FIFO debug register |
flevel | FIFO levels |
fstat | FIFO status register |
input_sync_bypass | There is a 2-flipflop synchronizer on each GPIO input, which protects\n PIO logic from metastabilities. This increases input delay, and for fast\n synchronous IO (e.g. SPI) these synchronizers may need to be bypassed.\n Each bit in this register corresponds to one GPIO.\n 0 -> input is synchronized (default)\n 1 -> synchronizer is bypassed\n If in doubt, leave this register as all zeroes. |
instr_mem0 | Write-only access to instruction memory location 0 |
instr_mem1 | Write-only access to instruction memory location 1 |
instr_mem2 | Write-only access to instruction memory location 2 |
instr_mem3 | Write-only access to instruction memory location 3 |
instr_mem4 | Write-only access to instruction memory location 4 |
instr_mem5 | Write-only access to instruction memory location 5 |
instr_mem6 | Write-only access to instruction memory location 6 |
instr_mem7 | Write-only access to instruction memory location 7 |
instr_mem8 | Write-only access to instruction memory location 8 |
instr_mem9 | Write-only access to instruction memory location 9 |
instr_mem10 | Write-only access to instruction memory location 10 |
instr_mem11 | Write-only access to instruction memory location 11 |
instr_mem12 | Write-only access to instruction memory location 12 |
instr_mem13 | Write-only access to instruction memory location 13 |
instr_mem14 | Write-only access to instruction memory location 14 |
instr_mem15 | Write-only access to instruction memory location 15 |
instr_mem16 | Write-only access to instruction memory location 16 |
instr_mem17 | Write-only access to instruction memory location 17 |
instr_mem18 | Write-only access to instruction memory location 18 |
instr_mem19 | Write-only access to instruction memory location 19 |
instr_mem20 | Write-only access to instruction memory location 20 |
instr_mem21 | Write-only access to instruction memory location 21 |
instr_mem22 | Write-only access to instruction memory location 22 |
instr_mem23 | Write-only access to instruction memory location 23 |
instr_mem24 | Write-only access to instruction memory location 24 |
instr_mem25 | Write-only access to instruction memory location 25 |
instr_mem26 | Write-only access to instruction memory location 26 |
instr_mem27 | Write-only access to instruction memory location 27 |
instr_mem28 | Write-only access to instruction memory location 28 |
instr_mem29 | Write-only access to instruction memory location 29 |
instr_mem30 | Write-only access to instruction memory location 30 |
instr_mem31 | Write-only access to instruction memory location 31 |
intr | Raw Interrupts |
irq | Interrupt request register. Write 1 to clear |
irq0_inte | Interrupt Enable for irq0 |
irq0_intf | Interrupt Force for irq0 |
irq0_ints | Interrupt status after masking & forcing for irq0 |
irq1_inte | Interrupt Enable for irq1 |
irq1_intf | Interrupt Force for irq1 |
irq1_ints | Interrupt status after masking & forcing for irq1 |
irq_force | Writing a 1 to each of these bits will forcibly assert the corresponding IRQ.\n Note this is different to the INTF register: writing here affects PIO internal\n state. INTF just asserts the processor-facing IRQ signal for testing ISRs,\n and is not visible to the state machines. |
rxf0 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
rxf1 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
rxf2 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
rxf3 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
sm0_addr | Current instruction address of state machine 0 |
sm0_clkdiv | Clock divider register for state machine 0\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
sm0_execctrl | Execution/behavioural settings for state machine 0 |
sm0_instr | Instruction currently being executed by state machine 0\n Write to execute an instruction immediately (including jumps) and then resume execution. |
sm0_pinctrl | State machine pin control |
sm0_shiftctrl | Control behaviour of the input/output shift registers for state machine 0 |
sm1_addr | Current instruction address of state machine 1 |
sm1_clkdiv | Clock divider register for state machine 1\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
sm1_execctrl | Execution/behavioural settings for state machine 1 |
sm1_instr | Instruction currently being executed by state machine 1\n Write to execute an instruction immediately (including jumps) and then resume execution. |
sm1_pinctrl | State machine pin control |
sm1_shiftctrl | Control behaviour of the input/output shift registers for state machine 1 |
sm2_addr | Current instruction address of state machine 2 |
sm2_clkdiv | Clock divider register for state machine 2\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
sm2_execctrl | Execution/behavioural settings for state machine 2 |
sm2_instr | Instruction currently being executed by state machine 2\n Write to execute an instruction immediately (including jumps) and then resume execution. |
sm2_pinctrl | State machine pin control |
sm2_shiftctrl | Control behaviour of the input/output shift registers for state machine 2 |
sm3_addr | Current instruction address of state machine 3 |
sm3_clkdiv | Clock divider register for state machine 3\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
sm3_execctrl | Execution/behavioural settings for state machine 3 |
sm3_instr | Instruction currently being executed by state machine 3\n Write to execute an instruction immediately (including jumps) and then resume execution. |
sm3_pinctrl | State machine pin control |
sm3_shiftctrl | Control behaviour of the input/output shift registers for state machine 3 |
txf0 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
txf1 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
txf2 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
txf3 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
Structs
RegisterBlock | Register block |
Type Definitions
CTRL | PIO control register |
DBG_CFGINFO | The PIO hardware has some free parameters that may vary between chip products.\n These should be provided in the chip datasheet, but are also exposed here. |
DBG_PADOE | Read to sample the pad output enables (direction) PIO is currently driving to the GPIOs. |
DBG_PADOUT | Read to sample the pad output values PIO is currently driving to the GPIOs. |
FDEBUG | FIFO debug register |
FLEVEL | FIFO levels |
FSTAT | FIFO status register |
INPUT_SYNC_BYPASS | There is a 2-flipflop synchronizer on each GPIO input, which protects\n PIO logic from metastabilities. This increases input delay, and for fast\n synchronous IO (e.g. SPI) these synchronizers may need to be bypassed.\n Each bit in this register corresponds to one GPIO.\n 0 -> input is synchronized (default)\n 1 -> synchronizer is bypassed\n If in doubt, leave this register as all zeroes. |
INSTR_MEM0 | Write-only access to instruction memory location 0 |
INSTR_MEM1 | Write-only access to instruction memory location 1 |
INSTR_MEM2 | Write-only access to instruction memory location 2 |
INSTR_MEM3 | Write-only access to instruction memory location 3 |
INSTR_MEM4 | Write-only access to instruction memory location 4 |
INSTR_MEM5 | Write-only access to instruction memory location 5 |
INSTR_MEM6 | Write-only access to instruction memory location 6 |
INSTR_MEM7 | Write-only access to instruction memory location 7 |
INSTR_MEM8 | Write-only access to instruction memory location 8 |
INSTR_MEM9 | Write-only access to instruction memory location 9 |
INSTR_MEM10 | Write-only access to instruction memory location 10 |
INSTR_MEM11 | Write-only access to instruction memory location 11 |
INSTR_MEM12 | Write-only access to instruction memory location 12 |
INSTR_MEM13 | Write-only access to instruction memory location 13 |
INSTR_MEM14 | Write-only access to instruction memory location 14 |
INSTR_MEM15 | Write-only access to instruction memory location 15 |
INSTR_MEM16 | Write-only access to instruction memory location 16 |
INSTR_MEM17 | Write-only access to instruction memory location 17 |
INSTR_MEM18 | Write-only access to instruction memory location 18 |
INSTR_MEM19 | Write-only access to instruction memory location 19 |
INSTR_MEM20 | Write-only access to instruction memory location 20 |
INSTR_MEM21 | Write-only access to instruction memory location 21 |
INSTR_MEM22 | Write-only access to instruction memory location 22 |
INSTR_MEM23 | Write-only access to instruction memory location 23 |
INSTR_MEM24 | Write-only access to instruction memory location 24 |
INSTR_MEM25 | Write-only access to instruction memory location 25 |
INSTR_MEM26 | Write-only access to instruction memory location 26 |
INSTR_MEM27 | Write-only access to instruction memory location 27 |
INSTR_MEM28 | Write-only access to instruction memory location 28 |
INSTR_MEM29 | Write-only access to instruction memory location 29 |
INSTR_MEM30 | Write-only access to instruction memory location 30 |
INSTR_MEM31 | Write-only access to instruction memory location 31 |
INTR | Raw Interrupts |
IRQ | Interrupt request register. Write 1 to clear |
IRQ0_INTE | Interrupt Enable for irq0 |
IRQ0_INTF | Interrupt Force for irq0 |
IRQ0_INTS | Interrupt status after masking & forcing for irq0 |
IRQ1_INTE | Interrupt Enable for irq1 |
IRQ1_INTF | Interrupt Force for irq1 |
IRQ1_INTS | Interrupt status after masking & forcing for irq1 |
IRQ_FORCE | Writing a 1 to each of these bits will forcibly assert the corresponding IRQ.\n Note this is different to the INTF register: writing here affects PIO internal\n state. INTF just asserts the processor-facing IRQ signal for testing ISRs,\n and is not visible to the state machines. |
RXF0 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
RXF1 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
RXF2 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
RXF3 | Direct read access to the RX FIFO for this state machine. Each read pops one word from the FIFO. |
SM0_ADDR | Current instruction address of state machine 0 |
SM0_CLKDIV | Clock divider register for state machine 0\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
SM0_EXECCTRL | Execution/behavioural settings for state machine 0 |
SM0_INSTR | Instruction currently being executed by state machine 0\n Write to execute an instruction immediately (including jumps) and then resume execution. |
SM0_PINCTRL | State machine pin control |
SM0_SHIFTCTRL | Control behaviour of the input/output shift registers for state machine 0 |
SM1_ADDR | Current instruction address of state machine 1 |
SM1_CLKDIV | Clock divider register for state machine 1\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
SM1_EXECCTRL | Execution/behavioural settings for state machine 1 |
SM1_INSTR | Instruction currently being executed by state machine 1\n Write to execute an instruction immediately (including jumps) and then resume execution. |
SM1_PINCTRL | State machine pin control |
SM1_SHIFTCTRL | Control behaviour of the input/output shift registers for state machine 1 |
SM2_ADDR | Current instruction address of state machine 2 |
SM2_CLKDIV | Clock divider register for state machine 2\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
SM2_EXECCTRL | Execution/behavioural settings for state machine 2 |
SM2_INSTR | Instruction currently being executed by state machine 2\n Write to execute an instruction immediately (including jumps) and then resume execution. |
SM2_PINCTRL | State machine pin control |
SM2_SHIFTCTRL | Control behaviour of the input/output shift registers for state machine 2 |
SM3_ADDR | Current instruction address of state machine 3 |
SM3_CLKDIV | Clock divider register for state machine 3\n Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) |
SM3_EXECCTRL | Execution/behavioural settings for state machine 3 |
SM3_INSTR | Instruction currently being executed by state machine 3\n Write to execute an instruction immediately (including jumps) and then resume execution. |
SM3_PINCTRL | State machine pin control |
SM3_SHIFTCTRL | Control behaviour of the input/output shift registers for state machine 3 |
TXF0 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
TXF1 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
TXF2 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |
TXF3 | Direct write access to the TX FIFO for this state machine. Each write pushes one word to the FIFO. |