Skip to content

Latest commit

 

History

History
243 lines (197 loc) · 15.9 KB

apb_gpio.rst

File metadata and controls

243 lines (197 loc) · 15.9 KB

APB_GPIO

The General Purpose Input/Output (GPIO) IP block supports S/W access to read and write the values on selected I/O, and configuring selected I/O to generate interrupts.

Features

  • 32-bit bits of user-selectable I/O.
  • I/O can be configured for level type interrupts or edge triggered interrupts.

Theory of Operation

Programming Model

APB GPIO CSRs

SETGPIO offset = 0x00

Field Bits Type Default Description
gpio_num 7:0 WO   Set GPIO[gpio_num] = 1

CLRGPIO offset = 0x04

Field Bits Type Default Description
gpio_num 7:0 WO   Set GPIO[gpio_num] = 0

TOGGPIO offset = 0x08

Field Bits Type Default Description
gpio_num 7:0 WO   Invert the output of GPIO[gpio_num]

PIN0 offset = 0x10

Field Bits Type Default Description
gpio_value 31:0 RO   gpio_value[31:0] = GPIO[31:0]

PIN1 offset = 0x14

Field Bits Type Default Description
gpio_value 31:0 RO   gpio_value[31:0] = GPIO[63:32]

PIN2 offset = 0x18

Field Bits Type Default Description
gpio_value 31:0 RO   gpio_value[31:0] = GPIO[95:64]

PIN3 offset = 0x1C

Field Bits Type Default Description
gpio_value 31:0 RO   gpio_value[31:0] = GPIO[127:96]

OUT0 offset = 0x20

Field Bits Type Default Description
value 31:0 WO   Drive value[31:0] onto GPIO[31:0]

OUT1 offset = 0x24

Field Bits Type Default Description
value 31:0 WO   Drive value[31:0] onto GPIO[63:32]

OUT2 offset = 0x28

Field Bits Type Default Description
value 31:0 WO   Drive value[31:0] onto GPIO[95:64]

OUT3 offset = 0x2C

Field Bits Type Default Description
value 31:0 WO   Drive value[31:0] onto GPIO[127:96]

SETSEL offset = 0x30

Field Bits Type Default Description
gpio_num 7:0 WO 0x0 Set gpio_num for use by RDSTAT
        Note: SETGPIO, CLRGPIO, TOGGPIO and SETINT set gpio_num

RDSTAT offset = 0x34

Field Bits Type Default Description
mode 25:24 RO 0x0 Read the mode control for GPIO[gpio_num] (set gpio_num using SETSEL)
  0x0: Input only (output is tri-stated)
  0x1: Output active
  0x2: Open drain (value=0 drives 0, when value=1 tristated)
  0x3: Open drain (value=0 drives 0, when value=1 tristated)
INTTYPE 19:17 RO 0x0 Type of interrupt for GPIO[gpio_num]
  0x0: active low, level type interrupt
  0x1: rising edge type interupt
  0x2: falling edge type interrupt
  0x3: no interrupt
  0x4: active high, level type interrupt
  0x5 to 0x7: no interrupt
INTEN 16:16 RW   Enable interrupt for GPIO[gpio_num]
INPUT 12:12 RO   Input value reported by GPIO[gpio_num]
OUTPUT 8:8 RO   Output value that is set on GPIO[gpio_num]
gpio_sel 7:0 RO   Selected gpio

SETMODE offset = 0x38

Field Bits Type Default Description
mode 25:24 WO 0x0 mode control for GPIO[gpio_num}
        0x0: Input only (output is tri-stated)
        0x1: Output active
        0x2: Open drain (value=0 drives 0, when value=1 tristated)
        0x3: Open drain (value=0 drives 0, when value=1 tristated)
gpio_num 7:0 WO 0x0 Address of GPIO to set mode for

SETINT offset = 0x3C

Field Bits Type Default Description
INTTYPE 19:17 WO 0x0 Type of interrupt for GPIO[gpio_num]
  0x0: active low, level type interrupt
  0x1: rising edge type interupt
  0x2: falling edge type interrupt
  0x3: no interrupt
  0x4: active high, level type interrupt
  0x5 to 0x7: no interrupt
INTENABLE 16:16 WO 0x0 Enable interrupt on GPIO[GPIO_ADDDR]
gpio_num 7:0 WO 0x0 Address of GPIO to set interrupt type and enable for

INTACK offset = 0x40

Field Bits Type Default Description
RESERVED 31:8 RW   Enable interrupt for GPIO[gpio_num]
gpio_num 7:0 RW   Input value reported by GPIO[gpio_num]