Anda di halaman 1dari 7

Pontificia Universidad Catlica del Per

Curso: Sistemas Digitales

Profesor: Ing. Hugo Pratt

Registros de los puertos de propsito general (GPIO registers)


y de control de reloj en mdulos GPIO del TM4C123GH6PM
De manera abreviada nos referimos a este conjunto de registros como registros GPIO.
Se presentan los registros del TM4C123GH6PM empleado en la tarjeta de evaluacin Tiva LaunchPad.

Registros del TM4C123GH6PM


El TM4C123GH6PM tiene seis puertos de E/S de 8 bits, denominados A, B, C, D, E y F, cada uno
controlado por 14 registros de E/S de 32 bits. En la tabla se muestran al lado izquierdo los nombres genricos
de cada registro de E/S tal y como aparecen en el manual del microcontrolador. Para hacer uso de estos
registros en un programa los nombres siguen la siguiente nomenclatura:
Ejemplos:
Registro GPIODIR del puerto F:
Registro GPIOPUR del puerto A:

GPIO_PORTF_DIR_R
GPIO_PORTA_PUR_R

En general, si un registro tiene el nombre genrico:


El nombre del registro para el puerto X (X=A, B, .. F) ser:

GPIOabc
GPIO_PORTX_abc_R

En el primer ejemplo abc era DIR, y X era F. En el segundo ejemplo abc era PUR y X era A.

Reloj de mdulo GPIO


Para poder emplear uno de los puertos de E/S (mdulos GPIO) primero debe activarse la seal de reloj del
mdulo, pues sino, no es posible hacer uso de los registros GPIO de dicho puerto y el sistema generar una
seal de falla del bus del sistema. Existen dos maneras de activar la seal de reloj y cada una emplea
regsitros de E/S especficos. Una manera (legacy) es utilizando el registro de E/S del sistema RCGC2, la otra
manera es utilizando los registros del sistema RCGCGPIO y PRGPIO. Esta ltima es la que se describir.
Para activar la seal de reloj de los mdulos GPIO se emplea el registro de E/S del sistema RCGCGPIO.
Cada bit corresponde a la habilitacin de la seal de reloj de uno de los mdulos GPIO del microcontrolador.
Luego que se ha escrito, se debe esperar a que se active, para lo cual existe el registro de E/S PRGPIO en el
cual cada bit indica el estado de la seal de reloj de cada mdulo GPIO. Un mdulo GPIO podr accederse
si el bit de PRGPIO que le corresponde vale 1.
El nombre de RCGCGPIO en lenguaje C es: SYSCTL_RCGCGPIO_R
bit
RCGCGPIO

31

16
R

15

6
R

Valor inicial:
Dir. Base:
R0: puerto A
R1: Puerto B
...
R5: Puerto F

0x0000.0000
0x400F.E000

Offset

5
R5
R/W
0

4
R4
R/W
0

3
R3
R/W
0

2
R2
R/W
0

1
R1
R/W
0

0
R0
R/W
0

0x608

bit x = 1 Se activa la seal de reloj para el mdulo de E/S seleccionado.


bit x = 0 Se desactiva la lnea de reloj del puerto seleccionado, el mdulo de E/S estar deshabilitado, y la escritura en
cualquier registro de E/S del mdulo generar una falla del bus (bus fault)
Ejemplo: Si bit 4 se pone a 1, se activar (luego de cierto tiempo) el puerto E del microcontrolador, y se podr
configurar y usar.
Importante: Este registro no forma parte de los registros GPIO, sino a los registros del sistema.
Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-1-

24/08/2016

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales

Profesor: Ing. Hugo Pratt

El registro de verificacin de reloj SYSCTL_PRGPIO_R (abreviado PRGPIO)


Este registro permite saber si uno de los puertos GPIO (A...F) ya puede accederse
bit
PRGPIO

31

16
R

15

6
R

Valor inicial:
Dir. Base:

0x0000.0000
0x400F.E000

Offset

5
R5
R/W
0

4
R4
R/W
0

3
R3
R/W
0

2
R2
R/W
0

1
R1
R/W
0

0
R0
R/W
0

0xA08

R0: puerto A
R1: Puerto B
...
R5: Puerto F

bit x = 1 Ya est activa la seal de reloj del mdulo GPIO y se podr configurar y utilizar.
bit x = 0 No est activa an la seal de reloj del mdulo GPIO. Puede ser porque no se activ con RCGCGPIO o
porque an no ha culminado su activacin. En ambos casos la escritura en cualquier registro de E/S del
mdulo generar una falla del bus (bus fault)
Ejemplo: Si bit 4 se puso a 1, significa que est activa la seal de reloj del puerto E del microcontrolador, y se podr
configurar y usar.
Importante: Este registro no forma parte de los registros GPIO, sino a los registros del sistema.

Registros de E/S de los mdulos GPIO


En color gris estn los bits reservados. Los programas deben mantener esos bits con sus valores iniciales.
Debajo de cada nombre est el offset de la direccin del registro respecto a la direccin base de los registros
de cada puerto. En lenguaje C no emplearn directamente esos valores, sino los nombres como se ha
indicado lneas arriba. La nica excepcin es el caso de los registros GPIODATA.
La mayora de pines estn configurados como pines digitales de propsito general (GPIO) y en alta
impedancia (tri-estado) de manera predeterminada. Por ello, para esos pines los bits de control tendrn los
siguientes valores: GPIOAFSEL=0, GPIODEN =0, GPIOPDR=0, GPIOPUR=0, GPIOPCTL=0). Al
energizarse (Power-On-Reset) o reiniciarse (efectuar un reset con pin RST) regresan a esta configuracin
predeterminada. El grupo de pines que no cumple con esta condicin se presenta en la siguiente tabla.
Tabla 1. TM4C123GH6PM Pines que tienen configuracin distinta a la de GPIO luego de un reset o encendido

Pines
PA[1:0]
PA[5:2]
PB[3:2]
PC[3:0]
PD[7]
PF[0]
a

Configuracin
predeterminada
UART0
SSI0
I2C0
JTAG/SWD
GPIOa
GPIOa

GPIOAFSEL

GPIODEN

GPIOPDR

GPIOPUR

GPIOPCTL

GPIOCR

0
0
0
1
0
0

0
0
0
1
0
0

0
0
0
0
0
0

0
0
0
1
0
0

0x1
0x2
0x3
0x1
0x0
0x0

1
1
1
0
0
0

El pin est configurado como GPIO pero est protegido y slo puede reconfigurarse desprotegiendo el pin con el registro
GPIOLOCK y confirmndolo con el registro GPIOCR (poniendo a 1 el bit correspondiente).

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-2-

24/08/2016

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales

bit
GPIODATA
0x3FC

31

Profesor: Ing. Hugo Pratt

8
RESERVADO
R

R/W
0

R/W
0

R/W
0

4
3
DATA
R/W R/W
0
0

R/W
0

R/W
0

R/W
0

valor inicial: 0x0000.0000


Su nombre en lenguaje C es : GPIO_PORTx_DATA_R (donde debe reemplazar x por A, B, C, D, E, F, G, H o J)
bit
GPIODIR
0x400

31

8
RESERVADO
R

R/W
0

R/W
0

R/W
0

3
DIR
R/W R/W
0
0

R/W
0

R/W
0

R/W
0

R/W
-

R/W
-

R/W
-

bit x = 0: Pin x configurado como entrada


bit x = 1: Pin x configurado como salida
valor inicial: 0x0000.0000
bit
GPIOAFSEL
0x420

31

8
RESERVADO
R

4
3
AFSEL
R/W R/W
-

R/W R/W R/W


bit x = 0: Pin x configurado como GPIO y controlado por registros GPIO
bit x = 1: Pin es controlado por algn mdulo de E/S (alternate function)
valor inicial: 0x0000.0000 para puertos D, E, F, G, H, J. Puertos A, B y C segn la
bit
GPIODR2R
0x500

31

bit
GPIODR4R
0x504

31

bit
GPIODR8R
0x508

31

R/W
0

R/W
0

R/W
0

Tabla 1.

4
3
2
1
0
DRV 2mA
R/W R/W R/W R/W R/W R/W R/W R/W
1
1
1
1
1
1
1
1
bit x = 0: Driver de corriente para Pin x configurado por registro GPIODR4R o GPIODR8R
bit x = 1: Driver de 2mA activado en Pin x. Pin, si es configurado como salida, ser capaz de entregar hasta 2mA de
corriente
valor inicial: 0x0000.00FF
RESERVADO
R

4
3
2
1
0
DRV 4mA
R/W R/W R/W R/W R/W R/W R/W R/W
0
0
0
0
0
0
0
0
bit x = 0: Driver de corriente para Pin x configurado por registro GPIODR2R o GPIODR8R
bit x = 1: Driver de 4mA activado en Pin x. Pin, si es configurado como salida, ser capaz de entregar hasta 4mA de
corriente
valor inicial: 0x0000.0000
RESERVADO
R

RESERVADO
R

4
3
DRV 8mA
R/W R/W
0
0

R/W
0

R/W
0

R/W
0

bit x = 0: Driver de corriente para Pin x configurado por registro GPIODR2R o GPIODR4R
bit x = 1: Driver de 8mA activado en Pin x. Pin, si es configurado como salida, ser capaz de entregar hasta 8mA de
corriente
valor inicial: 0x0000.0000

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-3-

24/08/2016

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales
bit
GPIOODR
0x50C

31

Profesor: Ing. Hugo Pratt


8

RESERVADO
R

R/W
1

R/W
1

R/W
1

3
ODE
R/W R/W
1
1

R/W
1

R/W
1

R/W
1

R/W
-

R/W
-

R/W
-

bit x = 0: Pin x no es configurado como drernador abierto


bit x = 1: Pin x es configurado como drenador abierto (open drain)
valor inicial: 0x0000.0000
bit
GPIOPUR
0x510

31

8
RESERVADO
R

R/W
-

R/W
-

R/W
-

3
PUE
R/W R/W
-

bit x = 0: En Pin x no se activa resistencia de pull-up


bit x = 1: En Pin x se activa resistencia de pull-up (pull-up resistor enabled), y si est activa la resistencia de pull-down
la desactiva (pone a 0 bit x de registro GPIOPDR), pues slo una de ellas puede estar activa

bit
GPIOPDR
0x514

31

8
RESERVADO
R

R/W
-

R/W
-

R/W
-

3
PDE
R/W R/W
-

R/W
-

R/W
-

R/W
-

bit x = 0: En Pin x no se activa resistencia de pull-down


bit x = 1: En Pin x se activa resistencia de pull-down (pull-down resistor enabled), y si est activa resistencia de pull-up,
la desactiva (pone a 0 bit x de registro GPIOPUR), pues slo una de ellas puede estar activa..

bit
GPIODEN
0x51C

31

8
RESERVADO
R

R/W
-

R/W
-

R/W
-

3
DEN
R/W R/W
-

R/W
-

R/W
-

R/W
-

bit x = 0: Funciones digitales de Pin x desactivadas


bit x = 1: Funciones digitales de Pin x se activan. Valores iniciales: 0x0000.0000 para puertos A, B, D, E, F, G, H, I, J.
Valor inicial para puerto C: 0x0000.000F

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-4-

24/08/2016

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales

bit
GPIOAMSEL
0x528
valor inicial

Profesor: Ing. Hugo Pratt

31

30

29

28

27

26

25

24

R
0

R
0

R
0

R
0

R
0

R
0

R
0

R
0

15

14

23
22
21
RESERVADO
R
R
R
0
0
0

20

19

18

17

16

R
0

R
0

R
0

R
0

R
0

13 12 11 10 9
8
7
6
5
4
3
2
1
0
RESERVADO
GPIOAMSEL
R R R R R R R R R/W R/W R/W R/W R/W R/W R/W R/W
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
bit x = 0: Funciones analgicas de Pin x desactivadas. Pin x puede tener funciones digitales.
bit x = 1: Funciones analgicas de Pin x activadas. Pin x no podr tener funciones digitales.
Este registro slo existe para puertos B, C, D y E, pues son los nicos con funciones analgicas. En lenguaje C
GPIO_PORTB_AMSEL _R, GPIO_PORTC_AMSEL _R, GPIO_PORTD_AMSEL _R y
GPIO_PORTE_AMSEL_R

bit
GPIOPCTL
0x52C
valor inicial

31

30
29
PMC7

28

27

26
25
PMC6

24

23

22
21
PMC5

20

19

18
17
PMC4

16

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

15

14
13
PMC3

12

11

10
9
PMC2

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

RW
-

6
5
PMC1
RW
-

RW
-

RW
-

1
PMC0
RW
-

nible PMCx : Selector de Multiplexor de Funciones del Pin x.


valor inicial: 0x0000.0000 para puertos
Este registro se emplea conjuntamente con el registro GPIOAFSEL para seleccionar la seal de un mdulo de
E/S que har uso del pin. Son 4 bits por pin.

bit
GPIOLOCK
0x520

31

R/W
R/W R/W R/W R/W R/W R/W R/W R/W
0
0
0
0
0
0
0
0
1
Lectura: 0x0000.0000 Candado abierto, puede escribirse en registro GPIOCR
0x0000.0001 Candado cerrado. No puede escribirse en registro GPIOCR
Escritura: Al escribir 0x4C4F.434B se abre el candado que protege registro GPIOCR.
Al escribir cualquier otro valor se cierra el candado nuevamente. Al escribir en GPIOCR tambin se cierra.
valor inicial: 0x0000.0001
bit
GPIOCR
0x524

31

3
2
1
0
CR
R/W R/W R/W R/W R/W R/W R/W R/W
bit x = 0: No puede modificarse bit x de registros GPIOAFSEL, GPIOPUR, GPIOPDR, GPIODEN.
bit x = 1: Bit x de registro GPIOAFSEL, GPIOPUR, GPIOPDR, GPIODEN puede modificarse. Funciones digitales de
Pin x se activan. Puertos A, B, D nunca estn protegidos ni pueden protegerse. Pines PC0...PC3, PD7, PF0
estn protegidos (bit=1). Los dems pines de estos puertos no estn protegidos.
RESERVADO
R

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-5-

24/08/2016

0
RW
-

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales

Profesor: Ing. Hugo Pratt

Secuencia de configuracin de pines como GPIO (TM4C123GH6PM)


En esta secuencia, cuando se mencionan bits o campos, se refiere slo a los de los pines a configurar en el
puerto. Los dems bits del registro deben mantener su valor inicial.
1. Activar seal de reloj del puerto a emplear (registro SYSCTL_RCGCGPIO_R)
2. Esperar a que est listo (analizar bit que corresponda de SYSCTL_PRGPIO_R)
3. Desactivar modo analgico (Poner a cero bits de GPIOAMSEL)
4. Borrar campos PCTL para seleccionar funcin GPIO (en registro GPIOPCTL)
5. Configurar pines como entrada o salida (GPIODIR)
6. Desactivar funciones alternativas (bits de GPIOAFSEL ponerlos a cero)
7. Activar resistencias de pull-up, pull-down, salidas colector abierto (registros GPIOPUR, GPIOPDR,
GPIOODR respectivamente)
8. Activar pin para acceso digital (poner a 1 bits de GPIODEN)

Configuracin de pines que tienen proteccin (PC0, PC1, PC2, PC3, PD7, PF0)
1.
2.
3.
4.
5.
6.
7.
8.
9.

Activar seal de reloj del puerto a emplear (registro SYSCTL_RCGCGPIO_R)


Esperar a que est listo (analizar bit que corresponda de SYSCTL_PRGPIO_R)
Desactivar modo analgico (Poner a cero bits de GPIOAMSEL)
Borrar campos PCTL para seleccionar funcin GPIO (en registro GPIOPCTL)
Configurar pines como entrada o salida (GPIODIR)
Escribir 0x4C4F.434B en registro GPIOLOCK
Poner a 1 bits de GPIOCR que correspondan a los pines del puerto que se quieren configurar
Desactivar funciones alternativas (bits de GPIOAFSEL ponerlos a cero)
Activar resistencias de pull-up, pull-down, salidas colector abierto (registros GPIOPUR, GPIOPDR,
GPIOODR respectivamente)
10. Activar pin para acceso digital (poner a 1 bits de GPIODEN)

Direcciones base de los puertos GPIO del tiva TM4C123GH6PM


Puerto
PORTA
PORTB
PORTC
PORTD
PORTE
PORTF

Direccin base
(bus APB)
0x4000.4000
0x4000.5000
0x4000.6000
0x4000.7000
0x4002.4000
0x4002.5000

Direccin base
(bus AHB)
0x4005.8000
0x4005.9000
0x4005.A000
0x4005.B000
0x4005.C000
0x4005.D000

Funciones alternativas para los pines del Tiva TM4C123GH6PM

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

-6-

24/08/2016

Pontificia Universidad Catlica del Per


Curso: Sistemas Digitales

Registros_GPIO_TM4C123G_unicamente_Rev4.doc

Profesor: Ing. Hugo Pratt

-7-

24/08/2016