100% encontró este documento útil (1 voto)
405 vistas114 páginas

ARM I (LPC) - ARM Cortex-M0+

Manual de programación de microcontroladores ARM en Español - I2D TECHNOLOGY

Cargado por

Miguel Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
405 vistas114 páginas

ARM I (LPC) - ARM Cortex-M0+

Manual de programación de microcontroladores ARM en Español - I2D TECHNOLOGY

Cargado por

Miguel Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

I2D ..

TECHNOLOGY
Desarrollando Tecnología para la Industria

ARM I (LPC) - ARM


Cortex-M0+

Guia de programación
Miguel A. Garcia Levise

© 2019 I2D TECHNOLOGY S.A.C.


2 ARM I (LPC) - ARM Cortex-M0+

Contenido
Foreword 0

Capítulo 1: Introducción 9
1.1 Reseña
...................................................................................................................................
historica 9
1.2 Porqué
...................................................................................................................................
usar ARM 9
1.3 Herramientas
...................................................................................................................................
de desarrollo 9

Capítulo 2: I/O de Propósito General - GPIO 10


2.1 Configuración
................................................................................................................................... 10
2.2 Descripción
...................................................................................................................................
General 10
2.3 Descripcion
...................................................................................................................................
de Registros 10
Registros..........................................................................................................................................................
B0 a B53 11
Registros..........................................................................................................................................................
W0 a W53 12
Registros..........................................................................................................................................................
DIRm 12
Registros..........................................................................................................................................................
MASKm 13
Registros..........................................................................................................................................................
PINm 13
Registros..........................................................................................................................................................
MPINm 13
Registros..........................................................................................................................................................
SETm 14
Registros..........................................................................................................................................................
CLRm 14
Registros..........................................................................................................................................................
NOTm 14
Registros..........................................................................................................................................................
DIRSETm 15
Registros..........................................................................................................................................................
DIRCLRm 15
Registros..........................................................................................................................................................
DIRNOTm 15
2.4 Descripcion
...................................................................................................................................
Funcional 16
2.5 Ejemplos
................................................................................................................................... 16
Parpadeando
..........................................................................................................................................................
un LED 16
Enm ascaram
..........................................................................................................................................................
iento de pines 17
Lectura de
..........................................................................................................................................................
pulsadores 18
LCD Alfanum
..........................................................................................................................................................
érico 19
Teclado m..........................................................................................................................................................
atricial 20

Capítulo 3: Bloque de Configuración del Sistema - SYSCON 21


3.1 Configuración
................................................................................................................................... 21
FRO .......................................................................................................................................................... 21
PLL .......................................................................................................................................................... 21
Main clock
..........................................................................................................................................................
y System clock 22
Bloque oscilador
..........................................................................................................................................................
utilizando XTALIN y XTALOUT 22
3.2 Descripción
...................................................................................................................................
General 22
Generación
..........................................................................................................................................................
de reloj 22
3.3 Descripcion
...................................................................................................................................
de Registros 24
SYSMEMREMAP
..........................................................................................................................................................
- Registro de rem apeo de m em oria del sistem a 27
SYSPLLCTRL
..........................................................................................................................................................
- Registro de control del PLL del sistem a 27
SYSPLLSTAT
..........................................................................................................................................................
- Registro de estado del PLL del sistem a 27
SYSOSCCTRL
..........................................................................................................................................................
- Registro de control del oscilador del sistem a 27
WDTSOCCTRL
..........................................................................................................................................................
- Registro de control del oscilador del Watchdog 27
FROOSCCTRL
..........................................................................................................................................................
- Registro de control del oscilador del FRO 27
FRODIRECTCLKUEN
..........................................................................................................................................................
- Registro actualización de la fuente de clock del FRO 27
SYSRSTSTAT
..........................................................................................................................................................
- Registro de estado del reset del sistem a 27
SYSPLLCLKSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj del PLL de sistem a 27
SYSPLLCLKUEN
..........................................................................................................................................................
- Registro de actualización de la fuente de reloj del PLL del sistem a 27
MAINCLKPLLSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj del PLL para el reloj principal 27

© 2019 I2D TECHNOLOGY S.A.C.


Manual de Usuario 3

MAINCLKPLLUEN
..........................................................................................................................................................
- Registro de actualización de la fuente de reloj del PLL para el reloj principal 27
MAINCLKSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj principal 27
MAINCLKUEN
..........................................................................................................................................................
- Registro de actualización de la fuente de reloj 27
SYSAHBCLKDIV
..........................................................................................................................................................
- Registro divisor del reloj del sistem a 27
CAPTCLKSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj del Tactil Capacitivo 28
ADCCLKSEL..........................................................................................................................................................
- Registro de selección de la fuente de reloj del ADC 28
ADCCLKDIV..........................................................................................................................................................
- Registro divisor del reloj del ADC 28
SCTCLKSEL..........................................................................................................................................................
- Registro de selección de la fuente de reloj del SCT 28
SCTCLKDIV..........................................................................................................................................................
- Registro divisor del reloj del SCT 28
EXTCLKSEL..........................................................................................................................................................
- Registro de selección de la fuente de reloj externa 28
SYSAHBCLKCTRL0
..........................................................................................................................................................
- Registro 0 de control de reloj del sistem a 28
SYSAHBCLKCTRL1
..........................................................................................................................................................
- Registro 1 de control de reloj del sistem a 30
PRESETCTRL0
..........................................................................................................................................................
- Registro 0 de control de reset de periférico 30
PRESETCTRL1
..........................................................................................................................................................
- Registro 1 de control de reset de periférico 30
FCLKSEL -..........................................................................................................................................................
Registros de selección de reloj de periféricos 30
FRG0DIV -..........................................................................................................................................................
Registro DIV del divisor fraccionario 0 30
FRG0MULT ..........................................................................................................................................................
- Registro MULT del divisor fraccionario 0 30
FRG0CLKSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj del divisor fraccionario 0 30
FRG1DIV -..........................................................................................................................................................
Registro DIV del divisor fraccionario 1 30
FRG1MULT ..........................................................................................................................................................
- Registro MULT del divisor fraccionario 1 30
FRG1CLKSEL
..........................................................................................................................................................
- Registro de selección de la fuente de reloj del divisor fraccionario 1 30
3.4 Descripcion
...................................................................................................................................
Funcional 31
Reset .......................................................................................................................................................... 31
Detección..........................................................................................................................................................
de bajo voltaje 31
Bloque PLL
.......................................................................................................................................................... 31
3.5 Ejemplos
................................................................................................................................... 32
Habilitación
..........................................................................................................................................................
del clock de GPIOs 32
Asignación..........................................................................................................................................................
de pines en el UART0 33

Capítulo 4: Configuración de I/O - IOCON 34


4.1 Configuración
................................................................................................................................... 34
4.2 Descripción
...................................................................................................................................
General 34
Configuración
..........................................................................................................................................................
de pines 35
Función de
..........................................................................................................................................................
los pines 35
Modo del..........................................................................................................................................................
pin (Pin m ode) 35
Modo Open-drain
.......................................................................................................................................................... 36
Modo Analógico
.......................................................................................................................................................... 36
4.3 Descripcion
...................................................................................................................................
de Registros 36
Registro PIO0_17
.......................................................................................................................................................... 36
4.4 Descripcion
...................................................................................................................................
Funcional 36
4.5 Ejemplos
................................................................................................................................... 36

Capítulo 5: Matriz de Switches - SWM 37


5.1 Configuración
................................................................................................................................... 37
5.2 Descripción
...................................................................................................................................
General 37
5.3 Descripción
...................................................................................................................................
de Registros 37
PINASSIGN0
..........................................................................................................................................................
- Registro 0 de asignación de pines 38
PINASSIGN1
..........................................................................................................................................................
- Registro 1 de asignación de pines 38
PINASSIGN2
..........................................................................................................................................................
- Registro 2 de asignación de pines 39
PINASSIGN3
..........................................................................................................................................................
- Registro 3 de asignación de pines 39
PINASSIGN4
..........................................................................................................................................................
- Registro 4 de asignación de pines 40
PINASSIGN5
..........................................................................................................................................................
- Registro 5 de asignación de pines 40
PINASSIGN6
..........................................................................................................................................................
- Registro 6 de asignación de pines 41
PINASSIGN7
..........................................................................................................................................................
- Registro 7 de asignación de pines 41
PINASSIGN8
..........................................................................................................................................................
- Registro 8 de asignación de pines 42

© 2019 I2D TECHNOLOGY S.A.C.

3
4 ARM I (LPC) - ARM Cortex-M0+

PINASSIGN9
..........................................................................................................................................................
- Registro 9 de asignación de pines 42
PINASSIGN10
..........................................................................................................................................................
- Registro 10 de asignación de pines 43
PINASSIGN11
..........................................................................................................................................................
- Registro 11 de asignación de pines 43
PINASSIGN12
..........................................................................................................................................................
- Registro 12 de asignación de pines 44
PINASSIGN13
..........................................................................................................................................................
- Registro 13 de asignación de pines 44
PINASSIGN14
..........................................................................................................................................................
- Registro 14 de asignación de pines 45
PINENABLE0
..........................................................................................................................................................
- Registro 0 de habilitación de pines con función especifica 45
PINENABLE1
..........................................................................................................................................................
- Registro 1 de habilitación de pines con función especifica 47
5.4 Descripción
...................................................................................................................................
Funcional 47
5.5 Ejemplos
................................................................................................................................... 47

Capítulo 6: Contador/Temporizador - CTIMER 48


6.1 Configuración
................................................................................................................................... 48
6.2 Descripción
...................................................................................................................................
General 48
6.3 Descripción
...................................................................................................................................
de Registros 48
IR - Registro
..........................................................................................................................................................
de Interrupción 50
TCR - Registro
..........................................................................................................................................................
de Control del Tim er 50
TC - Registro
..........................................................................................................................................................
Contador del Tim er 50
PR - Registro
..........................................................................................................................................................
Preescalador 50
PC - Registro
..........................................................................................................................................................
Contador del Preescalador 50
MCR - Registro
..........................................................................................................................................................
de Control del Com parador 50
MRn - Registros
..........................................................................................................................................................
de Com paración 50
CCR - Registro
..........................................................................................................................................................
de Control de Captura 50
CRn - Registros
..........................................................................................................................................................
de Captura 50
EMR - Registros
..........................................................................................................................................................
de Com paración Externos 50
CTCR - Registro
..........................................................................................................................................................
de Control del Contador 50
PWMC - Registro
..........................................................................................................................................................
de Control del PWM 50
MSRn - Registros
..........................................................................................................................................................
de Com paración Secundario 50
6.4 Descripción
...................................................................................................................................
Funcional 50
6.5 Ejemplos
................................................................................................................................... 51
Configuración
..........................................................................................................................................................
del contador 51
Configuración
..........................................................................................................................................................
del com parador 52
Generación
..........................................................................................................................................................
de onda cuadrada 54
Generación
..........................................................................................................................................................
de señales PWM 55
Entrada de
..........................................................................................................................................................
captura para m edición de periodo 57
Interrupción
..........................................................................................................................................................
periódica 59

Capítulo 7: Timer para Generación PWM - SCTimer/PWM 61


7.1 Configuración
................................................................................................................................... 61
7.2 Descripción
...................................................................................................................................
General 61
7.3 Descripción
...................................................................................................................................
de Registros 61
CONFIG - Registro
..........................................................................................................................................................
de Configuración 61
CTRL - Registro
..........................................................................................................................................................
de Control 61
LIMIT - Registro
..........................................................................................................................................................
de Selección de Eventos para Lim itación 61
HALT - Registro
..........................................................................................................................................................
de Selección de Eventos para Suspensión 61
STOP - Registro
..........................................................................................................................................................
de Selección de Eventos para Detener 61
START - Registro
..........................................................................................................................................................
de Selección de Eventos para Iniciar 61
COUNT - Registro
..........................................................................................................................................................
Contador 61
STATE - Registro
..........................................................................................................................................................
de Estado 61
INPUT - Registro
..........................................................................................................................................................
de Estado de Entradas 61
REGMODE..........................................................................................................................................................
- Registro de Modo Captura/Com paración 61
OUTPUT - ..........................................................................................................................................................
Registro de Estado de Salidas 61
7.4 Descripción
...................................................................................................................................
Funcional 62
7.5 Ejemplos
................................................................................................................................... 62

© 2019 I2D TECHNOLOGY S.A.C.


Manual de Usuario 5

Capítulo 8: Temporizador del Sistema - SysTick 63


8.1 Configuración
................................................................................................................................... 63
8.2 Descripción
...................................................................................................................................
General 63
8.3 Descripción
...................................................................................................................................
de Registros 64
CSR - Registro
..........................................................................................................................................................
de Control y Estado del SysTick 64
RVR - Registro
..........................................................................................................................................................
del Valor de Recarga del SysTick 64
CVR - Registro
..........................................................................................................................................................
del Valor Actual del SysTick 65
CALIB - Registro
..........................................................................................................................................................
del Valor de Calibración del SysTick 65
8.4 Descripción
...................................................................................................................................
Funcional 65
8.5 Ejemplos
................................................................................................................................... 65

Capítulo 9: Controlador de Interrupción - NVIC 66


9.1 Configuración
................................................................................................................................... 66
9.2 Descripción
...................................................................................................................................
General 66
Fuentes de
..........................................................................................................................................................
Interrupción 66
Interrupciones
..........................................................................................................................................................
no Enm ascarables - NMI 66
Tabla Offset
..........................................................................................................................................................
de Vectores 66
9.3 Descripción
...................................................................................................................................
de Registros 66
ISER0 - Registro
..........................................................................................................................................................
0 de Habilitación de Interrupción 68
ICER0 - Registro
..........................................................................................................................................................
0 de Desabilitación de Interrupción 69
ISPR0 - Registro
..........................................................................................................................................................
0 de Activación de Interrupción Pendiente 70
ICPR0 - Registro
..........................................................................................................................................................
0 de Desactivación de Interrupción Pendiente 71
IABR0 - Registro
..........................................................................................................................................................
0 de Mapa de bits de Interrupciones Activas 72
IPR0 - Registro
..........................................................................................................................................................
0 de Prioridad de Interrupción 73
IPR1 - Registro
..........................................................................................................................................................
1 de Prioridad de Interrupción 73
IPR2 - Registro
..........................................................................................................................................................
2 de Prioridad de Interrupción 73
IPR3 - Registro
..........................................................................................................................................................
3 de Prioridad de Interrupción 74
IPR4 - Registro
..........................................................................................................................................................
4 de Prioridad de Interrupción 74
IPR5 - Registro
..........................................................................................................................................................
5 de Prioridad de Interrupción 74
IPR6 - Registro
..........................................................................................................................................................
6 de Prioridad de Interrupción 75
IPR7 - Registro
..........................................................................................................................................................
7 de Prioridad de Interrupción 75
9.4 Descripción
...................................................................................................................................
Funcional 75
9.5 Ejemplos
................................................................................................................................... 75

Capítulo 10: Interface Serial - USART 76


10.1 Configuración
................................................................................................................................... 76
10.2 Descripción
...................................................................................................................................
General 76
10.3 Descripción
...................................................................................................................................
de Registros 76
CFG - Registro
..........................................................................................................................................................
de Configuración 77
CTL - Registro
..........................................................................................................................................................
de Control 79
STAT - Registro
..........................................................................................................................................................
de Estado 80
INTENSET ..........................................................................................................................................................
- Registro de Lectura y Habilitación de Interrupción 82
INTENCLR..........................................................................................................................................................
- Registro de Deshabilitación de Interrupción 82
RXDAT - Registro
..........................................................................................................................................................
de Recepción de Datos 83
RXDATSTAT..........................................................................................................................................................
- Registro de Recepción y Estado de Datos 83
TXDAT - Registro
..........................................................................................................................................................
de Transm isión de Datos 84
BRG - Registro
..........................................................................................................................................................
Generador de Tasa de Bits 84
INTSTAT -..........................................................................................................................................................
Registro de Estado de Interrupción 84
OSR - Registro
..........................................................................................................................................................
de Selección de Sobrem uestreo 85
ADDR - Registro
..........................................................................................................................................................
de Dirección 85
10.4 Descripción
...................................................................................................................................
Funcional 85
10.5 Ejemplos
................................................................................................................................... 86

© 2019 I2D TECHNOLOGY S.A.C.

5
6 ARM I (LPC) - ARM Cortex-M0+

Configuración
..........................................................................................................................................................
de la interface USARTn 86
Transm isión
..........................................................................................................................................................
de datos 88
Recepción..........................................................................................................................................................
de datos 88
Transm isión
..........................................................................................................................................................
de un arreglo de datos 89
Transm isión
..........................................................................................................................................................
con interrupciones 89
Recepción..........................................................................................................................................................
con interrupciones 89

Capítulo 11: Conversor Analógico a Digital - ADC 90


11.1 Configuración
................................................................................................................................... 90
11.2 Descripción
...................................................................................................................................
General 90
11.3 Descripción
...................................................................................................................................
de Registros 90
CTRL - Registro
..........................................................................................................................................................
de Control 92
SEQA_CTRL ..........................................................................................................................................................
- Registro de Control para Secuencia de Conversión A 92
SEQB_CTRL ..........................................................................................................................................................
- Registro de Control para Secuencia de Conversión B 92
SEQx_GDAT ..........................................................................................................................................................
- Registros A y B de Datos Global. 92
DATn - Registro
..........................................................................................................................................................
de Datos del Canal n 92
THRm _LOW ..........................................................................................................................................................
- Registros 0 y 1 de Com paración de Um bral Inferior 92
THRm _HIGH..........................................................................................................................................................
- Registros 0 y 1 de Com paración de Um bral Superior 92
CHAN_THRSEL
..........................................................................................................................................................
- Registro de Selección de Um bral por Canal 92
INTEN - Registro
..........................................................................................................................................................
de Habilitación de Interrupción 92
FLAGS - Registro
..........................................................................................................................................................
de Flags 92
TRM - Registro
..........................................................................................................................................................
TRIM 92
11.4 Descripción
...................................................................................................................................
Funcional 92
11.5 Ejemplos
................................................................................................................................... 92

Capítulo 12: Comparador Analógico - ACMP 93


12.1 Configuración
................................................................................................................................... 93
12.2 Descripción
...................................................................................................................................
General 93
12.3 Descripción
...................................................................................................................................
de Registros 93
CTRL - Registro
..........................................................................................................................................................
de Control del Com parador 93
LAD - Registro
..........................................................................................................................................................
de Voltaje de Com paración 93
12.4 Descripción
...................................................................................................................................
Funcional 93
12.5 Ejemplos
................................................................................................................................... 93

Capítulo 13: Conversor Digital a Analógico - DAC 94


13.1 Configuración
................................................................................................................................... 94
13.2 Descripción
...................................................................................................................................
General 94
13.3 Descripción
...................................................................................................................................
de Registros 94
CR - Registro
..........................................................................................................................................................
de Conversión del DAC 94
CTRL - Registro
..........................................................................................................................................................
de Control del DAC 94
CNTVAL -..........................................................................................................................................................
Registro de Valor de Pre-carga del Contador 94
13.4 Descripción
...................................................................................................................................
Funcional 94
13.5 Ejemplos
................................................................................................................................... 94

Capítulo 14: Interfaz Periférica Serial - SPI 95


14.1 Configuración
................................................................................................................................... 95
14.2 Descripción
...................................................................................................................................
General 95
14.3 Descripción
...................................................................................................................................
de Registros 95
CFG - Registro
..........................................................................................................................................................
de Configuración 95
DLY - Registro
..........................................................................................................................................................
de Retardo 95
STAT - Registro
..........................................................................................................................................................
de Estado 95
INTENSET ..........................................................................................................................................................
- Registro de Lectura y Habilitación de Interrupción 95
INTENCLR..........................................................................................................................................................
- Registro de Desabilitación de Interrupción 95

© 2019 I2D TECHNOLOGY S.A.C.


Manual de Usuario 7

RXDAT - Registro
..........................................................................................................................................................
de Datos del Receptor 95
TXDATCTL ..........................................................................................................................................................
- Registro de Datos y Control del Transm isor 95
TXDAT - Registro
..........................................................................................................................................................
de Datos del Transm isor 95
TXCTL - Registro
..........................................................................................................................................................
de Control del Transm isor 95
DIV - Registro
..........................................................................................................................................................
Divisor de Reloj 95
INTSTAT -..........................................................................................................................................................
Registro de Estado de la Interrupción 95
14.4 Descripción
...................................................................................................................................
Funcional 96
14.5 Ejemplos
................................................................................................................................... 96

Capítulo 15: Interfaz - I2C 97


15.1 Configuración
................................................................................................................................... 97
15.2 Descripción
...................................................................................................................................
General 97
15.3 Descripción
...................................................................................................................................
de Registros 97
CFG - Registro
..........................................................................................................................................................
de Configuración 97
STAT - Registro
..........................................................................................................................................................
de Estado 97
INTENSET ..........................................................................................................................................................
- Registro de Lectura y Habilitación de Interrupción 97
INTENCLR..........................................................................................................................................................
- Registro de Lectura y Desabilitación de Interrupción 97
TIMEOUT -..........................................................................................................................................................
Registro de Asignación de Tiem po de Espera 97
CLKDIV - Registro
..........................................................................................................................................................
Divisor de Reloj 97
INTSTAT -..........................................................................................................................................................
Registro de Estado de Interrupción 97
MSTCTL -..........................................................................................................................................................
Master - Registro de Control 97
MSTTIME..........................................................................................................................................................
- Master - Registro de Tiem pos 97
MSTDAT -..........................................................................................................................................................
Master - Registro de Datos 97
SLVCTL - ..........................................................................................................................................................
Slave - Registro de Control 97
SLVDAT - ..........................................................................................................................................................
Slave - Registro de Datos 97
SLVADRn..........................................................................................................................................................
- Slave - Registro de Dirección n 98
SLVQUAL0 ..........................................................................................................................................................
- Slave - Registro de Detección de Tram a para Dirección 0 98
MONRXDAT ..........................................................................................................................................................
- Registro de Monitoreo de Recepción de Datos 98
15.4 Descripción
...................................................................................................................................
Funcional 98
15.5 Ejemplos
................................................................................................................................... 98

Apendice A: Guia de programación en Lenguaje C 99


Apéndice B: Arquitectura Von Neumann y Harvard 100
Apéndice C: Arquitectura ARM Cortex-M0+ 101
Apéndice D: IDEs - Instalacion y creación de proyectos 102
19.1 KEIL
...................................................................................................................................
- uVision IDE 102
19.2 MCUXpresso
...................................................................................................................................
IDE 102

Apéndice E: Diagrama esquematico del MPCB-LPC845 103


20.1 Diagrama
...................................................................................................................................
de bloques 103
20.2 CPU
................................................................................................................................... 104
20.3 Fuente
...................................................................................................................................
de alimentación 105
20.4 Entradas
...................................................................................................................................
analógicas 106
20.5 Entradas
...................................................................................................................................
digitales 107
20.6 Salidas
...................................................................................................................................
digitales 107
20.7 Display
................................................................................................................................... 108
20.8 Teclado
...................................................................................................................................
y pulsadores 109
20.9 Buzzer
................................................................................................................................... 109
20.10 Panel
...................................................................................................................................
LED 110

© 2019 I2D TECHNOLOGY S.A.C.

7
8 ARM I (LPC) - ARM Cortex-M0+

20.11 Interfaces
...................................................................................................................................
y uModulos 111

Index 112

© 2019 I2D TECHNOLOGY S.A.C.


Capítulo 1: Introducción 9

Capítulo 1: Introducción
Enter topic text here.

1.1 Reseña historica


Enter topic text here.

1.2 Porqué usar ARM


Enter topic text here.

1.3 Herramientas de desarrollo


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 9 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 10

Capítulo 2: I/O de Propósito General - GPIO


Los pines del GPIO se colocan en grupos lógicos (puertos). Un puerto puede contener hasta 32 pines.

Por lo general, estos pines tienen otras funciones (ver matriz de switches - SWM 37 ). La configuración
de las caracteristicas eléctricas y funciones adicionales son realizadas mediante el bloque IOCON 34 .

Características del GPIO:

Los pines GPIO se pueden configurar como entrada o salida por software.
Todos los pines GPIO tienen por defecto entradas con interrupción desactivada después del reset.
Los registros de los pines permiten sensar y establecer el estado de los pines individualmente.
La dirección (entrada / salida) se puede configurar y borrar de forma individual.

2.1 Configuración
Para utilizar los registros correspondientes al GPIO de un puerto, habilite el reloj correspondiente puerto
del GPIO, mediante el registro SYSAHBCLKCTRL (ver Capítulo 3: Bloque de Configuración del Sistema -
SYSCON 21 ).

2.2 Descripción General


Los pines GPIO se pueden usar de varias maneras para configurar pines como entradas o salidas, y
usar las entradas como combinaciones de interrupciones de nivel y flanco.

Los GPIOs se pueden usar como interrupciones externas junto con el bloque de interrupción de pin.

Los registros del puerto GPIO configuran cada pin GPIO como entrada o salida, y leen el estado de
cada pin si el pin se configura como entrada o configuran el estado de cada pin si el pin se configura
como salida.

2.3 Descripcion de Registros


Nota: en todos los registros GPIO, los bits que no se muestran están reservados.

Las direcciones del puerto GPIO se pueden leer y escribir como bytes, medias palabras (16 bits) o
palabras (32 bits).

Observación: ext en esta tabla y en las tablas subsiguientes indica que los datos leídos después del reset
dependen del estado del pin, que a su vez puede depender de una fuente externa.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
11 27
B0 a B31 R/W 0x0000 Registro de pines del puerto 0, en byte. ext Ref.
a
0x001F
B32 11 a B53 R/W 0x0020 Registro de pines del puerto 1, en byte. ext Ref. 27

a PIO1_0 a PIO1_21
0x0035
- 50 R/W 0x0036 Reservado. - Ref. 27

a
0x003F
12 27
W0 a W31 R/W 0x1000 Registro de pines del puerto 0, en word. ext Ref.
a
0x107C
12 27
W32 a W53 R/W 0x1080 Registro de pines del puerto 1, en word. ext Ref.
a PIO1_0 a PIO1_21

ARM I (LPC) - ARM Cortex-M0+ 10 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 11

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
0x10D4
12 27
DIR0 R/W 0x2000 Registro de dirección del puerto 0. 0 Ref.
12 27
DIR1 R/W 0x2004 Registro de dirección del puerto 1. 0 Ref.
MASK0 50 R/W 0x2080 Registro de enmascaramiento del puerto 0 Ref. 27

0
MASK1 50 R/W 0x2084 Registro de enmascaramiento del puerto 0 Ref. 27

1.
PIN0 50 R/W 0x2100 Registro de estado de pines del puerto 0. ext Ref. 27

PIN1 50 R/W 0x2104 Registro de estado de pines del puerto 1. ext Ref. 27

50 27
MPIN0 R/W 0x2180 Registro de estado de pines ext Ref.
enmascarados del puerto 0.
50 27
MPIN1 R/W 0x2184 Registro de estado de pines ext Ref.
enmascarados del puerto 1.
50 27
SET0 R/W 0x2200 Escritura: Activa las salidas del puerto 0. - Ref.
Lectura: Obtiene el estado de las salidas
del puerto 0.
SET1 50 R/W 0x2204 Escritura: Activa las salidas del puerto 1. - Ref. 27

Lectura: Obtiene el estado de las salidas


del puerto 1.
CLR0 50 WO 0x2280 Desactiva las salidas del puerto 0. - Ref. 27

CLR1 50 WO 0x2284 Desactiva las salidas del puerto 1. - Ref. 27

50 27
NOT0 WO 0x2300 Cambia de estado salidas del puerto 0. - Ref.
50 27
NOT1 WO 0x2304 Cambia de estado salidas del puerto 1. - Ref.
DIRSET0 50 WO 0x2380 Configura como salida los pines del 0 Ref. 27

puerto 0.
DIRSET1 50 WO 0x2384 Configura como salida los pines del 0 Ref. 27

puerto 1.
DIRCLR0 50 WO 0x2400 Configura como entrada los pines del - Ref. 27

puerto 0.
DIRCLR1 WO 0x2404 Configura como entrada los pines del - Ref. 27

puerto 0.
DIRNOT0 WO 0x2480 Cambia configuración los pines del - Ref. 27

puerto 0.
DIRNOT1 WO 0x2484 Cambia configuración los pines del - Ref. 27

puerto 1.

2.3.1 Registros B0 a B53


Los registros B0 a B53 (1 byte de longitud cada uno) permiten el acceso de manera individual para lectura
o escritura de cada pin GPIO. Generalmente se lee y escribe estos bytes para acceder a pines
individuales, pero puede leer o escribir medias palabras (16 bits) para sensar o establecer el estado de
dos pines, y leer o escribir palabras (32 bits) para sensar o establecer el estado de cuatro pines.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
0 Bx, B[x], Cada registro Bx corresponde a un pin del puerto PIOm_n, ext R/W
PBYTE donde:

ARM I (LPC) - ARM Cortex-M0+ 11 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 12

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.
- x = id del registro, 0 a 31 para el puerto 0 y 32 a 53 para el
puerto 1.

Lectura: Lee estado del pin PIOm_n, independientemente de la


dirección (E/S), el enmascaramiento o la función alternativa,
excepto los pines configurados como E / S analógica, que
siempre se leen como 0.

Escritura: Escribe el valor del bit en el pin de salida.


7:1 Reservados (0 en lectura, ignorado en escritura) 0 -

2.3.2 Registros W0 a W53


Cada pin GPIO tiene un registro Wx (32 bits). Cualquier byte, half word o word leída serán todos ceros si
el pin esta en bajo (0 lógico) o todos unos si el pin es en alto (1 lógico), independientemente de la
dirección (E/S), el enmascaramiento o la función alternativa, con excepción de los pines configurados
como E / S analógica, los cuales siempre se leen como ceros. Cualquier escritura borrará el bit de salida
del pin si el valor escrito es cero, de lo contrario colocará en 1 el bit de salida del pin.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 Wx, W[x], Cada registro Wx corresponde a un pin del puerto PIOm_n, ext R/W
PWORD donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.
- x = id del registro, 0 a 31 para el puerto 0 y 32 a 53 para el
puerto 1.

Lectura:
0: Si pin PIOm_n está en 0 lógico (LOW)
0xFFFF FFFF: Si pin PIOm_n está en 1 lógico (HIGH)

Escritura:
0: Coloca en LOW el pin de salida.
0x0000 0001 a 0xFFFF FFFF: Coloca en HIGH el pin de salida.

Observación:
- Solamente los valores 0 ó 0xFFFF FFFF se obtiene de la
lectura.
- Cualquier escritura de un valor diferente de 0 colocará el pin
de salida en HIGH.

2.3.3 Registros DIRm


Cada puerto GPIO tiene un registro de dirección (DIR) para configurar los pines del puerto como entradas
o salidas.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 DIRm, Cada bit n del registro DIRm configura la dirección del pin 0 R/W
DIR[m], PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 = PIOm_31),
DIRP donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

ARM I (LPC) - ARM Cortex-M0+ 12 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 13

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso

DIRm_n = 0: Configura pin PIOm_n como entrada.


DIRm_n = 1: Configura pin PIOm_n como salida.

2.3.4 Registros MASKm


Estos registros solamente afectan la escritura y la lectura de los registros de MPORT (MPIN). Ceros en los
bits de estos registros permiten leer y escribir; unos en los bits de estos registros desactivan la
escritura y dan como resultado ceros en las posiciones correspondientes al leer.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 MASKm, Cada bit n del registro MASKm permite y desactiva la lectura y 0 R/W
MASK[m], escritura del pin PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ...,
MASKP bit 31 = PIOm_31), donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

MASKm_n = 0: Devuelve el estado del pin PIOm_n al leer el


registro MPIN; Cargan el valor del pin PIOm_n al escribir el
registro MPIN.
MASKm_n = 1: Devuelve 0 del pin PIOm_n al leer el registro
MPIN; Pin PIOm_n no es afectado al escribir el registro MPIN.

2.3.5 Registros PINm


La lectura de los registros PINm devuelve el estado actual de los pines del puerto PIOm,
independientemente de la dirección, el enmascaramiento o las funciones alternativas, excepto que los
pines configurados como E / S analógica siempre se leen como 0. Escribir en estos registros carga los
bits de salida de los pines escritos, independientemente del registro de enmascaramiento.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 PINm, Cada bit n del registro PINm lee o carga el estado del pin ext R/W
PIN[m], PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 = PIOm_31),
PORT donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

PINm_n = 0: Lectura: pin en LOW; escritura: carga pin con


LOW.
PINm_n = 1: Lectura: pin en HIGH; escritura: carga pin con
HIGH.

2.3.6 Registros MPINm


Estos registros son similares a los registros PORT (PIN), excepto que el valor leído está enmascarado
por ANDing con los contenidos invertidos del registro MASK correspondiente, y escribir en estos registros
solo afecta a los bits del registro de salida que están habilitados por ceros en el registro MASK
correspondiente.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 MPINm, Cada bit n del registro MPINm contiene o modifica el estado 0 R/W
MPIN[m], del pin PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 =

ARM I (LPC) - ARM Cortex-M0+ 13 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 14

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
MPORTP PIOm_31) no afectados por MASKm_n, donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

Para MASKm_n = 0:
MPINm_n = 0: Lectura: pin en LOW; escritura: carga pin con
LOW.
MPINm_n = 1: Lectura: pin en HIGH; escritura: carga pin con
HIGH.

Para MASKm_n = 1
Lectura: MPINm_n = 0 siempre.
Escritura: MPINm_n no afectado.

2.3.7 Registros SETm


Con este registro los pines PIOm_n configurados como salida pueden cargarse con HIGH al escribir 1 en
el bit correspondiente de este registro, independientemente de los registros MASK. La lectura de estos
registros devuelve el estado de los pines del puerto, independientemente de la direccion (E/S) de los
pines.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 SETm, Cada bit n del registro SETm carga con HIGH, o lee el estado 0 R/W
SET[m], del pin PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 =
SETP PIOm_31), donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

SETm_n = 0: Lectura: pin en LOW; escritura: no afecta pin.


SETm_n = 1: Lectura: pin en HIGH; escritura: carga pin con
HIGH.

2.3.8 Registros CLRm


Con este registro los pines PIOm_n configurados como salida pueden cargarse con LOW escribiendo 1
en el bit correspondiente de este registro de solo escritura, independientemente de los registros MASK.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 CLRm, Cada bit n del registro CLRm carga con LOW el pin de salida NA WO
CLR[m], PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 = PIOm_31),
CLRP donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

CLRm_n = 0: Lectura: No permitido; escritura: no afecta pin.


CLRm_n = 1: Lectura: No permitido; escritura: carga pin con
LOW.

2.3.9 Registros NOTm


El estado de los bits de salida pueden cambiar escribiendo unos en estos registros de solo escritura,
independientemente de los registros MASK.

ARM I (LPC) - ARM Cortex-M0+ 14 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 15

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 NOTm, Cada bit n del registro NOTm cambia el estado del pin de NA WO
NOT[m], salida PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 =
NOTP PIOm_31), donde:
- m = puerto, 0 a 1.
- n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

NOTm_n = 0: Lectura: No permitido; escritura: no afecta pin.


NOTm_n = 1: Lectura: No permitido; escritura: cambia estado
del pin.

2.3.10 Registros DIRSETm


Con el registro DIRSETm los bits del registro DIRm pueden ser cargados con 1, configurando el pin
correspondiente como salida.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 DIRSETm Cada bit n del registro DIRSETm configura como salida el pin 0 WO
, PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 = PIOm_31),
DIRSET[ donde:
m], - m = puerto, 0 a 1.
DIRSETP - n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

DIRSETm_n = 0: Lectura: No permitido; escritura: no afecta


DIRm_n.
DIRSETm_n = 1: Lectura: No permitido; escritura: bit DIRm_n
= 1.

2.3.11 Registros DIRCLRm


Con el registro DIRCLRm los bits del registro DIRm pueden ser cargados con 0, configurando el pin
correspondiente como salida.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 DIRCLRm Cada bit n del registro DIRCLRm configura como entrada el NA WO
, pin PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 =
DIRCLR[ PIOm_31), donde:
m], - m = puerto, 0 a 1.
DIRCLRP - n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

DIRCLRm_n = 0: Lectura: No permitido; escritura: no afecta


DIRm_n.
DIRCLRm_n = 1: Lectura: No permitido; escritura: bit DIRm_n
= 0.

2.3.12 Registros DIRNOTm


Con el registro DIRNOTm los bits del registro DIRm pueden cambiar de valor, cambiando asi la
configuración del pin correspondiente.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
31:0 DIRNOTm Cada bit n del registro DIRCLRm cambia configuración del pin NA WO
, PIOm_n (bit 0 = PIOm_0, bit 1 = PIOm_1, ..., bit 31 = PIOm_31),

ARM I (LPC) - ARM Cortex-M0+ 15 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 16

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso
DIRNOT[ donde:
m], - m = puerto, 0 a 1.
DIRNOTP - n = pin, 0 a 31 para el puerto 0 y 0 a 21 para el puerto 1.

DIRNOTm_n = 0: Lectura: No permitido; escritura: no afecta


DIRm_n.
DIRNOTm_n = 1: Lectura: No permitido; escritura: bit DIRm_n
= ~DIRm_n.

2.4 Descripcion Funcional


Enter topic text here.

2.5 Ejemplos
Los ejemplos a continuación están basado en la tarjeta de desarrollo MPCB-LPC845, desarrollada por
I2D TECHNOLOGY S.A.C., ver diagrama esquemático de la tarjeta de desarrollo 103 .

2.5.1 Parpadeando un LED


En el siguiente ejemplo se desea encender y apagar de forma periodica un LED conectado el pin7 del
puerto 1 (PIO1_7).

// Headers
#include "LPC84x.h"

// Rutina de retardos
uint32_t Delay (uint32_t Counter)
{
// Decrementa mientras cuenta sea mayor a cero
while (Counter-- > 0);

return 0;
}

// Inicialización del puerto


uint32_t GPIO_Init (void)
{
// Habilita clock del GPIO1
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 20);

// Configura como salida GPIO1_7


LPC_GPIO_PORT->DIRSET[1] = (1U << 7);

// GPIO1_7 en HIGH
LPC_GPIO_PORT->SET[1] = (1U << 7);

return 0;
}

// Función principal
int main (void)
{
// Actualiza variable que contiene valor de la frecuencia del core
SystemCoreClockUpdate();

// Inicialización del puerto


GPIO_Init();

// Bucle infinito

ARM I (LPC) - ARM Cortex-M0+ 16 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 17

while(1)
{
// GPIO1_7 cambia de estado
LPC_GPIO_PORT->NOT[1] = (1U << 7);

Delay(1000000);
}

return 0;
}

2.5.2 Enmascaramiento de pines


En el siguiente ejemplo se desea que los pines PIO1_14 al PIO1_21 se comporten como un contador
binario de 8 bits.

// Headers
#include "LPC84x.h"

// Rutina de retardos
uint32_t Delay (uint32_t Counter)
{
// Decrementa mientras cuenta sea mayor a cero
while (Counter-- > 0);

return 0;
}

// Inicialización del puerto


uint32_t GPIO_Init (void)
{
// Habilita clock del GPIO1
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 20);

// Configura como salida PIO1_14 al PIO1_21


LPC_GPIO_PORT->DIRSET[1] = (0xFF << 14);

// PIO1_14 al PIO1_21 en LOW


LPC_GPIO_PORT->CLR[1] = (0xFF << 14);

return 0;
}

// Función principal
int main (void)
{
uint32_t vCounter = 0;

// Actualiza variable que contiene valor de la frecuencia del core


SystemCoreClockUpdate();

// Inicialización del puerto


GPIO_Init();

// Bucle infinito
while(1)
{
// Enmascara todos los pines menos PIO1_[14..21]
LPC_GPIO_PORT->MASK[1] = ~(0xFF << 14);

// Escribe valor de la cuenta en los pines PIO1_[14..21]


LPC_GPIO_PORT->MPIN[1] = (vCounter << 14);

ARM I (LPC) - ARM Cortex-M0+ 17 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 18

// Desactiva enmascarado
LPC_GPIO_PORT->MASK[1] = 0;

// Incrementa contador
vCounter++;

Delay(1000000);
}

return 0;
}

2.5.3 Lectura de pulsadores


En el siguiente ejemplo se desea leer el estado de los pulsadores presentes en los pines PIO1_14 al
PIO1_17, y reflejarlos en los pines PIO1_18 al PIO1_21 en orden invertido.

En este ejemplo se requiere activar las resistencias PULL-UP de cada entrada.

// Headers
#include "LPC84x.h"

// Rutina de retardos
uint32_t Delay (uint32_t Counter)
{
// Decrementa mientras cuenta sea mayor a cero
while (Counter-- > 0);

return 0;
}

// Inicialización del puerto


uint32_t GPIO_Init (void)
{
// Habilita clock del GPIO1
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 20);

// Configura como salida PIO1_14 al PIO1_17


LPC_GPIO_PORT->DIRSET[1] = (0xF << 14);

// Configura como salida PIO1_18 al PIO1_21


LPC_GPIO_PORT->DIRCLR[1] = (0xF << 18);

// Habilita clock del IOCON


LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 18);

// Activación de resistencia pull-up del PIO1_14


LPC_IOCON->PIO1_14 &= ~(0x3 << 3); // Limpia bits 3 y 4
LPC_IOCON->PIO1_14 |= (0x2 << 3); // Configura pull-up

// Activación de resistencia pull-up del PIO1_15


LPC_IOCON->PIO1_15 &= ~(0x3 << 3); // Limpia bits 3 y 4
LPC_IOCON->PIO1_15 |= (0x2 << 3); // Configura pull-up

// Activación de resistencia pull-up del PIO1_16


LPC_IOCON->PIO1_16 &= ~(0x3 << 3); // Limpia bits 3 y 4
LPC_IOCON->PIO1_16 |= (0x2 << 3); // Configura pull-up

// Activación de resistencia pull-up del PIO1_17


LPC_IOCON->PIO1_17 &= ~(0x3 << 3); // Limpia bits 3 y 4
LPC_IOCON->PIO1_17 |= (0x2 << 3); // Configura pull-up

ARM I (LPC) - ARM Cortex-M0+ 18 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 19

// Deshabilita clock del IOCON


LPC_SYSCON->SYSAHBCLKCTRL[0] &= ~(1U << 18);

// PIO1_18 al PIO1_21 en LOW


LPC_GPIO_PORT->CLR[1] = (0xF << 18);

return 0;
}

// Función principal
int main (void)
{
// Actualiza variable que contiene valor de la frecuencia del core
SystemCoreClockUpdate();

// Inicialización del puerto


GPIO_Init();

// Bucle infinito
while(1)
{
// Lectura de pines PIO1_[14..17] y escritura de pines PIO1_[18..21]
LPC_GPIO_PORT->B1[21] = LPC_GPIO_PORT->B1[14];
LPC_GPIO_PORT->B1[20] = LPC_GPIO_PORT->B1[15];
LPC_GPIO_PORT->B1[19] = LPC_GPIO_PORT->B1[16];
LPC_GPIO_PORT->B1[18] = LPC_GPIO_PORT->B1[17];

Delay(10);
}

return 0;
}

2.5.4 LCD Alfanumérico


Enter topic text here.

#include "LPC84x.h" // Device header

int32_t Delay (uint32_t Counter)


{
while (Counter-- > 0); // Decrementa mientras cuenta sea mayor a cero

return 0;
}

int32_t GPIO_Init (void)


{
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 20); /* enable GPIO1 clock */

LPC_GPIO_PORT->DIRSET[1] = (1U << 7); /* configure GPIO1_7 as output */


LPC_GPIO_PORT->SET[1] = (1U << 7); /* GPIO1_7 in 1 logic */

return 0;
}

int main (void)


{
SystemCoreClockUpdate();

while(1)
{ /* Loop forever

ARM I (LPC) - ARM Cortex-M0+ 19 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 2: I/O de Propósito General - GPIO 20

*/
LPC_GPIO_PORT->NOT[1] = (1U << 7); /* GPIO1_7 in 1 logic */
Delay(1000000);
}
}

2.5.5 Teclado matricial


Enter topic text here.

#include "LPC84x.h" // Device header

int32_t Delay (uint32_t Counter)


{
while (Counter-- > 0); // Decrementa mientras cuenta sea mayor a cero

return 0;
}

int32_t GPIO_Init (void)


{
LPC_SYSCON->SYSAHBCLKCTRL[0] |= (1U << 20); /* enable GPIO1 clock */

LPC_GPIO_PORT->DIRSET[1] = (1U << 7); /* configure GPIO1_7 as output */


LPC_GPIO_PORT->SET[1] = (1U << 7); /* GPIO1_7 in 1 logic */

return 0;
}

int main (void)


{
SystemCoreClockUpdate();

while(1)
{ /* Loop forever
*/
LPC_GPIO_PORT->NOT[1] = (1U << 7); /* GPIO1_7 in 1 logic */
Delay(1000000);
}
}

ARM I (LPC) - ARM Cortex-M0+ 20 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 21

Capítulo 3: Bloque de Configuración del Sistema - SYSCON


El bloque SYSCON es encargado de:

Control de la señal de reloj


- Configurar el bloque PLL.
- Configurar el oscilador del sistema, el oscilador watchdog y el oscilador FRO.
- Permitir relojes a periféricos y memorias individualmente.
- Configurar la salida del reloj.
- Configurar los divisores de reloj, el reloj del filtro digital y el reloj de tasa de baudios de USART.
- Configurar el reloj de Teclado Capacitivo, ADC y SCT.
Controlar el reset de los periféricos individualmente.
Seleccionar los pines para las interrupciones de pines externos y el motor de coincidencia de patrones.
Configuraciar los modos de consumo de energía reducida.
Controlar el despertador (Wake-up).
Configurar el BOD.
MTB trace start y stop.
Controlar la latencia de interrupción.
Seleccionar una fuente para el NMI (Interrupción no enmascarable).
Calibrar el SysTick.

3.1 Configuración
Configure el bloque SYSCON de la siguiente manera:

• SYSCON utiliza los pines CLKIN, CLKOUT, RESET y XTALIN / OUT. Configure las funciones de los pines
a través de la matriz del interruptor. Ver la Sección 8.4.
• No se necesita configuración de reloj. El reloj del bloque SYSCON siempre está habilitado. Por defecto,
el bloque SYSCON es sincronizado por el FRO.

3.1.1 FRO
El FRO proporciona una selección de salidas de 18 MHz, 24 MHz y 30 MHz que se puede utilizar como
reloj del sistema. Además, fro_oscout puede dividirse para proporcionar frecuencias de 1.125 MHz, 1.5
MHz, 1.875 MHz, 9 MHz, 12 MHz o 15 MHz para el reloj del sistema.

De forma predeterminada, fro_oscout es de 24 MHz y está dividido por 2 para proporcionar una frecuencia
de reloj predeterminada del sistema (CPU) de 12 MHz.

1. Por defecto, el FRO está habilitado. Si es necesario, el FRO puede habilitarse en el registro
PDRUNCFG: Sección 8.6.48 "Registro de configuración de energía"
2. Seleccione el fro_oscout (30 MHz / 24 MHz / 18 MHz) utilizando la llamada a la API set_fro_frequency:
Capítulo 9 "Rut de la API FRO de LPC84x" y Figura 9 "Generación de reloj LPC84x (continuación)".
3. El registro FROOSCCTRL se puede usar para seleccionar fro_oscout directo o dividido fro_oscout para
fro clock.
4. Use el registro FRODIRECTCLKUEN para actualizar el reloj fro: Sección 8.6.7 "Registro de actualización
de fuente de reloj directo FRO"
5. Basado en el bit de arranque de baja potencia en el FAIM, la división predeterminada por 2 se
reemplaza por la división por 16.

3.1.2 PLL
El PLL crea un reloj de salida estable a una frecuencia más alta que el reloj de entrada. Si necesita un
reloj principal con una frecuencia más alta que el reloj de entrada, use el PLL para aumentar la frecuencia
de entrada.

1. Encienda el PLL del sistema en el registro PDRUNCFG. Sección 8.6.48 "Registro de configuración de
energía"
2. Seleccione la entrada PLL en el registro SYSPLLCLKSEL. Usted tiene las siguientes opciones de
entrada:
- FRO: oscilador interno de 12 MHz (predeterminado).

ARM I (LPC) - ARM Cortex-M0+ 21 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 22

- Entrada de reloj externo: puede ser un oscilador de cristal externo usando los pines XTALIN / XTALOUT o
CLKIN desde el pin externo.
Observación: La frecuencia mínima para PLL es de 10 MHz. Sección 8.6.9 "Registro de selección de
fuente de reloj PLL del sistema"
3. Actualice la fuente de reloj PLL en el registro SYSPLLCLKUEN. Sección 8.6.10 "Registro de
actualización de la fuente de reloj PLL del sistema"
4. Configure los divisores PLL M y N. Sección 8.6.2 "Registro de control PLL del sistema"
5. Espere a que el PLL se bloquee controlando el estado de bloqueo de PLL. Sección 8.6.3 "Registro de
estado del PLL del sistema"

3.1.3 Main clock y System clock


Enter topic text here.

3.1.4 Bloque oscilador utilizando XTALIN y XTALOUT


Enter topic text here.

3.2 Descripción General


Enter topic text here.

3.2.1 Generación de reloj


El bloque de control del sistema genera todos los relojes para el microcontrolador. Solo el oscilador de
baja consumo utilizado para el tiempo de activación (WAKE-UP timing) está controlado por la PMU. Con
excepción del reloj USART, del reloj SPI, del reloj I2C, del reloj CAPT, del reloj SCTimer / PWM, del reloj
ADC y del reloj para configurar los filtros de interferencia (glitch filters) de los pines de E / S digitales, los
relojes del Core y de los periféricos funcionan al misma frecuencia. La frecuencia máxima del reloj del
sistema es de 30 MHz.

Observación: La frecuencia del reloj principal (main clock frequency) está limitada a 100 MHz.

ARM I (LPC) - ARM Cortex-M0+ 22 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 23

ARM I (LPC) - ARM Cortex-M0+ 23 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 24

3.3 Descripcion de Registros


Todos los registros del bloque de control del sistema son de 4 bytes. Los detalles de los registros
aparecen en la descripción de cada uno. Los valores al reset describen el contenido de los registros
después de que se haya ejecutado el gestor de arranque.

En la tabla siguiente se muestra la dirección offset de todos los registros. Los registros reservados no
deben ser escritos .

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
27 27
SYSMEMREMAP R/W 0x000 System memory remap 0x2 Ref.
- - 0x004 Reserved - -
SYSPLLCTRL 27 R/W 0x008 System PLL control 0 Ref. 27

SYSPLLSTAT 27 R 0x00C System PLL status 0 Ref. 27

- - 0x010 Reserved -
- - 0x014 Reserved -
- - 0x018 Reserved -
- - 0x01C Reserved -
27 27
SYSOSCCTRL R/W 0x020 System oscillator control 0x000 Ref.
27 27
WDTSOCCTRL R/W 0x024 Watchdog oscillator control 0x000 Ref.
FROOSCCTRL 27 R/W 0x028 FRO oscillator control 0x8801 Ref. 27

- - 0x02C Reserved -
FRODIRECTCLKUE R/W 0x030 FRO direct clock source update enable 0
N 27
- - 0x034 Reserved -
27
SYSRSTSTAT R/W 0x038 System reset status register 0
SYSPLLCLKSEL 27 R/W 0x040 System PLL clock source select 0
SYSPLLCLKUEN R/W 0x044 System PLL clock source update enable 0
27

MAINCLKPLLSEL R/W 0x048 Main clock PLL source select 0


27

MAINCLKPLLUEN R/W 0x04C Main clock PLL source update enable 0


27

MAINCLKSEL 27 R/W 0x050 Main clock source select 0


MAINCLKUEN 27 R/W 0x054 Main clock source update enable 0
27
SYSAHBCLKDIV R/W 0x058 System clock divider 1
- - 0x05C Reserved -
CAPTCLKSEL 28 R/W 0x060 CAPT clock source select 0x7
ADCCLKSEL 28 R/W 0x064 ADC clock source select 0
28
ADCCLKDIV R/W 0x068 ADC clock divider 0
28
SCTCLKSEL R/W 0x06C SCT clock source select 0
SCTCLKDIV 28 R/W 0x070 SCT clock divider 0
EXTCLKSEL 28 R/W 0x074 External clock source select 0
- - 0x078 Reserved -
- - 0x07C Reserved -
SYSAHBCLKCTRL0 R/W 0x080 System clock control 0 0x17
28

ARM I (LPC) - ARM Cortex-M0+ 24 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 25

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
SYSAHBCLKCTRL1 R/W 0x084 System clock control 1 0
30
30
PRESETCTRL0 R/W 0x088 Peripheral reset control 0 0xFFFFF
FFF
30
PRESETCTRL1 R/W 0x08C Peripheral reset control 1 0x1F
30
UART0CLKSEL R/W 0x090 Function clock source select for UART0 0x7
UART1CLKSEL 30 R/W 0x094 Function clock source select for UART1 0x7
UART2CLKSEL 30 R/W 0x098 Function clock source select for UART2 0x7
30
UART3CLKSEL R/W 0x09C Function clock source select for UART3 0x7
30
UART4CLKSEL R/W 0x0A0 Function clock source select for UART4 0x7
I2C0CLKSEL 30 R/W 0x0A4 Function clock source select for I2C0 0x7
30
I2C1CLKSEL R/W 0x0A8 Function clock source select for I2C1 0x7
30
I2C2CLKSEL R/W 0x0AC Function clock source select for I2C2 0x7

I2C3CLKSEL 30 R/W 0x0B0 Function clock source select for I2C3 0x7

SPI0CLKSEL 30 R/W 0x0B4 Function clock source select for SPI0 0x7
SPI1CLKSEL 30 R/W 0x0B8 Function clock source select for SPI1 0x7
- - 0x0BC Reserved -
- - 0x0C0 Reserved -
- - 0x0C4 Reserved -
- - 0x0C8 Reserved -
- - 0x0CC Reserved -
30
FRG0DIV R/W 0x0D0 Fractional generator divider value 0x0
FRG0MULT 30 R/W 0x0D4 Fractional generator multiplier value 0x0
FRG0CLKSEL 30 R/W 0x0D8 FRG0 clock source select 0
- - 0x0DC Reserved -
30
FRG1DIV R/W 0x0E0 Fractional generator divider value 0x0
FRG1MULT 30 R/W 0x0E4 Fractional generator multiplier value 0x0
FRG1CLKSEL 30 R/W 0x0E8 FRG1 clock source select 0
- - 0x0EC Reserved -
CLKOUTSEL R/W 0x0F0 CLKOUT clock source select 0
CLKOUTDIV R/W 0x0F4 CLKOUT clock divider 0
- - 0x0F8 - -
EXTTRACECMD R/W 0x0FC External trace buffer command register 0
PIOPORCAP0 R 0x100 POR captured PIO0 status 0 User
depende
nt
PIOPORCAP1 R 0x104 POR captured PIO1 status 0 User
depende
nt
- - 0x108 - Reserved -
0x130
IOCONCLKDIV6 R/W 0x134 Peripheral clock 6 to the IOCON block for 0
programmable glitch filter

ARM I (LPC) - ARM Cortex-M0+ 25 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 26

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
IOCONCLKDIV5 R/W 0x138 Peripheral clock 5 to the IOCON block for 0
programmable glitch filter
IOCONCLKDIV4 R/W 0x13C Peripheral clock 4 to the IOCON block for 0
programmable glitch filter
IOCONCLKDIV3 R/W 0x140 Peripheral clock 3 to the IOCON block for 0
programmable glitch filter
IOCONCLKDIV2 R/W 0x144 Peripheral clock 2 to the IOCON block for 0
programmable glitch filter
IOCONCLKDIV1 R/W 0x148 Peripheral clock 1 to the IOCON block for 0
programmable glitch filter
IOCONCLKDIV0 R/W 0x14C Peripheral clock 0 to the IOCON block for 0
programmable glitch filter
BODCTRL R/W 0x150 Brown-Out Detect 0
SYSTCKCAL R/W 0x154 System tick counter calibration 0
- R/W 0x158 - Reserved -
0x16C
IRQLATENCY R/W 0x170 IRQ delay. Allows trade-off between 0x00000
interrupt latency and determinism. 010
NMISRC R/W 0x174 NMI source control 0
PINTSEL0 R/W 0x178 GPIO Pin Interrupt Select register 0 0
PINTSEL1 R/W 0x17C GPIO Pin Interrupt Select register 1
PINTSEL2 R/W 0x180 GPIO Pin Interrupt Select register 2
PINTSEL3 R/W 0x184 GPIO Pin Interrupt Select register 3
PINTSEL4 R/W 0x188 GPIO Pin Interrupt Select register 4
PINTSEL5 R/W 0x18C GPIO Pin Interrupt Select register 5
PINTSEL6 R/W 0x190 GPIO Pin Interrupt Select register 6
PINTSEL7 R/W 0x194 GPIO Pin Interrupt Select register 7
- - 0x198 - Reserved -
0x200
STARTERP0 R/W 0x204 Start logic 0 pin wake-up enable register 0
- - 0x208 - Reserved -
0x210
STARTERP1 R/W 0x214 Start logic 1 pin wake-up enable register 0
- - 0x218 - Reserved -
0x22C
PDSLEEPCFG R/W 0x230 Power-down states in deep-sleep mode 0xFFFF
PDAWAKECFG R/W 0x234 Power-down states for wake-up from 0xEDF8
deep-sleep
PDRUNCFG R/W 0x238 Power-down configuration register 0xEDF8
- - 0x23C - Reserved -
0x3F4
DEVICE_ID R 0x3F8 Device ID part
depende
nt

ARM I (LPC) - ARM Cortex-M0+ 26 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 27

3.3.1 SYSMEMREMAP - Registro de remapeo de memoria del sistema


Enter topic text here.

3.3.2 SYSPLLCTRL - Registro de control del PLL del sistema


Enter topic text here.

3.3.3 SYSPLLSTAT - Registro de estado del PLL del sistema


Enter topic text here.

3.3.4 SYSOSCCTRL - Registro de control del oscilador del sistema


Enter topic text here.

3.3.5 WDTSOCCTRL - Registro de control del oscilador del Watchdog


Enter topic text here.

3.3.6 FROOSCCTRL - Registro de control del oscilador del FRO


Enter topic text here.

3.3.7 FRODIRECTCLKUEN - Registro actualización de la fuente de clock del


FRO
Enter topic text here.

3.3.8 SYSRSTSTAT - Registro de estado del reset del sistema


Enter topic text here.

3.3.9 SYSPLLCLKSEL - Registro de selección de la fuente de reloj del PLL de


sistema
Enter topic text here.

3.3.10 SYSPLLCLKUEN - Registro de actualización de la fuente de reloj del PLL


del sistema
Enter topic text here.

3.3.11 MAINCLKPLLSEL - Registro de selección de la fuente de reloj del PLL para


el reloj principal
Enter topic text here.

3.3.12 MAINCLKPLLUEN - Registro de actualización de la fuente de reloj del PLL


para el reloj principal
Enter topic text here.

3.3.13 MAINCLKSEL - Registro de selección de la fuente de reloj principal


Enter topic text here.

3.3.14 MAINCLKUEN - Registro de actualización de la fuente de reloj


Enter topic text here.

3.3.15 SYSAHBCLKDIV - Registro divisor del reloj del sistema


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 27 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 28

3.3.16 CAPTCLKSEL - Registro de selección de la fuente de reloj del Tactil


Capacitivo
Enter topic text here.

3.3.17 ADCCLKSEL - Registro de selección de la fuente de reloj del ADC


Enter topic text here.

3.3.18 ADCCLKDIV - Registro divisor del reloj del ADC


Enter topic text here.

3.3.19 SCTCLKSEL - Registro de selección de la fuente de reloj del SCT


Enter topic text here.

3.3.20 SCTCLKDIV - Registro divisor del reloj del SCT


Enter topic text here.

3.3.21 EXTCLKSEL - Registro de selección de la fuente de reloj externa


Enter topic text here.

3.3.22 SYSAHBCLKCTRL0 - Registro 0 de control de reloj del sistema


The SYSAHBCLKCTRL0 register enables the clocks to individual system and peripheral blocks. The
system clock (bit 0) provides the clock for the AHB, the APB bridge, the ARM Cortex-M0+, the SYSCON
block, and the PMU. This clock cannot be disabled.

Bit Símbolo Descripción Valor al


Reset
0 SYS Habilita el reloj para el AHB, el APB, los relojes del núcleo del Cortex-M0+, 1
SYSCON, y el PMU. Este bit es de solo lectura y siempre es leído como 1.
0: Deshabilita
1: Habilita
1 ROM Habilita el reloj para el ROM. 1
0: Deshabilita
1: Habilita
2 RAM0_1 Habilita el reloj para el SRAM0 y SRAM1. 1
0: Deshabilita
1: Habilita
3 - 0
4 FLASH Habilita el reloj para la FLASH. 1
0: Deshabilita
1: Habilita
5 I2C0 Habilita el reloj para el I2C0. 0
0: Deshabilita
1: Habilita
6 GPIO0 Habilita el reloj para los registros del puerto GPIO0. 0
0: Deshabilita
1: Habilita
7 SWM Habilita el reloj para la matriz de switches - SWM. 1
0: Deshabilita
1: Habilita
8 SCT Habilita el reloj para el timer configurable por estados - SCTimer/PWM 0
0: Deshabilita
1: Habilita
9 WKT Habilita el reloj para el timer del self-wake-up 0

ARM I (LPC) - ARM Cortex-M0+ 28 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 29

Bit Símbolo Descripción Valor al


Reset
0: Deshabilita
1: Habilita
10 MRT Habilita el reloj para el Multi-rate timer 0
0: Deshabilita
1: Habilita
11 SPI0 Habilita el reloj para el SPI0 0
0: Deshabilita
1: Habilita
12 SPI1 Habilita el reloj para el SPI1 0
0: Deshabilita
1: Habilita
13 CRC Habilita el reloj para el CRC 0
0: Deshabilita
1: Habilita
14 UART0 Habilita el reloj para el UART0 0
0: Deshabilita
1: Habilita
15 UART1 Habilita el reloj para el UART1 0
0: Deshabilita
1: Habilita
16 UART2 Habilita el reloj para el UART2 0
0: Deshabilita
1: Habilita
17 WWDT Habilita el reloj para el WWDT 0
0: Deshabilita
1: Habilita
18 IOCON Habilita el reloj para el bloque IOCON 0
0: Deshabilita
1: Habilita
19 ACMP Habilita el reloj para el comparador analógico 0
0: Deshabilita
1: Habilita
20 GPIO1 Habilita el reloj para los registros del puerto GPIO1. 0
0: Deshabilita
1: Habilita
21 I2C1 Habilita el reloj para el I2C1 0
0: Deshabilita
1: Habilita
22 I2C2 Habilita el reloj para el I2C2 0
0: Deshabilita
1: Habilita
23 I2C3 Habilita el reloj para el I2C3 0
0: Deshabilita
1: Habilita
24 ADC Habilita el reloj para el ADC 0
0: Deshabilita
1: Habilita
25 CTIMER0 Habilita el reloj para el CTIMER0 0
0: Deshabilita
1: Habilita
26 MTB Habilita el reloj para los registros de control del micro-trace buffer, utilizado 0
para propósitos de depuración.
0: Deshabilita
1: Habilita

ARM I (LPC) - ARM Cortex-M0+ 29 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 30

Bit Símbolo Descripción Valor al


Reset
27 DAC0 Habilita el reloj para el DAC0 0
0: Deshabilita
1: Habilita
28 GPIO_INT Habilita el reloj para los registros de interrupción de los pines del GPIO 0
0: Deshabilita
1: Habilita
29 DMA Habilita el reloj para el DMA 0
0: Deshabilita
1: Habilita
30 UART3 Habilita el reloj para el UART3 0
0: Deshabilita
1: Habilita
31 UART4 Habilita el reloj para el UART4 0
0: Deshabilita
1: Habilita

3.3.23 SYSAHBCLKCTRL1 - Registro 1 de control de reloj del sistema


Enter topic text here.

3.3.24 PRESETCTRL0 - Registro 0 de control de reset de periférico


Enter topic text here.

3.3.25 PRESETCTRL1 - Registro 1 de control de reset de periférico


Enter topic text here.

3.3.26 FCLKSEL - Registros de selección de reloj de periféricos


Enter topic text here.

3.3.27 FRG0DIV - Registro DIV del divisor fraccionario 0


Enter topic text here.

3.3.28 FRG0MULT - Registro MULT del divisor fraccionario 0


Enter topic text here.

3.3.29 FRG0CLKSEL - Registro de selección de la fuente de reloj del divisor


fraccionario 0
Enter topic text here.

3.3.30 FRG1DIV - Registro DIV del divisor fraccionario 1


Enter topic text here.

3.3.31 FRG1MULT - Registro MULT del divisor fraccionario 1


Enter topic text here.

3.3.32 FRG1CLKSEL - Registro de selección de la fuente de reloj del divisor


fraccionario 1
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 30 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 31

3.4 Descripcion Funcional

3.4.1 Reset
Las fuentes de reset son las siguientes:
El pin de RESET.
Reset por Watchdog.
Reset de encendido (POR)
Detección de bajo voltaje (BOD).
Reset por software.

El pin RESET es un pin de entrada con Schmitt trigger. La activación del reset del chip por
cualquier fuente, una vez que el voltaje de operación alcanza un nivel utilizable, reinicia el FRO
causando que el reset permanezca activo hasta que la fuente de reset ex terno se desactive, el
oscilador esté generando y el controlador del flash haya completado su inicialización.

Cuando se elimina el reset interno, el procesador comienza a ejecutar en la dirección 0, que es


inicialmente el vector de reset mapeado desde el bloque de arranque. En ese punto, todos los
registros de procesador y periféricos han sido inicializado a valores predeterminados.

3.4.2 Detección de bajo voltaje


El circuito de detección de bajo voltaje o BOD (Brow n-out deteccion) incluye hasta tres niveles
para monitorear el voltaje en el pin VDD. Si este voltaje cae por debajo de uno de los niveles
seleccionados, la BOD activa una señal de interrupción en el NVIC o genera un reset, dependiendo
del valor del bit BODRSTENA en el registro de control de BOD (descripción del registro BOD 24 ).

La señal de interrupción puede habilitarse en el Registro de habilitación de interrupción en el NVIC


(controlador de interrupcion 66 ) para generar una interrupción de CPU; si no, el software puede
monitorear la señal leyendo un registro de estado dedicado.

Si la interrupción BOD está habilitada en el registro STARTERP1 (descripción del registro


STARTERP1 24 ) y en el NVIC, la interrupción BOD puede sacar al chip del modo Deep-sleep y
Pow er-dow n.

Si el reset por BOD está habilitado, el reset forzado del BOD puede sacar al chip del modo Deep-
sleep y Pow er-dow n.

3.4.3 Bloque PLL


El microcontrolador utiliza un bloque PLL para la generar la señal de reloj para el núcleo y los periféricos.

ARM I (LPC) - ARM Cortex-M0+ 31 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 32

En el diagrama de bloques del PLL, ver figura anterior, el rango de frecuencia de entrada (FCLKIN) es de
10 MHz a 25 MHz. El reloj de entrada alimenta directamente al detector de frecuencia de fase (PFD). Este
bloque compara la fase y la frecuencia de sus entradas, y genera una señal de control cuando la fase y / o
la frecuencia no coinciden. El filtro del bucle filtra estas señales de control y alimenta el oscilador
controlado por corriente (CCO), que genera el reloj CCO. El rango de frecuencia de CCO (FCCO) es de 156
MHz a 320 MHz. Este reloj es dividido por 2xP por el divisor posterior programable para generar el reloj de
salida (FCLKOUT). El reloj de salida se divide por M por el divisor de retroalimentación programable para
generar el reloj de retroalimentación. La señal de salida del detector de frecuencia de fase también es
supervisada por el detector de enganche (Lock detector), para indicar cuando el PLL se ha enganchado
(Locked) con el reloj de entrada.

Observación: Los valores del divisor para P y M se deben seleccionar de modo que la frecuencia de reloj
de salida del PLL (FCLKOUT) sea inferior a 30 MHz porque el reloj principal (main clock) está limitado a
una frecuencia máxima de 30 MHz.

3.5 Ejemplos
Enter topic text here.

3.5.1 Habilitación del clock de GPIOs


En el siguiente ejemplo se habilita el clock de los GPIOs y se configura como salida el pin7 del puerto 1
(PIO1_7).

// Inicialización del puerto


void GPIO_Init (void)
{
// Habilita clock del GPIO0, ver descripcion de los registros SYSAHBC LKC TRL
LPC _SYSC ON->SYSAHBC LKC TRL[0] |= (1U << 6);

// Habilita clock del GPIO1, ver descripcion de los registros SYSAHBC LKC TRL
LPC _SYSC ON->SYSAHBC LKC TRL[0] |= (1U << 20);

// C onfigura como salida GPIO1_7


LPC _GPIO_PORT->DIRSET[1] = (1U << 7);

// GPIO1_7 en HIGH
LPC _GPIO_PORT->SET[1] = (1U << 7);
}

ARM I (LPC) - ARM Cortex-M0+ 32 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 3: Bloque de Configuración del Sistema - SYSCON 33

3.5.2 Asignación de pines en el UART0


En el siguiente ejemplo se asigna las señales los pines PIO0_25 y PIO0_24 a las señales TXD0 y RXD0
respectivamente (UART0).

// C onexion de pines del UART0

// Habilita señal de reloj del SWM


LPC _SYSC ON->SYSAHBC LKC TRL[0] |= (1U << 7);

// Asignacion de pines a las señales TXD0 y RXD0, ver descripcion del registro PINASSIGN0
LPC _SWM->PINASSIGN0 &= ~((0xFF << 0) | (0xFF << 8));
LPC _SWM->PINASSIGN0 |= ((25 << 0) | (24 << 8));

// Deshabilita señal de reloj del SWM


LPC _SYSC ON->SYSAHBC LKC TRL[0] &= ~(1U << 7);

ARM I (LPC) - ARM Cortex-M0+ 33 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 4: Configuración de I/O - IOCON 34

Capítulo 4: Configuración de I/O - IOCON


El bloque IOCON 34 es idéntico para todos los dispositivos de la serie LPC84x, y contiene la
configuración de las características eléctricas de cada pin. Los registros correspondientes a los pines no
disponibles en un empaquetado específico están reservados.

Para cada pin, las siguientes características eléctricas son configurables:


Resistencia Pull-up / Pull-down.
Modo Open-drain.
Entradas con histeresis.
Filtro digital con constante de tiempo programable.
Modo analógico (solo válido para conjunto de pines según hoja de datos).

Sólo una interface I2C soporta modo Fast-mode Plus, con una tasa máxima de 1 Mbit/s y pines "True
Open-drain" (par de pines establecidos en la hoja de datos).
Tres interfaces I2C soportan tasas de hasta 400 Kbit/s, con los pines estandar.

4.1 Configuración
Para utilizar los registros correspondientes al bloque IOCON, habilite el reloj correspondiente al
IOCON, mediante el bit 18 del registro SYSAHBCLKCTRL (ver Capítulo 3: Bloque de Configuración
del Sistema - SYSCON 21 ).

Una vez realizada la configuración de los pines, puede deshabilitar el reloj correspondiente al
IOCON, para reducir el consumo de energía.

Nota: Si los pines open-drain, PIO0_10 y PIO0_11, no están disponibles en el empaquetado,


configurarlos como sigue para evitar que se encuentren flotando internamente:
- Colocar en 1 lógico los bits 10 y 11 del registro GPIO_DIR0, para configurarlo como salida.
- Escribir 1 en los bits 10 y 11 del registro GPIO CLR0 para colocarlos internamente en estado
LOW.

4.2 Descripción General

ARM I (LPC) - ARM Cortex-M0+ 34 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 4: Configuración de I/O - IOCON 35

4.2.1 Configuración de pines

4.2.2 Función de los pines


La función de los pines se determina completamente a través de la matriz de conmutación. Por defecto, la
función GPIO se asigna a cada pin. La matriz de conmutación puede asignar todas las funciones de la
tabla de funciones movibles a cualquier pin del bloque IOCON o habilitar una función especial tal como
una entrada analógica en un pin específico.

Ver: Funciones movibles (assign to pins PIO0_0 to PIO0_31 and PIO1_0 to PIO1_21 through switch matrix)
en matriz de switches - SWM 37 .

4.2.3 Modo del pin (Pin mode)


El bit MODE en los registros IOCON permite habilitar o deshabilitar la resistencia pull-up / pull-down
en cada pin del chip

MODE bit is controlled by FAIM value during reset, two FAIM bits data for each PAD MODE bit. After
reset release, PAD pull-up/pull-down can be updated by software. See Section 4.2.1 “FAIM bit
definitions”.

The repeater mode enables the pull-up resistor if the pin is high and enables the pull-down resistor if
the pin is low. This causes the pin to retain its last known state if it is configured as an input and is
not driven externally. Repeater mode may typically be used to prevent a pin from floating (and
potentially using significant power if it floats to an indeterminate state) if it is temporarily not driven.

ARM I (LPC) - ARM Cortex-M0+ 35 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 4: Configuración de I/O - IOCON 36

4.2.4 Modo Open-drain


Enter topic text here.

4.2.5 Modo Analógico


Enter topic text here.

4.3 Descripcion de Registros


A cada pin del puerto (PIO0_m y PIO1_m) le corresponde un registro IOCONx asignado para
controlar la función y características eléctricas del pin.

4.3.1 Registro PIO0_17


Enter topic text here.

Bit Símbolo Valor Descripción Valor en


Reset
2:0 - Reservado 0
4:3 MODE Selecciona el modo de función (control de resistencia pull-up / pull-down
en chip)
0x0 Inactivo (sin resistencia pull-down / pull-up habilitada). Depende del
valor de FAIM
0x1 Resistencia pull-down habilitada.
0x2 Resistencia pull-up habilitada.
0x3 Modo repetidor
5 HYS Hysteresis 1
0 Deshabilitado
1 Habilitado
6 INV Invertir entrada 1
0 Entrada no invertida (HIGH en pin se lee como 1; LOW en pin se lee como
0).
1 Entrada invertida (HIGH en pin se lee como 0, LOW en pin se lee como 1).

4.4 Descripcion Funcional


Enter topic text here.

4.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 36 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 37

Capítulo 5: Matriz de Switches - SWM


Enter topic text here.

5.1 Configuración
Enter topic text here.

5.2 Descripción General


Enter topic text here.

5.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referencia


Reset
PINASSIGN0 R/W 0x000 Registro 0 de asignación de pines. 0xFFFFFFFF
38 Funciones asignadas: U0_TXD, U0_RXD,
U0_RTS, U0_CTS.
PINASSIGN1 R/W 0x004 Registro 1 de asignación de pines. 0xFFFFFFFF
38
Funciones asignadas: U0_SCLK, U1_TXD,
U1_RXD, U1_RTS.
PINASSIGN2 R/W 0x008 Registro 2 de asignación de pines. 0xFFFFFFFF
39
Funciones asignadas: U1_CTS, U1_SCLK,
U2_TXD, U2_RXD.
PINASSIGN3 R/W 0x00C Registro 3 de asignación de pines. 0xFFFFFFFF
39 Funciones asignadas: U2_RTS, U2_CTS,
U2_SCLK, SPI0_SCK.
PINASSIGN4 R/W 0x010 Registro 4 de asignación de pines. 0xFFFFFFFF
40 Funciones asignadas: SPI0_MOSI,
SPI0_MISO, SPI0_SSEL0, SPI0_SSEL1.
PINASSIGN5 R/W 0x014 Registro 5 de asignación de pines. 0xFFFFFFFF
40
Funciones asignadas: SPI0_SSEL2,
SPI0_SSEL3, SPI1_SCK, SPI1_MOSI.
PINASSIGN6 R/W 0x018 Registro 6 de asignación de pines. 0xFFFFFFFF
41
Funciones asignadas: SPI1_MISO,
SPI1_SSEL0, SPI1_SSEL1, SCT0_IN0.
PINASSIGN7 R/W 0x01C Registro 7 de asignación de pines. 0xFFFFFFFF
41 Funciones asignadas: SCT_IN1, SCT_IN2,
SCT_IN3, SCT_OUT0.
PINASSIGN8 R/W 0x020 Registro 8 de asignación de pines. 0xFFFFFFFF
42 Funciones asignadas: SCT_OUT1,
SCT_OUT2, SCT_OUT3, SCT_OUT4.
PINASSIGN9 R/W 0x024 Registro 9 de asignación de pines. 0xFFFFFFFF
42
Funciones asignadas: SCT_OUT5,
SCT_OUT6, I2C1_SDA, I2C1_SCL,
I2C2_SDA.
PINASSIGN10 R/W 0x028 Registro 10 de asignación de pines. 0xFFFFFFFF
43
Funciones asignadas: I2C2_SDA,
I2C2_SCL, I2C3_SDA, I2C3_SCL.
PINASSIGN11 R/W 0x02C Registro 11 de asignación de pines. 0xFFFFFFFF
43
Funciones asignadas: COMP0_OUT,
CLKOUT, GPIO_INT_BMAT, UART3_TXD.
PINASSIGN12 R/W 0x030 Registro 12 de asignación de pines. 0xFFFFFFFF

ARM I (LPC) - ARM Cortex-M0+ 37 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 38

Nombre Acceso Offset Descripción Valor al Referencia


Reset
44
Funciones asignadas: UART3_RXD,
UART3_SCLK, UART4_TXD, UART4_RXD.
PINASSIGN13 R/W 0x034 Registro 13 de asignación de pines. 0xFFFFFFFF
44
Funciones asignadas: UART4_SCLK,
T0_MAT0, T0_MAT1, T0_MAT2.
PINASSIGN14 R/W 0x038 Registro 14 de asignación de pines. 0xFFFFFFFF
45 Funciones asignadas: T0_MAT3, T0_CAP0,
T0_CAP1, T0_CAP2.
PINENABLE0 R/W 0x1C0 Registro 0 de habilitación de pines. Habilita 0xFFFFFDXF
45 funciones en pines pre-establecidos:
ACMP_In, SWCLK, SWDIO, XTALIN,
XTALOUT, RESET, CLKIN, VDDCMP,
I2C0_SDA, I2C0_SCL, ADC_n, DACOUTn,
CAPT_X0, CAPT_X1, CAPT_X2, and
CAPT_X3.
PINENABLE1 R/W 0x1C4 Registro 1 de habilitación de pines. Habilita 0xFFFFFECF
47
funciones en pines pre-establecidos:
CAPT_X4, CAPT_X5, CAPT_X6, CAPT_X7,
CAPT_X8, CAPT_X4, CAPT_YL and
CAPT_YH.

5.3.1 PINASSIGN0 - Registro 0 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 U0_TXD_O Asignación de función U0_TXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 U0_RXD_I Asignación de función U0_RXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 U0_RTS_O Asignación de función U0_RTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 U0_CTS_I Asignación de función U0_CTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.2 PINASSIGN1 - Registro 1 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 U0_SCLK_IO Asignación de función U0_SCLK. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 U1_TXD_O Asignación de función U1_TXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 38 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 39

Bit Símbolo Descripción Valor al


Reset
23:16 U1_RXD_I Asignación de función U1_RXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 U1_RTS_O Asignación de función U1_RTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.3 PINASSIGN2 - Registro 2 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 U1_CTS_I Asignación de función U1_CTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 U1_SCLK_IO Asignación de función U1_SCLK. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 U2_TXD_O Asignación de función U2_TXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 U2_RXD_I Asignación de función U2_RXD. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.4 PINASSIGN3 - Registro 3 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 U2_RTS_O Asignación de función U2_RTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 U2_CTS_I Asignación de función U2_CTS. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 U2_SCLK_IO Asignación de función U2_SCLK. El valor numérico es el número de pin 0xFF
que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 SPI0_SCK_I Asignación de función SPI0_SCK. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 39 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 40

5.3.5 PINASSIGN4 - Registro 4 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SPI0_MOSI_I Asignación de función SPI0_MOSI. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SPI0_MISO_I Asignación de función SPI0_MISO. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 SPI0_SSEL0 Asignación de función SPI0_SSEL0. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 SPI0_SSEL1 Asignación de función SPI0_SSEL1. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.6 PINASSIGN5 - Registro 5 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SPI0_SSEL2 Asignación de función SPI0_SSEL2. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SPI0_SSEL3 Asignación de función SPI0_SSEL3. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 SPI1_SCK_I Asignación de función SPI1_SCK. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 SPI1_MOSI_I Asignación de función SPI1_MOSI. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 40 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 41

5.3.7 PINASSIGN6 - Registro 6 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SPI1_MISO_I Asignación de función SPI1_MISO. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SPI1_SSEL0 Asignación de función SPI1_SSEL0. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 SPI1_SSEL1 Asignación de función SPI1_SSEL1. El valor numérico es el número de 0xFF
_IO pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 SCT0_GPIO_ Asignación de función SCT0_GPIO_IN_A. El valor numérico es el 0xFF
IN_A_I número de pin que será asignado a esta función. Los siguientes pines
están disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (=
0x20) a PIO1_21(= 0x35).

5.3.8 PINASSIGN7 - Registro 7 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SCT0_GPIO_ Asignación de función SCT0_GPIO_IN_B. El valor numérico es el 0xFF
IN_B_I número de pin que será asignado a esta función. Los siguientes pines
están disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (=
0x20) a PIO1_21(= 0x35).
15:8 SCT0_GPIO_ Asignación de función SCT0_GPIO_IN_C. El valor numérico es el 0xFF
IN_C_I número de pin que será asignado a esta función. Los siguientes pines
están disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (=
0x20) a PIO1_21(= 0x35).
23:16 SCT0_GPIO_ Asignación de función SCT0_GPIO_IN_D. El valor numérico es el 0xFF
IN_D_I número de pin que será asignado a esta función. Los siguientes pines
están disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (=
0x20) a PIO1_21(= 0x35).
31:24 SCT_OUT0_ Asignación de función SCT_OUT0. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 41 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 42

5.3.9 PINASSIGN8 - Registro 8 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SCT_OUT1_ Asignación de función SCT_OUT1. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT2_ Asignación de función SCT_OUT2. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 SCT_OUT3_ Asignación de función SCT_OUT3. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 SCT_OUT4_ Asignación de función SCT_OUT4. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.10 PINASSIGN9 - Registro 9 de asignación de pines


Bit Símbolo Descripción Valor al
Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 42 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 43

5.3.11 PINASSIGN10 - Registro 10 de asignación de pines


Falta desde aqui
Bit Símbolo Descripción Valor al
Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.12 PINASSIGN11 - Registro 11 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 43 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 44

5.3.13 PINASSIGN12 - Registro 12 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.14 PINASSIGN13 - Registro 13 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

ARM I (LPC) - ARM Cortex-M0+ 44 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 45

5.3.15 PINASSIGN14 - Registro 14 de asignación de pines

Bit Símbolo Descripción Valor al


Reset
7:0 SCT_OUT5_ Asignación de función SCT_OUT5. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
15:8 SCT_OUT6_ Asignación de función SCT_OUT6. El valor numérico es el número de 0xFF
O pin que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
23:16 I2C1_SDA_I Asignación de función I2C1_SDA. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).
31:24 I2C1_SCL_I Asignación de función I2C1_SCL. El valor numérico es el número de pin 0xFF
O que será asignado a esta función. Los siguientes pines están
disponibles: PIO0_0 (= 0) a PIO0_31 (= 0x1F) y desde PIO1_0 (= 0x20) a
PIO1_21(= 0x35).

5.3.16 PINENABLE0 - Registro 0 de habilitación de pines con función especifica


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ACMP_I1 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
1 ACMP_I2 Selección de función ACMP_I2. 1
0: ACMP_I2 habilitada en pin PIO0_01.
1: ACMP_I2 deshabilitada.
2 ACMP_I3 Selección de función ACMP_I3. 1
0: ACMP_I3 habilitada en pin PIO0_14.
1: ACMP_I3 deshabilitada.
3 ACMP_I4 Selección de función ACMP_I4. 1
0: ACMP_I4 habilitada en pin PIO0_23.
1: ACMP_I4 deshabilitada.
4 ACMP_I5 Selección de función ACMP_I5. 1
0: ACMP_I5 habilitada en pin PIO0_30.
1: ACMP_I5 deshabilitada.
5 SWXLK Selección de función ACMP_I1. 0
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
6 SWDIO Selección de función ACMP_I1. 0
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
7 XTALIN Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
8 XTALOUT Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.

ARM I (LPC) - ARM Cortex-M0+ 45 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 46

Bit Símbolo Descripción Valor al


Reset
9 RESETN Selección de función ACMP_I1. 0
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
10 CLKIN Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
11 VDDCMP Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
12 I2C0_SDA Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
13 I2C0_SCL Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
14 ADC_0 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
15 ADC_1 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
16 ADC_2 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
17 ADC_3 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
18 ADC_4 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
19 ADC_5 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
20 ADC_6 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
21 ADC_7 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
22 ADC_8 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
23 ADC_9 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
24 ADC_10 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
25 ADC_11 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
26 DACOUT0 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.

ARM I (LPC) - ARM Cortex-M0+ 46 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 5: Matriz de Switches - SWM 47

Bit Símbolo Descripción Valor al


Reset
1: ACMP_I1 deshabilitada.
27 DACOUT1 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
28 CAPT_X0 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
29 CAPT_X1 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
30 CAPT_X2 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.
31 CAPT_X3 Selección de función ACMP_I1. 1
0: ACMP_I1 habilitada en pin PIO0_00.
1: ACMP_I1 deshabilitada.

5.3.17 PINENABLE1 - Registro 1 de habilitación de pines con función especifica


Enter topic text here.

5.4 Descripción Funcional


Enter topic text here.

5.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 47 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 48

Capítulo 6: Contador/Temporizador - CTIMER


Enter topic text here.

6.1 Configuración
Enter topic text here.

6.2 Descripción General


Enter topic text here.

6.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
IR 50 R/W 0x000 Registro de Interrupción. El IR puede ser 0 Ref. 27

escrito para limpiar los flags de


interrupción. El IR puede ser leido para
identificar cual de las posibles 8 fuentes
de interrupcion están pendientes.
50 27
TCR R/W 0x004 Registro de Control del Timer. El TCR es 0 Ref.
usado para controlar las funciones del
Timer / Counter. El Timer / Counter puede
ser deshabilitado o reseteado mediante
el TCR.
50 27
TC R/W 0x008 Contador del Timer. El registro TC es de 0 Ref.
32 bits y es incrementado cada PR+1
ciclos de reloj del bus APB. El contador
del timer es controlado mediante el
registro TCR.
PR 50 R/W 0x00C Registro pre-escalador. Cuando el 0 Ref. 27

contador del preescalador (PC) es igual a


este valor, en el siguiente ciclo de reloj se
incrementa el TC y limpia el PC.
50 27
PC R/W 0x010 Contador del pre-escalador. El registro 0 Ref.
PC es un contador de 32 bits el cual es
incrementado hasta el valor almacenado
en el PR. Cuando el valor en PR es
alcanzado, el TC es incrementado y el PC
es reiniciado a 0. El PC es observable y
controlable mediante la interface del bus.
MCR 50 R/W 0x014 Registro de Control de Comparación. El 0 Ref. 27

MCR se usa para controlar si se genera


una interrupción, si el TC es reiniciado
cuando el evento Match ocurre, y si el
registro de comparación se vuelve a
cargar desde el registro oculto (Shadow)
cuando el TC es reiniciado.
MR0 50 R/W 0x018 Registro de Comparación 0. El MR0 0 Ref. 27

ARM I (LPC) - ARM Cortex-M0+ 48 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 49

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
puedes ser habilitado mediante el MCR
para reiniciar el TC, detener el TC y el PC,
y/o generar una interrupción cada vez que
el MR0 coincida con el TC.
50 27
MR1 R/W 0x01C Registro de Comparación 1. Ver 0 Ref.
descripción de registro MR0.
50 27
MR2 R/W 0x020 Registro de Comparación 2. Ver 0 Ref.
descripción de registro MR0.
50 27
MR3 R/W 0x024 Registro de Comparación 3. Ver 0 Ref.
descripción de registro MR0.
50 27
CCR R/W 0x028 Registro de Control de Captura. El CCR 0 Ref.
controla cuales flancos de las entradas
de captura son usados para cargar los
registros de captura y si es generado o no
una interrupción cuando se realiza la
captura.
50 27
CR0 RO 0x02C Registro de Captura 0. El CR0 es cargado 0 Ref.
con el valor del TC cuando hay un evento
en la entrada CAPn.0.
50 27
CR1 RO 0x030 Registro de Captura 1. Ver descripción 0 Ref.
del CR0.
50 27
CR2 RO 0x034 Registro de Captura 2. Ver descripción 0 Ref.
del CR0.
50 27
CR3 RO 0x038 Registro de Captura 3. Ver descripción 0 Ref.
del CR0.
50 27
EMR R/W 0x03C Registro Externo de Comparación. El 0 Ref.
EMR controla la función de comparación y
los pines de comparación externos.
CTCR 50 R/W 0x070 Registro de Control de Cuentas. El CTCR 0 Ref. 27

selecciona entre los modos Timer y


Counter, y en el modo Counter selecciona
la señal y el flanco para el conteo.
50 27
PWMC R/W 0x074 Registro de Control del PWM. El PWMC 0 Ref.
habilita el modo PWM en los pines de
comparación.
50 27
MSR0 R/W 0x078 Registro oculto 0 de comparación, Si es 0 Ref.
habilitado el MR0 se volverá a cargar
automáticamente con el contenido de
este registro (MSR0) cada vez que el TC
es reiniciado a cero.
50 27
MSR1 R/W 0x07C Registro oculto 1 de comparación, Si es 0 Ref.
habilitado el MR1 se volverá a cargar
automáticamente con el contenido de
este registro (MSR1) cada vez que el TC
es reiniciado a cero.
MSR2 50 R/W 0x080 Registro oculto 2 de comparación, Si es 0 Ref. 27

habilitado el MR2 se volverá a cargar


automáticamente con el contenido de
este registro (MSR2) cada vez que el TC
es reiniciado a cero.
MSR3 50 R/W 0x084 Registro oculto 3 de comparación, Si es 0 Ref. 27

habilitado el MR3 se volverá a cargar

ARM I (LPC) - ARM Cortex-M0+ 49 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 50

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
automáticamente con el contenido de
este registro (MSR3) cada vez que el TC
es reiniciado a cero.

6.3.1 IR - Registro de Interrupción


Enter topic text here.

6.3.2 TCR - Registro de Control del Timer


Enter topic text here.

6.3.3 TC - Registro Contador del Timer


Enter topic text here.

6.3.4 PR - Registro Preescalador


Enter topic text here.

6.3.5 PC - Registro Contador del Preescalador


Enter topic text here.

6.3.6 MCR - Registro de Control del Comparador


Enter topic text here.

6.3.7 MRn - Registros de Comparación


Enter topic text here.

6.3.8 CCR - Registro de Control de Captura


Enter topic text here.

6.3.9 CRn - Registros de Captura


Enter topic text here.

6.3.10 EMR - Registros de Comparación Externos


Enter topic text here.

6.3.11 CTCR - Registro de Control del Contador


Enter topic text here.

6.3.12 PWMC - Registro de Control del PWM


Enter topic text here.

6.3.13 MSRn - Registros de Comparación Secundario


Enter topic text here.

6.4 Descripción Funcional


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 50 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 51

6.5 Ejemplos
Los ejemplos a continuación están basado en la tarjeta de desarrollo MPCB-LPC845, desarrollada por
I2D TECHNOLOGY S.A.C., ver diagrama esquemático de la tarjeta de desarrollo 103 .

6.5.1 Configuración del contador


En el siguiente ejemplo se se configura el CTIMER0 con un prescalador de 12000000, teniendose 1Hz
como frecuencia de reloj para el bloque contador. El valor del contador es visualizado via la interface
serial.

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

void TIMER_Init(void)
{
// Habilita CLK del timer
SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

// PIN connection
// N/A

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 12000000 - 1;
// CTIMER0->PC = 0;
// CTIMER0->MCR = 0;
// CTIMER0->MR[0] = 0;
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
// CTIMER0->MR[3] = 0;
// CTIMER0->CCR = 0;
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;
// CTIMER0->CR[3] = 0;
// CTIMER0->EMR = 0;
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(0 << 4)|(0 << 5);
// CTIMER0->PWMC = 0;
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;
// CTIMER0->MSR[2] = 0;
// CTIMER0->MSR[3] = 0;

// NVIC Config

ARM I (LPC) - ARM Cortex-M0+ 51 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 52

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);

// Inicializa interface
UART0_Init();
TIMER_Init();

while (1)
{
vCounter = CTIMER0->TC;
Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);

// Envia una cadena


UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

6.5.2 Configuración del comparador


En el siguiente ejemplo se desea que el contador se reinicie cuando la cuenta llega a 9.

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

void TIMER_Init(void)
{
// Habilita CLK del timer
SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

ARM I (LPC) - ARM Cortex-M0+ 52 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 53

// PIN connection
// N/A

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 12000000 - 1;
// CTIMER0->PC = 0;
CTIMER0->MCR = (1 << 10); // Reset de CTIMER0 en MR3
// CTIMER0->MR[0] = 0;
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
CTIMER0->MR[3] = 10 - 1; // Cuenta hasta 9 y se reinicia
// CTIMER0->CCR = 0;
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;
// CTIMER0->CR[3] = 0;
// CTIMER0->EMR = 0;
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(0 << 4)|(0 << 5);
// CTIMER0->PWMC = 0;
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;
// CTIMER0->MSR[2] = 0;
// CTIMER0->MSR[3] = 0;

// NVIC Config

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);

// Inicializa interface
UART0_Init();
TIMER_Init();

while (1)
{
vCounter = CTIMER0->TC;
Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);

// Envia una cadena


UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

ARM I (LPC) - ARM Cortex-M0+ 53 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 54

6.5.3 Generación de onda cuadrada


En el siguiente ejemplo se genera una onda cuadrada en el pin PIO0_7 con un periodo de 5000*2ms (con
el MR3).

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

// Inicializacion del timer


void TIMER_Init(void)
{
uint32_t vTemp;

// Habilita CLK del timer


SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

// PIN connection
// Conexion del pin PIO0_7 hacia la señal T0_MAT3
// SWM Enable / Disable
SYSCON->SYSAHBCLKCTRL0 |= (1 << 7);
SWM0->PINENABLE0 |= (1 << 14);
vTemp = SWM0->PINASSIGN14;
vTemp &= ~(0xFF << 0);
vTemp |= (7 << 0); // T0_MAT3 -> PIO0_7
SWM0->PINASSIGN14 = vTemp;
SYSCON->SYSAHBCLKCTRL0 &= ~(1 << 7);

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 12000 - 1;
// CTIMER0->PC = 0;
CTIMER0->MCR = (1 << 10); // Reset de CTIMER0 en MR3
// CTIMER0->MR[0] = 0;
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
CTIMER0->MR[3] = 5000 - 1; // Cuenta hasta 5000 y se reinicia
// CTIMER0->CCR = 0;
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;
// CTIMER0->CR[3] = 0;
CTIMER0->EMR = (0x3 << 10);
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(0 << 4)|(0 << 5);
// CTIMER0->PWMC = 0;
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;

ARM I (LPC) - ARM Cortex-M0+ 54 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 55

// CTIMER0->MSR[2] = 0;
// CTIMER0->MSR[3] = 0;

// NVIC Config

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);

// Inicializa interface
UART0_Init();
TIMER_Init();

while (1)
{
vCounter = CTIMER0->TC;
Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);

// Envia una cadena


UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

6.5.4 Generación de señales PWM


En el siguiente ejemplo se genera una onda cuadrada en el pin PIO0_7 con un periodo de 5000*2ms.

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

// Inicializacion del timer


void TIMER_Init(void)
{
uint32_t vTemp;

ARM I (LPC) - ARM Cortex-M0+ 55 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 56

// Habilita CLK del timer


SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

// PIN connection
// Conexion del pin PIO0_7 hacia la señal T0_MAT3
// SWM Enable / Disable
SYSCON->SYSAHBCLKCTRL0 |= (1 << 7);
SWM0->PINENABLE0 |= (1 << 14);
vTemp = SWM0->PINASSIGN14;
vTemp &= ~(0xFF << 0);
vTemp |= (7 << 0); // T0_MAT3 -> PIO0_7
SWM0->PINASSIGN14 = vTemp;
SYSCON->SYSAHBCLKCTRL0 &= ~(1 << 7);

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 1200 - 1; // 10kHz
// CTIMER0->PC = 0;
CTIMER0->MCR = (1 << 1)|(1 << 27); // Reset de CTIMER0 en MR0, MSR3 habilitado
CTIMER0->MR[0] = 100 - 1; // Periodo PWM: 10ms
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
// CTIMER0->MR[3] = 0;
// CTIMER0->CCR = 0;
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;
// CTIMER0->CR[3] = 0;

CTIMER0->EMR = 0;
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(0 << 4)|(0 << 5);
CTIMER0->PWMC = (1 << 3); // Habilita PWM en T0_MR3
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;
// CTIMER0->MSR[2] = 0;
CTIMER0->MSR[3] = 0; // Duty cycle

// NVIC Config

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);

// Inicializa interface
UART0_Init();

ARM I (LPC) - ARM Cortex-M0+ 56 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 57

TIMER_Init();

while (1)
{
// Incrementa valor del ancho de pulso
vCounter++;
if(vCounter > CTIMER0->MR[0])
vCounter = 0;

// Asigna nuevo acho de pulso


CTIMER0->MSR[3] = vCounter;

// Envia valor del ancho del pulso


Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

6.5.5 Entrada de captura para medición de periodo


En el siguiente ejemplo se configura el pin PIO0_14 como entrada CAP1, para medir la duración de un
pulso que ingresa por dicho pin.

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

// Inicializacion del timer


void TIMER_Init(void)
{
uint32_t vTemp;

// Habilita CLK del timer


SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

// PIN connection
// Conexion del pin PIO0_14/ADC_2/ACMP_I3 hacia la señal T0_CAP1
// SWM Enable / Disable
SYSCON->SYSAHBCLKCTRL0 |= (1 << 7);
SWM0->PINENABLE0 |= (1 << 2); // ACMP_I3 deshabilitado
SWM0->PINENABLE0 |= (1 << 16); // ADC_2 deshabilitado
vTemp = SWM0->PINASSIGN14;
vTemp &= ~(0xFF << 16);

ARM I (LPC) - ARM Cortex-M0+ 57 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 58

vTemp |= (14 << 16); // T0_CAP1 -> PIO0_14


SWM0->PINASSIGN14 = vTemp;
SYSCON->SYSAHBCLKCTRL0 &= ~(1 << 7);

// Pull-up enable
// IOCON Clock Enable/Disable
SYSCON->SYSAHBCLKCTRL0 |= (1 << 18);
IOCON->PIO[14] &= ~(0x3 << 3);
IOCON->PIO[14] |= (0x2 << 3); // Resistencia pull-up
SYSCON->SYSAHBCLKCTRL0 &= ~(1 << 18);

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 12000 - 1; // 1kHz
// CTIMER0->PC = 0;
CTIMER0->MCR = 0; // Reset de CTIMER0 en MR0, MSR3 habilitado
// CTIMER0->MR[0] = 0; // Periodo PWM: 10ms
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
// CTIMER0->MR[3] = 0;
CTIMER0->CCR = (1 << 4);
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;

CTIMER0->EMR = 0;
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(1 << 4)|(0x2 << 5);
CTIMER0->PWMC = 0; // Sin PWM
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;
// CTIMER0->MSR[2] = 0;
// CTIMER0->MSR[3] = 0;

// NVIC Config

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);

// Inicializa interface
UART0_Init();
TIMER_Init();

while (1)
{
// Lee registro de captura
vCounter = CTIMER0->CR[1]; // en ms

// Envia valor del ancho del pulso


Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);

ARM I (LPC) - ARM Cortex-M0+ 58 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 59

UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);


UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

6.5.6 Interrupción periódica


En el siguiente ejemplo se genera una interrupción cada 1000ms, mediante el registro de comparación
MR3.

// Algunas funciones se encuentran en los ejemplos de USART


...

// Convierte a caracteres el valor de una variable tipo uint32_t


void Word2StrMSB0(uint32_t Word, uint8_t *pBuffer, uint32_t Digits)
{
uint8_t pX;

for(pX = 0; pX < Digits; pX++)


{
pBuffer[Digits-pX-1] = (Word % 10) + 48;
Word = Word / 10;
}
}

void TIMER_Init(void)
{
// Habilita CLK del timer
SYSCON->SYSAHBCLKCTRL0 |= (1 << 25);

// Reset TMR
SYSCON->PRESETCTRL0 &= ~(1 << 25);
SYSCON->PRESETCTRL0 |= (1 << 25);

// PIN connection
// N/A

// TMR Config.
// CTIMER0->IR = 0;
CTIMER0->TCR = (0 << 0)|(1 << 1);
// CTIMER0->TC = 0;
CTIMER0->PR = 12000 - 1;
// CTIMER0->PC = 0;
CTIMER0->MCR = (1 << 9)|(1 << 10); // Interrupcion y Reset del CTIMER0 en MR3
// CTIMER0->MR[0] = 0;
// CTIMER0->MR[1] = 0;
// CTIMER0->MR[2] = 0;
CTIMER0->MR[3] = 10000 - 1; // Cuenta hasta 999 y se reinicia
// CTIMER0->CCR = 0;
// CTIMER0->CR[0] = 0;
// CTIMER0->CR[1] = 0;
// CTIMER0->CR[2] = 0;
// CTIMER0->CR[3] = 0;
// CTIMER0->EMR = 0;
CTIMER0->CTCR = (0 << 0)|(0 << 2)|(0 << 4)|(0 << 5);
// CTIMER0->PWMC = 0;
// CTIMER0->MSR[0] = 0;
// CTIMER0->MSR[1] = 0;
// CTIMER0->MSR[2] = 0;

ARM I (LPC) - ARM Cortex-M0+ 59 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 6: Contador/Temporizador - CTIMER 60

// CTIMER0->MSR[3] = 0;

// NVIC Config
// Habilitar Interrupcion TIMER0
NVIC_EnableIRQ(CTIMER0_IRQn);

// DMA Config

// Habilita Timer
CTIMER0->TCR |= (1 << 0); // TMR Enable
CTIMER0->TCR &= ~(1 << 1); // Clear reset
}

int m_Contador;

// Rutina de atencion de interrupcion


void CTIMER0_IRQHandler(void)
{
CTIMER0->IR = (1 << 3);// Reset del flag

// Incrrementa la cuenta en cada interrupcion


m_Contador++;
}

uint8_t TX_Buffer[32];

// Funcion principal
int main(void)
{
uint32_t vCounter;

Delay(2000000);
m_Contador = 0;

// Inicializa interface
UART0_Init();
TIMER_Init();

while (1)
{
// Lee valor de la cuenta
vCounter = m_Contador;
Word2StrMSB0(vCounter, (uint8_t *)(&TX_Buffer[0]), 10);

// Envia una cadena


UART0_SendBytes((uint8_t *)(&TX_Buffer[0]), 10);
UART0_SendBytes((uint8_t *)("\r"), 1);

Delay(100000);
}

return 0;
}

ARM I (LPC) - ARM Cortex-M0+ 60 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 7: Timer para Generación PWM - SCTimer/PWM 61

Capítulo 7: Timer para Generación PWM - SCTimer/PWM

7.1 Configuración
Enter topic text here.

7.2 Descripción General


Enter topic text here.

7.3 Descripción de Registros


Enter topic text here.

7.3.1 CONFIG - Registro de Configuración


Enter topic text here.

7.3.2 CTRL - Registro de Control


Enter topic text here.

7.3.3 LIMIT - Registro de Selección de Eventos para Limitación


Enter topic text here.

7.3.4 HALT - Registro de Selección de Eventos para Suspensión


Enter topic text here.

7.3.5 STOP - Registro de Selección de Eventos para Detener


Enter topic text here.

7.3.6 START - Registro de Selección de Eventos para Iniciar


Enter topic text here.

7.3.7 COUNT - Registro Contador


Enter topic text here.

7.3.8 STATE - Registro de Estado


Enter topic text here.

7.3.9 INPUT - Registro de Estado de Entradas


Enter topic text here.

7.3.10 REGMODE - Registro de Modo Captura/Comparación


Enter topic text here.

7.3.11 OUTPUT - Registro de Estado de Salidas


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 61 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 7: Timer para Generación PWM - SCTimer/PWM 62

7.4 Descripción Funcional


Enter topic text here.

7.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 62 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 8: Temporizador del Sistema - SysTick 63

Capítulo 8: Temporizador del Sistema - SysTick


El núcleo del ARM Cortex-M0+ (ARMv6-M) soporta un temporizador SysTick con las siguientes
características:

Temporizador de 24 bits.
Vector de excepción de uso dedicado.
La fuente de reloj puede ser el SystemClock o el SystemClock/2.

8.1 Configuración
El SysTick Timer se configura usando los siguientes registros:

1. El SysTick Timer se habilita a través del registro de control SysTick (ver CSR 64 ). El reloj del SysTick
Timer es fijado a la mitad de la frecuencia del reloj del sistema.
2. Active la fuente de reloj para el temporizador SysTick en el registro SYST_CSR (ver CSR 64 ).
3. El valor de calibración del SysTick Timer se encuentra en el registro SYSTCKCAL en el bloque de
configuración del sistema SYSCON (ver SYSCON 21 ).

8.2 Descripción General

El SysTick Timer forma parte del núcleo del ARM Cortex-M0+ (ARMv6-M). El temporizador SysTick
está diseñado para generar una interrupción fija de 10ms, para ser utilizada por un sistema operativo u
otro software de administración del sistema.

Dado que el SysTick Timer es parte del núcleo del Cortex-M0 +, ello facilita la portabilidad del software al
proporcionar un temporizador estándar que está disponible en dispositivos basados ? en Cortex-M0. El
temporizador SysTick se puede utilizar para:

Como un temporizador de RTOS, que se dispara a una velocidad programable, como 100Hz, e
invoca una rutina SysTick.
Como un temporizador de alarma de alta velocidad utilizando el reloj del procesador principal.
Como alarma de velocidad variable o temporizador de señal. El rango de duración disponible
depende del reloj de referencia utilizado y del rango dinámico del contador.
Como un simple contador. El software puede usar esto para medir el tiempo de finalización y el
tiempo utilizado.

ARM I (LPC) - ARM Cortex-M0+ 63 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 8: Temporizador del Sistema - SysTick 64

Como un control de fuente de reloj interno basado en la duración de la falta o tiempo de ejecución.
El software puede usar el campo COUNTFLAG en el registro de control y estado para determinar
si una acción se completó dentro de una duración particular, como parte de un bucle de control de
gestión de reloj dinámico.

8.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
SYST_CSR 64 R/W 0x010 Registro de control y estado del SysTick. 0 Ref. 64

64 64
SYST_RVR R/W 0x014 Registro de valor incial del contador del 0 Ref.
SysTick.
65 65
SYST_CVR R/W 0x018 Registro de valor actual de contador del 0 Ref.
SysTick.
65 65
SYST_CALIB R/W 0x08C Registro de valor de calibracion del 0x4 Ref.
SysTick.

8.3.1 CSR - Registro de Control y Estado del SysTick


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ENABLE Habilita contador del SysTick: 0

0: Contador deshabilitado.
1: Contador habilitado.
1 TICKINT Habilita interrupción del SysTick: 0

0: Interrupción deshabilitada
1: Interrupción habilitada. La interrupción es generada cuando la cuenta
llega a 0.
2 CLKSOURC Selección del origen de la señal de reloj del SysTick: 0
E
0: El (System Clock)/2 es seleccionado como señal de reloj.
1: El System Clock (CPU clock) es seleccionado como señal de reloj.
15:3 - Reserved, user software should not write ones to reserved bits. The NA
value read from a reserved bit is not defined.
16 COUNTFLAG Retorna 1 si el contador del SysTick llega a 0 desde la última vez que 0
fué leída.
31:17 - Reserved, user software should not write ones to reserved bits. The NA
value read from a reserved bit is not defined.

8.3.2 RVR - Registro del Valor de Recarga del SysTick


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
23:0 RELOAD Contiene el valor a ser cargado en el contador del SysTick cuando la 0
cuenta llega a 0.

ARM I (LPC) - ARM Cortex-M0+ 64 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 8: Temporizador del Sistema - SysTick 65

Bit Símbolo Descripción Valor al


Reset
31:24 - Reserved, user software should not write ones to reserved bits. The 0
value read from a reserved bit is not defined.

8.3.3 CVR - Registro del Valor Actual del SysTick


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
23:0 CURRENT Lectura: Retorna el valor actual del contador del SysTick. 0

Escritura: La escritura de cualquier valor reinicia el contador del SysTick


y borra el contenido del bit COUNTFLAG en el registro CSR.
31:24 - Reserved, user software should not write ones to reserved bits. The NA
value read from a reserved bit is not defined.

8.3.4 CALIB - Registro del Valor de Calibración del SysTick


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
23:0 TENMS Contiene el valor de recarga a ser usado para un tiempo de 10ms 0x4
(100Hz), el cual puede tener errores de precision debido a la frecuencia
de reloj del sistema.
29:24 - Reserved, user software should not write ones to reserved bits. The NA
value read from a reserved bit is not defined.
30 SKEW Indica si el valor utilizado para calibración de 10ms es exacto: 0

0: Si el valor de calibration para 10ms es exacto.


1: Si el valor de calibration para 10ms no es exacto, debido a la
frecuencia de reloj.
31 NOREF Indica si es proporcionada el reloj de referencia definida en la 0
implementación:

0: Reloj de referencia está implementada.


1: Reloj de referencia no está implementada. En ese caso el bit
CLKSOURCE del registro CSR es forzado a 1, y no puede ser borrado.

8.4 Descripción Funcional


El SysTick Timer es un temporizador con cuenta decreciente de 24 bits y genera una interrupción al
llegar a cero. Su objetivo es proporcionar un intervalo de tiempo fijo de 10 milisegundos entre
interrupciones. El temporizador SysTick se sincroniza con el reloj de la CPU (el reloj del sistema, ver
SYSCON 21 ) o desde el reloj de referencia, que se fija a la mitad de la frecuencia del reloj del CPU. Para
generar interrupciones recurrentes en un intervalo específico, el registro SYST_RVR debe inicializarse con
el valor correcto para el intervalo deseado. Se proporciona un valor predeterminado en el registro
SYST_CALIB y puede ser modificado por el software.

8.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 65 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 66

Capítulo 9: Controlador de Interrupción - NVIC


Los ARM Cortex-M0+ proporciona un controlador de interrupciones como parte integral del modelo de
excepción. La operación del controlador de interrupción se alinea con la especificación del Controlador de
interrupción general (GIC) de ARM, definida para su uso con otras variantes de arquitectura y perfiles
ARMv7.

9.1 Configuración
• El NVIC (Nested Vectored Interrupt Controller) que forma parte integral del ARM Cortex-M0+.
• El controlador de interrupción estrechamente acoplado proporciona una baja latencia de interrupción.
• Controla las excepciones del sistema y las interrupciones periféricas.
• El NVIC soporta 32 interrupciones vectorizadas.
• Cuatro niveles de prioridad de interrupción programables con enmascaramiento de nivel de prioridad de
hardware.
• Generación de interrupciones por software utilizando las excepciones ARM SVCall y PendSV (ver
referencia 101 ).
• Soporte para NMI (Interrupciones no enmascarables).
• ARM Cortex M0+ VTOR (Registro de compensación de tabla vectorial) implementado.

9.2 Descripción General


El NVIC (Nested Vectored Interrupt Controller) es una parte integral del Cortex-M0+. El acoplamiento
ajustado a la CPU permite una latencia de interrupción baja y un procesamiento eficiente de las
interrupciones que llegan tarde.

9.2.1 Fuentes de Interrupción


Enter topic text here.

9.2.2 Interrupciones no Enmascarables - NMI


El dispositivo soporta la NMI, que puede ser activado por una interrupción periférica o por software. El NMI
tiene la excepción de prioridad más alta que después del reset.

Puede configurar cualquier interrupción periférica listada en la tabla anterior como NMI usando el registro
NMISRC en el bloque SYSCON (ver SYSCON 21 ). Para evitar utilizar la misma interrupción periférica como
excepción de NMI e interrupción normal, deshabilite la interrupción en el NVIC cuando lo configure como
NMI.

9.2.3 Tabla Offset de Vectores


La tabla de vectores contiene el valor de inicial (al reset) del puntero de pila y las direcciones de inicio,
también denominadas vectores de excepción, para todos los controladores de excepciones. En el reinicio
del sistema, la tabla de vectores se encuentra localizada en la dirección 0x0000 0000. El software puede
escribir en el registro VTOR en el NVIC para reubicar la dirección de inicio de la tabla de vectores en una
ubicación de memoria diferente. Para obtener una descripción del registro VTOR, consulte la
documentación de ARM Cortex-M0 + (ver referencia 101 ).

9.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
ISER0 68 R/W 0x100 Interrupt Set Enable Register 0. Ester 0 Ref.
registro permite habilitar las
interrupciones y leer las interrupciones
habilitadas correspondiente a los
perifericos.

ARM I (LPC) - ARM Cortex-M0+ 66 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 67

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
- - 0x104 Reservado - -
69
ICER0 R/W 0x180 Interrupt Clear Enable Register 0. Este 0 Ref.
registro permite deshabilitar las
interrupciones y leer las interrupciones
habilitadas correspondiente a los
perifericos.
- - 0x184 Reservado 0 -
ISPR0 70 R/W 0x200 Interrupt Set Pending Register 0. Este 0 Ref.
registro permite cambiar a pendiente el
estado de las interrupciones, y permiter
leer las interrupciones pendientes
correspondiente a los perifericos.
- - 0x204 Reservado 0 -
71
ICPR0 R/W 0x280 Interrupt Clear Pending Register 0. Este 0 Ref.
registro permite cambiar a no pendiente
el estado de las interrupciones, y permiter
leer las interrupciones pendientes
correspondiente a los perifericos.
- - 0x284 Reservado 0 -
IABR0 72 RO 0x300 Interrupt Active Bit Register 0. Este 0 Ref.
registro permite leer que interrupciones
actualmente se encuentran activas,
incluso las que no se encuentra
habilitadas, correspondiente a los
perifericos.
- - 0x304 Reservado 0 -
IPR0 73 R/W 0x400 Interrupt Priority Register 0. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 0-3.
73
IPR1 R/W 0x404 Interrupt Priority Register 1. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 4-7.
73
IPR2 R/W 0x408 Interrupt Priority Register 2. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 8-11.
IPR3 74 R/W 0x40C Interrupt Priority Register 3. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 12-15.
IPR4 74 R/W 0x410 Interrupt Priority Register 4. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 16-19.
74
IPR5 R/W 0x414 Interrupt Priority Register 5. Este registro 0 Ref.

ARM I (LPC) - ARM Cortex-M0+ 67 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 68

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 20-23.
75
IPR6 R/W 0x418 Interrupt Priority Register 6. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 24-27.
IPR7 75 R/W 0x41C Interrupt Priority Register 7. Este registro 0 Ref.
permite asignar prioridad a cada
interrupción. Este registro contiene los
campos de prioridad de 2-bits para las
interrupciones 28-31.

9.3.1 ISER0 - Registro 0 de Habilitación de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ISE_SPI0 Habilitar interrupción. 0
1 ISE_SPI1 Habilitar interrupción. 0
2 ISE_DAC0 Habilitar interrupción. 0
3 ISE_UART0 Habilitar interrupción. 0
4 ISE_UART1 Habilitar interrupción. 0
5 ISE_UART2 Habilitar interrupción. 0
6 - Reservado 0
7 ISE_I2C1 Habilitar interrupción. 0
8 ISE_I2C0 Habilitar interrupción. 0
9 ISE_SCT Habilitar interrupción. 0
10 ISE_MRT Habilitar interrupción. 0
11 ISE_CMP o Habilitar interrupción. 0
ISE_CAPT
12 ISE_WDT Habilitar interrupción. 0
13 ISE_BOD Habilitar interrupción. 0
14 ISE_FLASH Habilitar interrupción. 0
15 ISE_WKT Habilitar interrupción. 0
16 ISE_ADC_SE Habilitar interrupción. 0
QA
17 ISE_ADC_SE Habilitar interrupción. 0
QB
18 ISE_ADC_TH Habilitar interrupción. 0
CMP
19 ISE_ADC_OV Habilitar interrupción. 0
R
20 ISE_SDMA Habilitar interrupción. 0
21 ISE_I2C2 Habilitar interrupción. 0
22 ISE_I2C3 Habilitar interrupción. 0
23 ISE_CT32b0 Habilitar interrupción. 0

ARM I (LPC) - ARM Cortex-M0+ 68 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 69

Bit Símbolo Descripción Valor al


Reset
24 ISE_PININT0 Habilitar interrupción. 0
25 ISE_PININT1 Habilitar interrupción. 0
26 ISE_PININT2 Habilitar interrupción. 0
27 ISE_PININT3 Habilitar interrupción. 0
28 ISE_PININT4 Habilitar interrupción. 0
29 ISE_PININT5 Habilitar interrupción. 0
o ISE_DAC1
30 ISE_PININT5 Habilitar interrupción. 0
o
ISE_USART3
31 ISE_PININT5 Habilitar interrupción. 0
o
ISE_USART4

9.3.2 ICER0 - Registro 0 de Desabilitación de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ICE_SPI0 Deshabilitar interrupción. 0
1 ICE_SPI1 Deshabilitar interrupción. 0
2 ICE_DAC0 Deshabilitar interrupción. 0
3 ICE_UART0 Deshabilitar interrupción. 0
4 ICE_UART1 Deshabilitar interrupción. 0
5 ICE_UART2 Deshabilitar interrupción. 0
6 - Reservado 0
7 ICE_I2C1 Deshabilitar interrupción. 0
8 ICE_I2C0 Deshabilitar interrupción. 0
9 ICE_SCT Deshabilitar interrupción. 0
10 ICE_MRT Deshabilitar interrupción. 0
11 ICE_CMP o Deshabilitar interrupción. 0
ICE_CAPT
12 ICE_WDT Deshabilitar interrupción. 0
13 ICE_BOD Deshabilitar interrupción. 0
14 ICE_FLASH Deshabilitar interrupción. 0
15 ICE_WKT Deshabilitar interrupción. 0
16 ICE_ADC_S Deshabilitar interrupción. 0
EQA
17 ICE_ADC_S Deshabilitar interrupción. 0
EQB
18 ICE_ADC_T Deshabilitar interrupción. 0
HCMP
19 ICE_ADC_O Deshabilitar interrupción. 0
VR
20 ICE_SDMA Deshabilitar interrupción. 0
21 ICE_I2C2 Deshabilitar interrupción. 0
22 ICE_I2C3 Deshabilitar interrupción. 0
23 ICE_CT32b0 Deshabilitar interrupción. 0

ARM I (LPC) - ARM Cortex-M0+ 69 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 70

Bit Símbolo Descripción Valor al


Reset
24 ICE_PININT0 Deshabilitar interrupción. 0
25 ICE_PININT1 Deshabilitar interrupción. 0
26 ICE_PININT2 Deshabilitar interrupción. 0
27 ICE_PININT3 Deshabilitar interrupción. 0
28 ICE_PININT4 Deshabilitar interrupción. 0
29 ICE_PININT5 Deshabilitar interrupción. 0
o ICE_DAC1
30 ICE_PININT5 Deshabilitar interrupción. 0
o
ICE_USART3
31 ICE_PININT5 Deshabilitar interrupción. 0
o
ICE_USART4

9.3.3 ISPR0 - Registro 0 de Activación de Interrupción Pendiente


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ISP_SPI0 Activar interrupción pendiente. 0
1 ISP_SPI1 Activar interrupción pendiente. 0
2 ISP_DAC0 Activar interrupción pendiente. 0
3 ISP_UART0 Activar interrupción pendiente. 0
4 ISP_UART1 Activar interrupción pendiente. 0
5 ISP_UART2 Activar interrupción pendiente. 0
6 - Reservado 0
7 ISP_I2C1 Activar interrupción pendiente. 0
8 ISP_I2C0 Activar interrupción pendiente. 0
9 ISP_SCT Activar interrupción pendiente. 0
10 ISP_MRT Activar interrupción pendiente. 0
11 ISP_CMP o Activar interrupción pendiente. 0
ISP_CAPT
12 ISP_WDT Activar interrupción pendiente. 0
13 ISP_BOD Activar interrupción pendiente. 0
14 ISP_FLASH Activar interrupción pendiente. 0
15 ISP_WKT Activar interrupción pendiente. 0
16 ISP_ADC_SE Activar interrupción pendiente. 0
QA
17 ISP_ADC_SE Activar interrupción pendiente. 0
QB
18 ISP_ADC_TH Activar interrupción pendiente. 0
CMP
19 ISP_ADC_OV Activar interrupción pendiente. 0
R
20 ISP_SDMA Activar interrupción pendiente. 0
21 ISP_I2C2 Activar interrupción pendiente. 0
22 ISP_I2C3 Activar interrupción pendiente. 0
23 ISP_CT32b0 Activar interrupción pendiente. 0

ARM I (LPC) - ARM Cortex-M0+ 70 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 71

Bit Símbolo Descripción Valor al


Reset
24 ISP_PININT0 Activar interrupción pendiente. 0
25 ISP_PININT1 Activar interrupción pendiente. 0
26 ISP_PININT2 Activar interrupción pendiente. 0
27 ISP_PININT3 Activar interrupción pendiente. 0
28 ISP_PININT4 Activar interrupción pendiente. 0
29 ISP_PININT5 Activar interrupción pendiente. 0
o ISP_DAC1
30 ISP_PININT5 Activar interrupción pendiente. 0
o
ISP_USART3
31 ISP_PININT5 Activar interrupción pendiente. 0
o
ISP_USART4

9.3.4 ICPR0 - Registro 0 de Desactivación de Interrupción Pendiente


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ICP_SPI0 Desactivar interrupción pendiente. 0
1 ICP_SPI1 Desactivar interrupción pendiente. 0
2 ICP_DAC0 Desactivar interrupción pendiente. 0
3 ICP_UART0 Desactivar interrupción pendiente. 0
4 ICP_UART1 Desactivar interrupción pendiente. 0
5 ICP_UART2 Desactivar interrupción pendiente. 0
6 - Reservado 0
7 ICP_I2C1 Desactivar interrupción pendiente. 0
8 ICP_I2C0 Desactivar interrupción pendiente. 0
9 ICP_SCT Desactivar interrupción pendiente. 0
10 ICP_MRT Desactivar interrupción pendiente. 0
11 ICP_CMP o Desactivar interrupción pendiente. 0
ICP_CAPT
12 ICP_WDT Desactivar interrupción pendiente. 0
13 ICP_BOD Desactivar interrupción pendiente. 0
14 ICP_FLASH Desactivar interrupción pendiente. 0
15 ICP_WKT Desactivar interrupción pendiente. 0
16 ICP_ADC_S Desactivar interrupción pendiente. 0
EQA
17 ICP_ADC_S Desactivar interrupción pendiente. 0
EQB
18 ICP_ADC_T Desactivar interrupción pendiente. 0
HCMP
19 ICP_ADC_O Desactivar interrupción pendiente. 0
VR
20 ICP_SDMA Desactivar interrupción pendiente. 0
21 ICP_I2C2 Desactivar interrupción pendiente. 0
22 ICP_I2C3 Desactivar interrupción pendiente. 0
23 ICP_CT32b0 Desactivar interrupción pendiente. 0

ARM I (LPC) - ARM Cortex-M0+ 71 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 72

Bit Símbolo Descripción Valor al


Reset
24 ICP_PININT0 Desactivar interrupción pendiente. 0
25 ICP_PININT1 Desactivar interrupción pendiente. 0
26 ICP_PININT2 Desactivar interrupción pendiente. 0
27 ICP_PININT3 Desactivar interrupción pendiente. 0
28 ICP_PININT4 Desactivar interrupción pendiente. 0
29 ICP_PININT5 Desactivar interrupción pendiente. 0
o ICP_DAC1
30 ICP_PININT5 Desactivar interrupción pendiente. 0
o
ICP_USART3
31 ICP_PININT5 Desactivar interrupción pendiente. 0
o
ICP_USART4

9.3.5 IABR0 - Registro 0 de Mapa de bits de Interrupciones Activas


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 IAB_SPI0 Interrupción activa. 0
1 IAB_SPI1 Interrupción activa. 0
2 IAB_DAC0 Interrupción activa. 0
3 IAB_UART0 Interrupción activa. 0
4 IAB_UART1 Interrupción activa. 0
5 IAB_UART2 Interrupción activa. 0
6 - Reservado 0
7 IAB_I2C1 Interrupción activa. 0
8 IAB_I2C0 Interrupción activa. 0
9 IAB_SCT Interrupción activa. 0
10 IAB_MRT Interrupción activa. 0
11 IAB_CMP o Interrupción activa. 0
IAB_CAPT
12 IAB_WDT Interrupción activa. 0
13 IAB_BOD Interrupción activa. 0
14 IAB_FLASH Interrupción activa. 0
15 IAB_WKT Interrupción activa. 0
16 IAB_ADC_SE Interrupción activa. 0
QA
17 IAB_ADC_SE Interrupción activa. 0
QB
18 IAB_ADC_TH Interrupción activa. 0
CMP
19 IAB_ADC_OV Interrupción activa. 0
R
20 IAB_SDMA Interrupción activa. 0
21 IAB_I2C2 Interrupción activa. 0
22 IAB_I2C3 Interrupción activa. 0
23 IAB_CT32b0 Interrupción activa. 0

ARM I (LPC) - ARM Cortex-M0+ 72 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 73

Bit Símbolo Descripción Valor al


Reset
24 IAB_PININT0 Interrupción activa. 0
25 IAB_PININT1 Interrupción activa. 0
26 IAB_PININT2 Interrupción activa. 0
27 IAB_PININT3 Interrupción activa. 0
28 IAB_PININT4 Interrupción activa. 0
29 IAB_PININT5 Interrupción activa. 0
o IAB_DAC1
30 IAB_PININT5 Interrupción activa. 0
o
IAB_USART3
31 IAB_PININT5 Interrupción activa. 0
o
IAB_USART4

9.3.6 IPR0 - Registro 0 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_SPI0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_SPI1 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_DAC0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_UART0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0

9.3.7 IPR1 - Registro 1 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_UART1 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_UART2 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 - Reservado 0
29:24 - Reservado 0
31:30 IP_I2C1 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0

9.3.8 IPR2 - Registro 2 de Prioridad de Interrupción


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 73 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 74

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_I2C0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_SCT Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_MRT Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_CMP o Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
IP_CAPT

9.3.9 IPR3 - Registro 3 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_WDT Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_BOD Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_FLASH Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_WKT Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0

9.3.10 IPR4 - Registro 4 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_ADC_SE Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
QA
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_ADC_SE Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
QB
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_ADC_TH Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
CMP
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_ADC_OV Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
R

9.3.11 IPR5 - Registro 5 de Prioridad de Interrupción


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 74 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 9: Controlador de Interrupción - NVIC 75

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_DMA Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_I2C2 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_I2C3 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_CT32B0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0

9.3.12 IPR6 - Registro 6 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_PININT0 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_PININT1 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_PININT2 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_PININT3 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0

9.3.13 IPR7 - Registro 7 de Prioridad de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
5:0 - Es leido como 0, no modificado en escritura. 0
7:6 IP_PININT4 Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
13:8 - Es leido como 0, no modificado en escritura. 0
15:14 IP_PININT5 o Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
IP_DAC1
21:16 - Es leido como 0, no modificado en escritura. 0
23:22 IP_PININT6 o Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
IP_USART3
29:24 - Es leido como 0, no modificado en escritura. 0
31:30 IP_PININT7 o Prioridad de la nterrupción: 0=Alta prioridad, 3=Baja prioridad 0
IP_USART4

9.4 Descripción Funcional


Enter topic text here.

9.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 75 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 76

Capítulo 10: Interface Serial - USART


Enter topic text here.

10.1 Configuración
Enter topic text here.

10.2 Descripción General


Enter topic text here.

10.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
CFG 77 R/W 0x000 Registro de Configuración. Contiene 0 Ref. 27

configuración básica del USART que


normalmente no es cambiada durante la
operación.
79 27
CTL R/W 0x004 Registro de Control. Contiene ajustes de 0 Ref.
control del USART que es más probable
que cambien durante la operación.
80 27
STAT R/W 0x008 Registro de Estado. Todos los flags de 0x000E Ref.
estado pueden ser leídos en este
registro. Escribiendo unos borra algunos
bits en el registro. Algunos bits se pueden
borrar escribiéndoles un uno.
82 27
INTENSET R/W 0x00C Registro de Lectura y Habilitación de 0 Ref.
Interrupción. Contiene un bit de
habilitación de interrupción para cada una
de las interrupciones del USART. La
lectura indica qué interrupciones se
encuentran habilitadas. Escribiendo un 1
en una posición implementada habilita
una interrupción.
INTENCLR 82 WO 0x010 Registro de deshabilitación de - Ref. 27

interrupción. Permite el borrado de bits en


el registro INTENSET. Escribiendo un 1
en cualquier posición implementada
causa la deshabilitación de la
interrupción correspondiente.
RXDAT 83 RO 0x014 Registro de Datos del Receptor. Contiene - Ref. 27

el último caracter recibido.


RXDATSTAT 83 RO 0x018 Registro de Datos y Estado del Receptor. - Ref. 27

Contiene el último caracter recibido con el


estado actual de recepción del USART.
Permite que el DMA o software recuperen
el dato de recepción y el estado juntos.
84 27
TXDAT R/W 0x01C Registro de Datos del Transmisor: El dato 0 Ref.
a ser transmitido debe ser escrito en este
registro.
BRG 84 R/W 0x020 Registro Generador de Tasa de Bits. 0 Ref. 27

ARM I (LPC) - ARM Cortex-M0+ 76 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 77

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
Divisor de 16 bits para la generacion de
tasa de bits.
INTSTAT 84 RO 0x024 Registro de estado de interrupción. 0x0005 Ref. 27

Refleja las interrupciones que


actualmente estan activas.
OSR 85 R/W 0x028 Registro de selección de sobremuestreo 0xF Ref. 27

para comunicación asíncrona.


ADDR 85 R/W 0x02C Registro de dirección para detección 0 Ref. 27

automática de dirección.

10.3.1 CFG - Registro de Configuración


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 ENABLE Habilitar USART. 0

0: Deshabilitado: EL USART es deshabilitado, y la máquina de estado


interna y contadores son reseteados. Mientras Enable = 0, todas las
interrupciones del USART y las transferencias DMA son deshabilitados.
Cuando el Enable se vuelve a activar, el CFG y la mayoria de los bits de
control permanecen sin cambiar. Por ejemplo, cuando es re-habilitado,
el USART inmediatamente generará una interrupción TXDRY (Si es que
está habilitado en el registro INTENSET) o una solicitud de
transferencia DMA porque el transmisor ha sido reiniciado y por lo tanto
disponible.

1: Habilitado: El USART es habilitado para su operación.


1 - Reserved, user software should not write ones to reserved bits. NA
3:2 DATALEN Bits de datos. 0

0x0: 7-bits de longitud de datos.


0x1: 8-bits de longitud de datos.
0x2: 9-bits de longitud de datos. El 9no bit es comunmente usado para
direccionamiento en modo multidrop. Ver el bit ADDRDET en el registro
de control CTL.
0x3: Reservado.
5:4 PARITYSEL Tipo de paridad. 0

0x0: Sin paridad.


0x1: Reservado.
0x2: Paridad PAR. Agrega un bit a cada caracter tal que el número de 1s
en un caracter transmitido es par. y el número de 1s en un caracter
recibido es esperado a ser par.
0x3: Paridad IMPAR. Agrega un bit a cada caracter tal que el número de
1s en un caracter transmitido es impar. y el número de 1s en un
caracter recibido es esperado a ser impar.
6 STOPLEN Número de bits de parada a ser agregados (al final) en el dato 0
transmitido. En la recepción solamente es requerido 1 bit de stop.

0: 1-bit de parada.
1: 2-bits de parada. Está configuración deberia ser solamente utilizado
para comunicación asíncrona.
8:7 - Reserved, user software should not write ones to reserved bits. NA

ARM I (LPC) - ARM Cortex-M0+ 77 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 78

Bit Símbolo Descripción Valor al


Reset
9 CTSEN Habilitar CTS. Determina si el CTS es usado para el control de flujo. El 0
CTS puede provenir desde un pin de entrada o desde el RTS del propio
UART si el modo realimentado es habilitado.

0: Sin control de flujo. El transmisor no recibe ninguna señal de control


de flujo automática.
1: Habilita control de flujo. El transmisor usa la entrada CTS (o la salida
RTS en modo realimentado) para propositos de control de flujo.
10 - Reserved, user software should not write ones to reserved bits. NA
11 SYNCEN Seleccionar operación en modo Síncrono o Asíncrono. 0

0: Modo asíncrono seleccionado.


1: Modo síncrono seleccionado.
12 CLKPOL Polaridad del reloj. Selecciona la polaridad del reloj y el flanco del 0
muestreo de los datos recibidos en modo síncrono.

0: Flanco de bajada. UnRXD es muestreado en el flanco de bajada de la


señal SCLK.
1: Flanco de subida. UnRXD es muestreado en el flanco de subida de la
señal SCLK.
13 - Reserved, user software should not write ones to reserved bits. NA
14 SYNCMST Modo Maestro. Selecciona la interface como Maestro para el modo 0
síncrono.

0: Esclavo. Cuando el modo síncrono es habilitado, el USART se


configura como esclavo.
1: Maestro. Cuando el modo síncrono es habilitado, el USART se
configura como maestro.
15 LOOP Modo dato realimentado. En la recepción solamente es requerido 1 bit 0
de stop.

0: Operación normal.
1: Modo realimentado. Esto proporciona un mecanismo para realizar
pruebas diagnóstico realimentado de datos de UART. El dato serial del
transmisor (Un_TXD) es conectado internamente a la entrada serial del
receptor (Un_RXD). Las señales Un_TXD y Un_CTS aparecerán en los
pines externos si estas funciones son configurados para aparacer en
los pines del dispositivo. La señal de recepción RTS es también
realimentada al CTS y realizar control de flujo si es habilitado por el bit
CTSEN.
17:16 - Reserved, user software should not write ones to reserved bits. NA
18 OETA Output Enable Turnaround Enable. Habilitación de la señal Output 0
Enable antes y después de la transmisión de datos, para operación con
RS485.

0: Deshabilitado. Si OESEL es seleccionado, la señal Output Enable


será desactivada después del último bit de parada de una transmision.
1: Habilitado. Si OESEL es seleccionado, la señal Output Enable
permanece actica por el tiempo de un caracter después del último bit
de parada de una transmision. La señal OE también permanecerá
activa si otra transmisión es iniciada antes de estar desactivada.
19 AUTOADDR Automatic Address Matching Enable. 0

0: Deshabilitado. Cuando el direccionamiento es habilitado por el


ADDRDET, la comparación de las direcciones es realizada por

ARM I (LPC) - ARM Cortex-M0+ 78 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 79

Bit Símbolo Descripción Valor al


Reset
software. Esto provee la posibilidad de direccionamiento versátil (como
por ejemplo responder a una o más direcciones).
1: Habilitado. Cuando el direccionamiento es habilitado por el
ADDRDET, la comparación de las direcciones es realizada por
hardware, usando el valor del registro ADDR como dirección a
comparar.
20 OESEL Seleción del Output Enable. 0

0: Control de flujo. La señal RTS es usado como la función estandar de


control de flujo.
1: Output Enable. La señal RTS es usado para proveer una señal de
habilitación de la transmisión para controlar un transceiver RS485.
21 OEPOL Polaridad de la señal Output Enable. 0

0: LOW. Si el OESEL es activado, la señal Output Enable es activo en


LOW.
1: HIGH. Si el OESEL es activado, la señal Output Enable es activo en
HIGH.
22 RXPOL Polaridad del dato a recibido. 0

0: Polaridad no Invertida. La señal RX es usada como llega desde el pin


del dispositivo. La señal de RX tiene valor 1 como valor de reposo, el bit
de inicio es 0, el dato no es invertido y el bit de parada es 1.
1: Polaridad Invertida. La señal RX es invertida antes de ser usada por
el UART. La señal de RX tiene valor 1 como valor de reposo, el bit de
inicio es 0, el dato no es invertido y el bit de parada es 1.
23 TXPOL Polaridad del dato a transmitir. 0

0: Polaridad no Invertida. La señal TX es enviada sin cambio. La señal


de TX tiene valor 1 como valor de reposo, el bit de inicio es 0, el dato no
es invertido y el bit de parada es 1.
1: Polaridad Invertida. La señal TX es invertida antes de ser enviada. La
señal de TX tiene valor 0 como valor de reposo, el bit de inicio es 1, el
dato es invertido y el bit de parada es 0.
31:24 - Reserved, user software should not write ones to reserved bits. NA

10.3.2 CTL - Registro de Control


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 - Reserved, user software should not write ones to reserved bits. NA
1 TXBRKEN Break enable. 0

0: Operación normal.
1: Continuous break is sent immediately when this bit is set, and
remains until this bit is cleared. A break may be sent without danger of
corrupting any currently transmitting character if the transmitter is first
disabled (TXDIS in CTL is set) and then waiting for the transmitter to be
disabled (TXDISINT in STAT = 1) before writing 1 to TXBRKEN.
2 ADDRDET Address detection mode. 0

0: Disabled. The USART presents all incoming data.


1: Enabled. The USART receiver ignores incoming data that does not

ARM I (LPC) - ARM Cortex-M0+ 79 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 80

Bit Símbolo Descripción Valor al


Reset
have the most significant bit of the data (typically the 9th bit) = 1. When
the data MSB bit = 1, the receiver treats the incoming data normally,
generating a received data interrupt. Software can then check the data to
see if this is an address that should be handled. If it is, the ADDRDET bit
is cleared by software and further incoming data is handled normally.
5:3 - Reserved, user software should not write ones to reserved bits. NA
6 TXDIS Transmit disable. 0

0: Not disabled. USART transmitter is not disabled.


1: Disabled. USART transmitter is disabled after any character currently
being transmitted is complete. This feature can be used to facilitate
software flow control.
7 - Reserved, user software should not write ones to reserved bits. NA
8 CC Continuous clock generation. By default, SCLK is only output while data 0
is being transmitted in synchronous mode.

0: Clock on character. In synchronous mode, SCLK cycles only when


characters are being sent on Un_TXD or to complete a character that is
being received.
1: Continuous clock. SCLK runs continuously in synchronous mode,
allowing characters to be received on Un_RxD independently from
transmission on Un_TXD).
9 CLRCCONR Clear continuous clock. 0
X
0: No effect on the CC bit.
1: Auto-clear. The CC bit is automatically cleared when a complete
character has been received. This bit is cleared at the same time.
15:10 - Reserved, user software should not write ones to reserved bits. NA
16 AUTOBAUD Autobaud enable. 0

0: Disabled. UART is in normal operating mode.


1: Enabled. UART is in autobaud mode. This bit should only be set when
the UART is enabled in the CFG register and the UART receiver is idle.
The first start bit of RX is measured and used the update the BRG
register to match the received data rate. AUTOBAUD is cleared once this
process is complete, or if there is an ABERR. This bit can be cleared by
software when set, but only when the UART receiver is idle. Disabling
the UART in the CFG register also clears the AUTOBAUD bit.
31:17 - Reserved, user software should not write ones to reserved bits. NA

10.3.3 STAT - Registro de Estado


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 RXRDY Receiver Ready Flag. 0

1, Indica que un dato es disponible para ser leído del buffer del
receptor. El flag el borrado después de leer uno de los registros RXDAT
o RXDATSTAT.
1 RXIDLE Receiver Idle. 0

0: Indica que el receptor esta actualmente en el proceso de recepción


de un dato.

ARM I (LPC) - ARM Cortex-M0+ 80 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 81

Bit Símbolo Descripción Valor al


Reset
1: Indica que el receptor no está en el proceso de recpeción dato
alguno.
2 TXRDY Transmitter Ready flag. 0

1: Indica que un dato podría ser escrito en el buffer de transmisión. El


dato previo podria aún estar en proceso de transmisión. Este flag es
borrado cuando un dato es escrito en el registro TXDAT, y es puesto en
1 cuando el dato es movido desde el buffer de transmisión hacia el
registro de desplazamiento de transmisión.
3 TXIDLE Transmitter Idle. NA

0: Indica que el transmisor es actualmente en el proceso de envío de un


dato.
1: Indica que el transmisor no está en el proceso de envío de datos.
4 CTS Este bit refleja el estado actual de la señal CTS, sin importar la 0
configuración del bit CTSEN en el registro CFG. Este bit toma el valor
del estado del pin de entrada CTS, a menos que el modo realimentado
se encuentre habilitado.
5 DELTACTS 1: Cambio del estado detectado del flag CTS. Este bit es borrado por 0
software.
6 TXDISSTAT Transmitter Disabled Interrupt flag. 0

1: Indica que el transmisor del USART esta completamente en estado


IDLE después de ser deshabilitado via el bit TXDIS en el registro CTL.
7 - Reserved, user software should not write ones to reserved bits. NA
8 OVERRUNIN Overrun Error interrupt flag. 0
T
1: Indica que un nuevo caracter es recibido mientras el buffer de
recepción es aún en uso. Si esto ocurre el nuevo caracter recibido
presente en el registro de desplazamiento es perdido.
9 - Reserved, user software should not write ones to reserved bits. NA
10 RXBRK Received Break. This bit reflects the current state of the receiver break 0
detection logic. It is set when the Un_RXD pin remains low for 16 bit
times. Note that FRAMERRINT will also be set when this condition
occurs because the stop bit(s) for the character would be missing.
RXBRK is cleared when the Un_RXD pin goes high.
11 DELTARXBR This bit is set when a change in the state of receiver break detection 0
K occurs. Cleared by software.
12 START This bit is set when a start is detected on the receiver input. Its purpose 0
is primarily to allow wake-up from deep-sleep or power-down mode
immediately when a start is detected. Cleared by software.
13 FRAMERRIN Framing Error interrupt flag. This flag is set when a character is received 0
T with a missing stop bit at the expected location. This could be an
indication of a baud rate or configuration mismatch with the transmitting
source.

14 PARITYERRI Parity Error interrupt flag. This flag is set when a parity error is detected 0
NT in a received character.
15 RXNOISEINT Received Noise interrupt flag. Three samples of received data are taken 0
in order to determine the value of each received data bit, except in
synchronous mode. This acts as a noise filter if one sample disagrees.
This flag is set when a received data bit contains one disagreeing

ARM I (LPC) - ARM Cortex-M0+ 81 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 82

Bit Símbolo Descripción Valor al


Reset
sample. This could indicate line noise, a baud rate or character format
mismatch, or loss of synchronization during data reception.

16 ABERR Autobaud Error. An autobaud error can occur if the BRG counts to its limit 0
before the end of the start bit that is being measured, essentially an
autobaud time-out.

31:17 - Reserved, user software should not write ones to reserved bits. NA

10.3.4 INTENSET - Registro de Lectura y Habilitación de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 RXRDYEN 1: Habilita una interrupción cuando hay un caracter recibido por ser 0
leído desde el registro RXDAT.
1 - Reserved, user software should not write ones to reserved bits. NA
2 TXRDYEN 1: Habilita una interrupción cuando el registro TXDAT está disponible 0
para tomar otro caracter a transmitir.
3 TXIDLEEN 1: Habilita una interrupción cuando el transmisor llega a estar en 0
estado IDLE (TXIDLE=1).
4 - Reserved, user software should not write ones to reserved bits. NA
5 DELTACTSE 1: Habilita una interrupción cuando hay un cambio de estado en la 0
N entrada CTS.
6 TXDISEN 1: Habilita una interrupción cuando el transmisor es completamente 0
deshabilitado como lo indica en el flag TXDISINT en el registro STAT.
7 - Reserved, user software should not write ones to reserved bits. NA
8 OVERRUNE 1: Habilita una interrupción cuando ha ocurrido un error por pérdida de 0
N un dato recibido (OVERRUN)
10:9 - Reserved, user software should not write ones to reserved bits. NA
11 DELTARXBR 1: Habilita una interrupción cuando un cambio de estado a ocurrido en 0
KEN la detección de una condición de ruptura de recepción.
12 STARTEN 1: Habilita una interrupción cuando un bit de START en la recepción ha 0
sido detectado.
13 FRAMERRE 1: Habilita una interrupción cuando un error de trama ha sido detectado. 0
N
14 PARITYERR 1: Habilita una interrupción cuando un error de paridad ha sido 0
EN detectado.
15 RXNOISEEN 1: Habilita una interrupción cuando el ruido en la recepción ha sido 0
detectado.
16 ABERREN 1: Habilita una interrupción cuando un error de AutoBaud ha ocurrido. 0
31:17 - Reserved, user software should not write ones to reserved bits. NA

10.3.5 INTENCLR - Registro de Deshabilitación de Interrupción


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 82 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 83

Bit Símbolo Descripción Valor al


Reset
0 RXRDYCLR 1: Borra el bit correspondiente en el registro INTENSET. 0
1 - Reserved, user software should not write ones to reserved bits. NA
2 TXRDYCLR 1: Borra el bit correspondiente en el registro INTENSET. 0
3 TXIDLECLR 1: Borra el bit correspondiente en el registro INTENSET. 0
4 - Reserved, user software should not write ones to reserved bits. NA
5 DELTACTSC 1: Borra el bit correspondiente en el registro INTENSET. 0
LR
6 TXDISCLR 1: Borra el bit correspondiente en el registro INTENSET. 0
7 - Reserved, user software should not write ones to reserved bits. NA
8 OVERRUNC 1: Borra el bit correspondiente en el registro INTENSET. 0
LR
10:9 - Reserved, user software should not write ones to reserved bits. NA
11 DELTARXBR 1: Borra el bit correspondiente en el registro INTENSET. 0
KCLR
12 STARTCLR 1: Borra el bit correspondiente en el registro INTENSET. 0
13 FRAMERRCL 1: Borra el bit correspondiente en el registro INTENSET. 0
R
14 PARITYERR 1: Borra el bit correspondiente en el registro INTENSET. 0
CLR
15 RXNOISECL 1: Borra el bit correspondiente en el registro INTENSET. 0
R
16 ABERRCLR 1: Borra el bit correspondiente en el registro INTENSET. 0
31:17 - Reserved, user software should not write ones to reserved bits. NA
10.3.6 RXDAT - Registro de Recepción de Datos
Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
8:0 RXDAT Contiene el último caracter recibido, el número de bits que son 0
relevantes depende de la configuración del USART.
31:9 - Reserved, user software should not write ones to reserved bits. NA

10.3.7 RXDATSTAT - Registro de Recepción y Estado de Datos


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
8:0 RXDAT Contiene el último caracter recibido, el número de bits que son 0
relevantes depende de la configuración del USART.
12:9 - Reservado, el valor leido de los bits reservado no son definidos. NA
13 FRAMERR Flag de estado de Error de Trama. Este bit es válido cuando hay un 0
caracter a ser leído en el registro RXDAT y refleja el estado del caracter.
Este bit se pondrá en 1 cuando el caracter en el registro RXDAT fue
recibido con la ausencia del bit de parada en la posición esperada.
Esto podría ser indicativo de que el Baud Rate o configuración no
corresponde con la fuente de transmisión.
14 PARITYERR Flag de estado de Error de Paridad. Este bit es válido cuando hay un 0
caracter a ser leído en el registro RXDAT y refleja el estado del caracter.

ARM I (LPC) - ARM Cortex-M0+ 83 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 84

Bit Símbolo Descripción Valor al


Reset
Este bit se pondrá en 1 cuando un error de paridad es detectado en el
dato recibido.
15 RXNOISE Flag Ruido en la Recepción. Ver descripción del bit RXNOISEINT. NA
31:16 - Reservado, el valor leido de los bits reservado no son definidos. 0

10.3.8 TXDAT - Registro de Transmisión de Datos


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
8:0 TXDAT Registro de transmisión de datos del USART. Su escritura causa la 0
transmisión del dato tan pronto el registro de desplazamiento de
transmisión se encuentre disponible y cualquiera condiciones sea
cumplida: CTS low (si el bit CTSEN = 1), bit TXDIS = 0.
31:9 - Reserved, user software should not write ones to reserved bits. NA

10.3.9 BRG - Registro Generador de Tasa de Bits


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
15:0 BRGVAL Este valor es usado para dividir el reloj de entrada del USART para 0
determinar el BAUD RATE, basado en la entrada de reloj proveniente
del FRG.

0x0000 = El reloj del FRG es usado directamente por el USART.


0x0001 = El reloj del FRG es dividido por 2 antes de ser usado por el
USART.
0x0002 = El reloj del FRG es dividido por 3 antes de ser usado por el
USART.
...
0xFFFF = El reloj del FRG es dividido por 65536 antes de ser usado por
el USART.
31:16 - Reserved, user software should not write ones to reserved bits. NA

10.3.10 INTSTAT - Registro de Estado de Interrupción


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
0 RXRDY 1: Receptor listo. 0
1 - Reserved, user software should not write ones to reserved bits. NA
2 TXRDY 1: Transmisor listo. 1
3 TXIDLE 1: Transmisor en IDLE. 1
4 - Reserved, user software should not write ones to reserved bits. NA
5 DELTACTS 1: En 1 cuando hay un cambio de estado en la entrada CTS. 0
6 TXDISINT 1: Interrupción por transmisor deshabilitado. 0
7 - Reserved, user software should not write ones to reserved bits. NA
8 OVERRUNIN 1: Interrupción por pérdida de un dato recibido (OVERRUN) 0

ARM I (LPC) - ARM Cortex-M0+ 84 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 85

Bit Símbolo Descripción Valor al


Reset
T
10:9 - Reserved, user software should not write ones to reserved bits. NA
11 DELTARXBR 1: Interrupción cuando un cambio de estado a ocurrido en la detección 0
K de una condición de ruptura de recepción.
12 START 1: En 1 cuando un bit de START es detectado. 0
13 FRAMERRIN 1: Interrupción por error de trama. 0
T
14 PARITYERRI 1: Interrupción por error de paridad. 0
NT
15 RXNOISEINT 1: Interrupción por recepción ruido. 0
16 ABERR 1: Interrupción por error de AutoBaud. 0
31:17 - Reserved, user software should not write ones to reserved bits. NA

10.3.11 OSR - Registro de Selección de Sobremuestreo


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
8:0 OSRVAL Valor del sobremuestro para detección de bits de datos. 0

0x0 - 0x3 = No soportado.


0x4 = 5 ciclos de reloj son utilizados para la transmisión y recepción de
cada bit de datos.
0x5 = 6 ciclos de reloj son utilizados para la transmisión y recepción de
cada bit de datos.
...
0xF = 16 ciclos de reloj son utilizados para la transmisión y recepción
de cada bit de datos.
31:9 - Reserved, user software should not write ones to reserved bits. NA

10.3.12 ADDR - Registro de Dirección


Enter topic text here.

Bit Símbolo Descripción Valor al


Reset
7:0 ADDRESS El campo de dirección es usado para comparar automáticamente la 0
dirección. Este parámetro es usado si ADDRDET = 1 y AUTOADDR = 1.
31:8 - Reserved, user software should not write ones to reserved bits. NA

10.4 Descripción Funcional


Enter topic text here.

// Headers
#include "LPC 84x.h"

// Rutina de retardos
uint32_t Delay (uint32_t C ounter)
{
// Decrementa mientras cuenta sea mayor a cero
while (C ounter-- > 0);

ARM I (LPC) - ARM Cortex-M0+ 85 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 86

return 0;
}

// Inicialización del puerto


uint32_t GPIO_Init (void)
{
// Habilita clock del GPIO1
LPC _SYSC ON->SYSAHBC LKC TRL[0] |= (1U << 20);

// C onfigura como salida GPIO1_7


LPC _GPIO_PORT->DIRSET[1] = (1U << 7);

// GPIO1_7 en HIGH
LPC _GPIO_PORT->SET[1] = (1U << 7);

return 0;
}

// Función principal
int main (void)
{
// Actualiza variable que contiene valor de la frecuencia del core
SystemC oreC lockUpdate();

// Inicialización del puerto


GPIO_Init();

// Bucle infinito
while(1)
{
// GPIO1_7 cambia de estado
LPC _GPIO_PORT->NOT[1] = (1U << 7);

Delay(1000000);
}

return 0;
}

10.5 Ejemplos
Los ejemplos a continuación están basado en la tarjeta de desarrollo MPCB-LPC845, desarrollada por
I2D TECHNOLOGY S.A.C., ver diagrama esquemático de la tarjeta de desarrollo 103 .

10.5.1 Configuración de la interface USARTn


En el siguiente ejemplo se desea configurar (9600, 8, n, 1) la interface UART0, y conectar los pines
PIO0_25 y PIO0_24 a las señales TXD y RXD respectivamente.

// Headers
#include "LPC845.h"

// Rutina de retardo (Cuentas)


void Delay(int Counter)
{
while(Counter-- > 0);
}

void UART0_Init(void)
{
uint32_t vTemp;

// Configura fuente de reloj para el USART0


// SYSCON->UART0CLKSEL = 0x1;

ARM I (LPC) - ARM Cortex-M0+ 86 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 87

SYSCON->FCLKSEL[0] = 0x1;

// Habilita CLK - USART0


SYSCON->SYSAHBCLKCTRL0 |= (1 << 14);

// Reset USART0
SYSCON->PRESETCTRL0 &= ~(1 << 14);
SYSCON->PRESETCTRL0 |= (1 << 14);

// Deshabilita interrupción del USART0


NVIC_DisableIRQ(USART0_IRQn);

// Conexion de pines PIO0_25 y PIO0_24 hacia las señales TXD y RXD


// del UART0
// SWM Enable / Disable
SYSCON->SYSAHBCLKCTRL0 |= (1 << 7);
vTemp = SWM0->PINASSIGN0;
vTemp &= ~((0xFF << 0)|(0xFF << 8));
vTemp |= ((25 << 0)|(24 << 8));
SWM0->PINASSIGN0 = vTemp;
SYSCON->SYSAHBCLKCTRL0 &= ~(1 << 7);

// Configuracion del USART0


USART0->CFG = (0x00 << 0)|(0x01 << 2)|(0x00 << 4)|(0x00 << 6)|(0x00 << 9)
|(0x00 << 11)|(0x00 << 12)|(0x00 << 14)|(0x00 << 15)|(0x00 << 18)
|(0x00 << 19)|(0x00 << 20)|(0x00 << 21)|(0x00 << 22)|(0x00 << 23);
USART0->CTL = (0x00 << 1)|(0x00 << 2)|(0x00 << 6)|(0x00 << 8)|(0x00 << 9)
|(0x00 << 16);
USART0->STAT = 0;
USART0->INTENSET = 0;
USART0->INTENCLR = 0;
// USART0->INTSTAT = 0;
// USART0->RXDAT = 0;
// USART0->RXDATSTAT = 0;
USART0->TXDAT = 0;

// Configuracion de la tasa de bits


// BRGVAL = FCLK/((OSRVAL + 1) x baud rate) – 1
USART0->OSR = (0xF << 0);
USART0->BRG = 12000000/(((USART0->OSR & 0xF) + 1) * 9600) - 1;
USART0->ADDR = 0;

// Habilita USART0
USART0->CFG |= (0x01 << 0);
}

int main(void)
{
// Inicializa interface serial
UART0_Init();

while (1)
{
// Envia un caracter y espera por un tiempo
USART0->TXDAT = '@';
Delay(1000000);
}

return 0;
}

ARM I (LPC) - ARM Cortex-M0+ 87 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 88

10.5.2 Transmisión de datos


Al ejemplo anterior se le ha agregado una función, encargada de enviar un caracter siempre que el
trasmisor se encuentre disponible, lo cual nos permite enviar varios caracteres de forma secuencial.

// Envio de un caracter
void UART0_SendChar(char vChar)
{
// Espera mientras TXRDY = 0
while((USART0->STAT & (1 << 2)) == 0) ;
// Envia caracter
USART0->TXDAT = vChar;
}

// Funcion principal
int main(void)
{
// Inicializa interface
UART0_Init();

while (1)
{
// Envia caracteres
UART0_SendChar('I');
UART0_SendChar('2');
UART0_SendChar('D');
UART0_SendChar('\r');
UART0_SendChar('\n');

Delay(1000000);
}

return 0;
}

10.5.3 Recepción de datos


Al ejemplo anterior se le ha agregado una función, encargada de leer un caracter y retornarlo.

// Envio de un caracter
void UART0_SendChar(char vChar)
{
// Espera mientras TXRDY = 0
while((USART0->STAT & (1 << 2)) == 0) ;
// Envia caracter
USART0->TXDAT = vChar;
}

// Envio de un caracter
char UART0_ReceiveChar(void)
{
// Espera mientras RXRDY = 0
while((USART0->STAT & (1 << 0)) == 0) ;

// Lee caracter
return (USART0->RXDAT);
}

// Funcion principal
int main(void)
{
// Inicializa interface
UART0_Init();

ARM I (LPC) - ARM Cortex-M0+ 88 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 10: Interface Serial - USART 89

while (1)
{
// Lee y envia siguiente caracter
UART0_SendChar(UART0_ReceiveChar() + 1);

Delay(1000000);
}

return 0;
}

10.5.4 Transmisión de un arreglo de datos


Al ejemplo anterior se le ha agregado una función, encargada de enviar un arreglo de bytes.

// Envia un arreglo datos


void UART0_SendBytes(uint8_t *pBytes, int Length)
{
while(Length > 0)
{
Length--;

// Espera mientras TXRDY = 0


while((USART0->STAT & (1 << 2)) == 0) ;

// Envia caracter
USART0->TXDAT = *pBytes++;
}
}

// Funcion principal
int main(void)
{
Delay(1000000);

// Inicializa interface
UART0_Init();

while (1)
{
// Envia una cadena de caracteres
UART0_SendBytes((uint8_t *)("Hola mundo\r\n"), 12);

Delay(1000000);
}

return 0;
}

10.5.5 Transmisión con interrupciones


Enter topic text here.

10.5.6 Recepción con interrupciones


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 89 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 11: Conversor Analógico a Digital - ADC 90

Capítulo 11: Conversor Analógico a Digital - ADC


Enter topic text here.

11.1 Configuración
Enter topic text here.

11.2 Descripción General


Enter topic text here.

11.3 Descripción de Registros


Enter topic text here.

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
CTRL 50 R/W 0x000 Registro de Interrupción. El IR puede ser 0 Ref. 27

escrito para limpiar los flags de


interrupción. El IR puede ser leido para
identificar cual de las posibles 8 fuentes
de interrupcion están pendientes.
- - 0x004 Reservado - -
50 27
SEQA_CTRL R/W 0x008 Contador del Timer. El registro TC es de 0 Ref.
32 bits y es incrementado cada PR+1
ciclos de reloj del bus APB. El contador
del timer es controlado mediante el
registro TCR.
SEQB_CTRL 50 R/W 0x00C Registro pre-escalador. Cuando el 0 Ref. 27

contador del preescalador (PC) es igual a


este valor, en el siguiente ciclo de reloj se
incrementa el TC y limpia el PC.
50 27
SEQA_GDAT R/W 0x010 Contador del pre-escalador. El registro 0 Ref.
PC es un contador de 32 bits el cual es
incrementado hasta el valor almacenado
en el PR. Cuando el valor en PR es
alcanzado, el TC es incrementado y el PC
es reiniciado a 0. El PC es observable y
controlable mediante la interface del bus.
SEQB_GDAT 50 R/W 0x014 Registro de Control de Comparación. El 0 Ref. 27

MCR se usa para controlar si se genera


una interrupción, si el TC es reiniciado
cuando el evento Match ocurre, y si el
registro de comparación se vuelve a
cargar desde el registro oculto (Shadow)
cuando el TC es reiniciado.
DAT0 50 RO 0x020 Registro de Comparación 0. El MR0 0 Ref. 27

puedes ser habilitado mediante el MCR


para reiniciar el TC, detener el TC y el PC,
y/o generar una interrupción cada vez que
el MR0 coincida con el TC.
DAT1 50 RO 0x024 Registro de Comparación 1. Ver 0 Ref. 27

descripción de registro MR0.


DAT2 50 RO 0x028 Registro de Comparación 2. Ver 0 Ref. 27

ARM I (LPC) - ARM Cortex-M0+ 90 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 11: Conversor Analógico a Digital - ADC 91

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
descripción de registro MR0.
50 27
DAT3 RO 0x02C Registro de Comparación 3. Ver 0 Ref.
descripción de registro MR0.
50 27
DAT4 RO 0x030 Registro de Control de Captura. El CCR 0 Ref.
controla cuales flancos de las entradas
de captura son usados para cargar los
registros de captura y si es generado o no
una interrupción cuando se realiza la
captura.
50 27
DAT5 RO 0x034 Registro de Captura 0. El CR0 es cargado 0 Ref.
con el valor del TC cuando hay un evento
en la entrada CAPn.0.
DAT6 50 RO 0x038 Registro de Captura 1. Ver descripción 0 Ref. 27

del CR0.
DAT7 50 RO 0x03C Registro de Captura 2. Ver descripción 0 Ref. 27

del CR0.
DAT8 50 RO 0x040 Registro de Captura 3. Ver descripción 0 Ref. 27

del CR0.
DAT9 50 RO 0x044 Registro Externo de Comparación. El 0 Ref. 27

EMR controla la función de comparación y


los pines de comparación externos.
DAT10 50 RO 0x048 Registro de Control de Cuentas. El CTCR 0 Ref. 27

selecciona entre los modos Timer y


Counter, y en el modo Counter selecciona
la señal y el flanco para el conteo.
50 27
DAT11 RO 0x04C Registro de Control del PWM. El PWMC 0 Ref.
habilita el modo PWM en los pines de
comparación.
THR0_LOW 50 R/W 0x050 Registro oculto 0 de comparación, Si es 0 Ref. 27

habilitado el MR0 se volverá a cargar


automáticamente con el contenido de
este registro (MSR0) cada vez que el TC
es reiniciado a cero.
50 27
THR1_LOW R/W 0x054 Registro oculto 1 de comparación, Si es 0 Ref.
habilitado el MR1 se volverá a cargar
automáticamente con el contenido de
este registro (MSR1) cada vez que el TC
es reiniciado a cero.
50 27
THR0_HIGH R/W 0x058 Registro oculto 2 de comparación, Si es 0 Ref.
habilitado el MR2 se volverá a cargar
automáticamente con el contenido de
este registro (MSR2) cada vez que el TC
es reiniciado a cero.
THR1_HIGH 50 R/W 0x05C Registro oculto 3 de comparación, Si es 0 Ref. 27

habilitado el MR3 se volverá a cargar


automáticamente con el contenido de
este registro (MSR3) cada vez que el TC
es reiniciado a cero.
CHAN_THRSEL R/W 0x060 Registro oculto 0 Ref. 27

27
INTEN R/W 0x064 Registro oculto 0 Ref.
27
FLAGS R/W 0x068 Registro oculto 0 Ref.

ARM I (LPC) - ARM Cortex-M0+ 91 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 11: Conversor Analógico a Digital - ADC 92

Nombre Acceso Offset Descripción Valor al Referen


Reset cia
TRM R/W 0x06C Registro oculto 0 Ref. 27

11.3.1 CTRL - Registro de Control


Enter topic text here.

11.3.2 SEQA_CTRL - Registro de Control para Secuencia de Conversión A


Enter topic text here.

11.3.3 SEQB_CTRL - Registro de Control para Secuencia de Conversión B


Enter topic text here.

11.3.4 SEQx_GDAT - Registros A y B de Datos Global.


Enter topic text here.

11.3.5 DATn - Registro de Datos del Canal n


Enter topic text here.

11.3.6 THRm_LOW - Registros 0 y 1 de Comparación de Umbral Inferior


Enter topic text here.

11.3.7 THRm_HIGH - Registros 0 y 1 de Comparación de Umbral Superior


Enter topic text here.

11.3.8 CHAN_THRSEL - Registro de Selección de Umbral por Canal


Enter topic text here.

11.3.9 INTEN - Registro de Habilitación de Interrupción


Enter topic text here.

11.3.10 FLAGS - Registro de Flags


Enter topic text here.

11.3.11 TRM - Registro TRIM


Enter topic text here.

11.4 Descripción Funcional


Enter topic text here.

11.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 92 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 12: Comparador Analógico - ACMP 93

Capítulo 12: Comparador Analógico - ACMP


Enter topic text here.

12.1 Configuración
Enter topic text here.

12.2 Descripción General


Enter topic text here.

12.3 Descripción de Registros


Enter topic text here.

12.3.1 CTRL - Registro de Control del Comparador


Enter topic text here.

12.3.2 LAD - Registro de Voltaje de Comparación


Enter topic text here.

12.4 Descripción Funcional


Enter topic text here.

12.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 93 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 13: Conversor Digital a Analógico - DAC 94

Capítulo 13: Conversor Digital a Analógico - DAC


Enter topic text here.

13.1 Configuración
Enter topic text here.

13.2 Descripción General


Enter topic text here.

13.3 Descripción de Registros


Enter topic text here.

13.3.1 CR - Registro de Conversión del DAC


Enter topic text here.

13.3.2 CTRL - Registro de Control del DAC


Enter topic text here.

13.3.3 CNTVAL - Registro de Valor de Pre-carga del Contador


Enter topic text here.

13.4 Descripción Funcional


Enter topic text here.

13.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 94 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 14: Interfaz Periférica Serial - SPI 95

Capítulo 14: Interfaz Periférica Serial - SPI


Enter topic text here.

14.1 Configuración
Enter topic text here.

14.2 Descripción General


Enter topic text here.

14.3 Descripción de Registros


Enter topic text here.

14.3.1 CFG - Registro de Configuración


Enter topic text here.

14.3.2 DLY - Registro de Retardo


Enter topic text here.

14.3.3 STAT - Registro de Estado


Enter topic text here.

14.3.4 INTENSET - Registro de Lectura y Habilitación de Interrupción


Enter topic text here.

14.3.5 INTENCLR - Registro de Desabilitación de Interrupción


Enter topic text here.

14.3.6 RXDAT - Registro de Datos del Receptor


Enter topic text here.

14.3.7 TXDATCTL - Registro de Datos y Control del Transmisor


Enter topic text here.

14.3.8 TXDAT - Registro de Datos del Transmisor


Enter topic text here.

14.3.9 TXCTL - Registro de Control del Transmisor


Enter topic text here.

14.3.10 DIV - Registro Divisor de Reloj


Enter topic text here.

14.3.11 INTSTAT - Registro de Estado de la Interrupción


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 95 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 14: Interfaz Periférica Serial - SPI 96

14.4 Descripción Funcional


Enter topic text here.

14.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 96 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 15: Interfaz - I2C 97

Capítulo 15: Interfaz - I2C


Enter topic text here.

15.1 Configuración
Enter topic text here.

15.2 Descripción General


Enter topic text here.

15.3 Descripción de Registros


Enter topic text here.

15.3.1 CFG - Registro de Configuración


Enter topic text here.

15.3.2 STAT - Registro de Estado


Enter topic text here.

15.3.3 INTENSET - Registro de Lectura y Habilitación de Interrupción


Enter topic text here.

15.3.4 INTENCLR - Registro de Lectura y Desabilitación de Interrupción


Enter topic text here.

15.3.5 TIMEOUT - Registro de Asignación de Tiempo de Espera


Enter topic text here.

15.3.6 CLKDIV - Registro Divisor de Reloj


Enter topic text here.

15.3.7 INTSTAT - Registro de Estado de Interrupción


Enter topic text here.

15.3.8 MSTCTL - Master - Registro de Control


Enter topic text here.

15.3.9 MSTTIME - Master - Registro de Tiempos


Enter topic text here.

15.3.10 MSTDAT - Master - Registro de Datos


Enter topic text here.

15.3.11 SLVCTL - Slave - Registro de Control


Enter topic text here.

15.3.12 SLVDAT - Slave - Registro de Datos


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 97 © 2019 I2D TECHNOLOGY S.A.C.


Capítulo 15: Interfaz - I2C 98

15.3.13 SLVADRn - Slave - Registro de Dirección n


Enter topic text here.

15.3.14 SLVQUAL0 - Slave - Registro de Detección de Trama para Dirección 0


Enter topic text here.

15.3.15 MONRXDAT - Registro de Monitoreo de Recepción de Datos


Enter topic text here.

15.4 Descripción Funcional


Enter topic text here.

15.5 Ejemplos
Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 98 © 2019 I2D TECHNOLOGY S.A.C.


Apendice A: Guia de programación en Lenguaje C 99

Apendice A: Guia de programación en Lenguaje C


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 99 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice B: Arquitectura Von Neumann y Harvard 100

Apéndice B: Arquitectura Von Neumann y Harvard


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 100 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice C: Arquitectura ARM Cortex-M0+ 101

Apéndice C: Arquitectura ARM Cortex-M0+


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 101 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice D: IDEs - Instalacion y creación de proyectos 102

Apéndice D: IDEs - Instalacion y creación de proyectos


Enter topic text here.

Bit Símbolo Descripción Valor al Tipo de


Reset Acceso

19.1 KEIL - uVision IDE


Enter topic text here.

19.2 MCUXpresso IDE


Enter topic text here.

ARM I (LPC) - ARM Cortex-M0+ 102 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 103

Apéndice E: Diagrama esquematico del MPCB-LPC845

20.1 Diagrama de bloques

ARM I (LPC) - ARM Cortex-M0+ 103 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 104

20.2 CPU

ARM I (LPC) - ARM Cortex-M0+ 104 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 105

20.3 Fuente de alimentación

ARM I (LPC) - ARM Cortex-M0+ 105 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 106

20.4 Entradas analógicas

ARM I (LPC) - ARM Cortex-M0+ 106 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 107

20.5 Entradas digitales

20.6 Salidas digitales

ARM I (LPC) - ARM Cortex-M0+ 107 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 108

20.7 Display

ARM I (LPC) - ARM Cortex-M0+ 108 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 109

20.8 Teclado y pulsadores

20.9 Buzzer

ARM I (LPC) - ARM Cortex-M0+ 109 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 110

20.10 Panel LED

ARM I (LPC) - ARM Cortex-M0+ 110 © 2019 I2D TECHNOLOGY S.A.C.


Apéndice E: Diagrama esquematico del MPCB-LPC845 111

20.11 Interfaces y uModulos

ARM I (LPC) - ARM Cortex-M0+ 111 © 2019 I2D TECHNOLOGY S.A.C.


112 ARM I (LPC) - ARM Cortex-M0+

Index
-G-
GPIO 10

-P-
PLL 31

-S-
SYSCON 21

© 2019 I2D TECHNOLOGY S.A.C.


113

Endnotes 2... (after index)

© 2019 I2D TECHNOLOGY S.A.C.


Back Cover

También podría gustarte