DSP03 Ago2020 - Dic2020

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 18

UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA

Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Objetivo: Modificar el programa de la Práctica 2 y poder usar los registros de funciones especiales de
configuración de puerto, en vez de usar las funciones de configuración de MikroC y simular el
comportamiento en Proteus para el STM32F103R6.

Antecedentes (desarrollar por el estudiante)

Arquitectura ARM --------------- Investigar al respecto. Coloque el esquema del STM32F103R6.

Interpretación de la matrícula del STM32

1/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

2/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

El botón de usuario B1 está conectado al PC13 (pin 23 del CN7) del STM32F446RE y el led
de usuario está conectado en el PA5(pin 11 del CN10)

3/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

4/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Salida Push pull con transistores bipolares.

https://unicrom.com/amplificador-contrafasico-o-push-pull/

Cuando la señal de entrada es grande y lo que se necesita es ampliar la capacidad de entrega de  corriente, se
utiliza un amplificador contrafásico o push – pull. (amplificador de potencia). 

https://rh6stzxdcl1wf9gj1fkj14uc-wpengine.netdna-ssl.com/wp-
content/uploads/2017/07/Open-vs-Drain-Collector.png

5/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

https://circuitdigest.com/forums/embedded/difference-between-open-drain-and-push-pull

En Open drain, si el Vin se pone en bajo, y entonces Vout se conecta a tierra significando que se drena
corriente. Si el Vin se pone en alto, la salida queda flotante.

6/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Registros del GPIO en el STM32F446RE, [2].

7/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

8/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

9/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

10/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Material y equipo

Proteus 8.8 para simular el STM32F103R6


MikroC for ARM 6.0

Desarrollo
1. Crear un proyecto con nombre: DSP02_GPIO_REGISTROS con la siguiente configuración:

*Nota: realizarlo para el STM32F103R6

11/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

2. Después de oprimir Next aparecerá la siguiente pantalla, en la cual no se deberá escribir nada.

3. Después de oprimir Next aparecerá la siguiente pantalla, en la cual se debe marcar la casilla: Include None
(Advanced)

12/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

4. Después de oprimir Finish aparecerá la siguiente pantalla:

13/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

5. Cargue el siguiente código C en la ventana de edición de código:


#define BOTON GPIOC_IDR.B13 //PC13 COMO BOTÓN DE USUARIO
//#define BOTON GPIOB_IDR.B5 //PB5 COMO ENTRADA FLOTANTE
#define LED GPIOA_ODR.B5

void Conf_maq();
void Ini_var();
void Proceso();

void main() {
Conf_maq();
Ini_var();
while(1) //Bucle principal
Proceso();
}

void Conf_maq()
{
// ===========PRIMERA FORMA USANDO FUNCIONES DE MIKROC
//GPIO_Digital_Input(&GPIOC_BASE,_GPIO_PINMASK_13); //Entrada con Pullup usando el botón de usuario (PC13)
//(Entrada normalmente en alto y el botón se activa en bajo)
//GPIO_Digital_Input(&GPIOB_BASE,_GPIO_PINMASK_5); //Entrada externa flotante usando el pin PB5 como botón de entrada
// Si conectamos una R=1000 ohms a 3.3 v hacemos una entrada en pull-up
//(Entrada normalmente en alto y el botón se activa en 0V)
// Si conectamos una R=1000 ohms a 0 v hacemos una entrada en pull-down
//(Entrada normalmente en bajo y el botón se activa en 3.3V)
//GPIO_Config(&GPIOB_BASE,
// _GPIO_PINMASK_5,
// _GPIO_CFG_MODE_INPUT | _GPIO_CFG_PULL_UP); //Entrada con Pullup usando el pin PB5 como botón
//(Entrada normalmente en alto y el botón se activa en bajo)
//GPIO_Config(&GPIOB_BASE,
// _GPIO_PINMASK_5,
// _GPIO_CFG_MODE_INPUT | _GPIO_CFG_PULL_DOWN); //Entrada con Pulldown usando el pin PB5
//como botón
//(Entrada normalmente en bajo y el botón se desactiva en 3.3V)
//GPIO_Digital_Output(&GPIOA_BASE,_GPIO_PINMASK_5); //Salida con push pull

//===========SEGUNDA FORMA: ESCRIBIENDO LA PALABRA EN EL REGISTRO


//RCC_AHB1ENR|=1<<GPIOAEN; //HABILITA EL RELOJ DEL PUERTO A
// GPIOA_MODER |=(1<<(5*2));
//GPIOA_MODER =0x00000400;
//GPIOA_OTYPER=0x00000000;
//GPIOA_OSPEEDR=0x00000000;
//GPIOA_PUPDR=0x00000000;

14/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

//RCC_AHB1ENR|=1<<GPIOCEN; //HABILITA EL RELOJ DEL PUERTO C


//GPIOC_MODER=0x00000000;
//GPIOC_PUPDR=0x00000000;

//============TERCERA FORMA: USANDO OPERACIONES LÓGICAS Y CORRIMIENTOS EN LA CONF. DEL REGISTRO


RCC_AHB1ENR|=1<<GPIOAEN; //HABILITA EL RELOJ DEL PUERTO A
GPIOA_MODER&=~(0<<(5*2));//APAGA LOS BITS DE CONFIGURACIÓN DEL PA5
GPIOA_MODER|=(1<<(5*2)); //ENCIENDE LOS BITS DE CONFIGURACIÓN DEL PA5
GPIOA_OTYPER&=~(0<<(5*1)); //PUERTO A BIT 5 SALIDA PUSH PULL 2 MHZ

RCC_AHB1ENR|=1<<GPIOCEN; //HABILITA EL RELOJ DEL PUERTO C


GPIOC_MODER&=~(0uL <<(13*2));//APAGA LOS BITS DE CONFIGURACIÓN DEL PC13
GPIOC_PUPDR|=(0uL<<(13*2)); //PUERTO C BIT 13 ENTRADA FLOTANTE

//Solo para el STM32F103RB


//RCC_APB2ENR|=1<<IOPAEN; //HABILITA EL RELOJ DEL PUERTO A
//GPIOA_CRL&=~(15<<(5*4));//APAGA LOS BITS DE CONFIGURACIÓN DEL PA5
//GPIOA_CRL|=(2<<(5*4)); //PUERTO A BIT 5 SALIDA PUSH PULL 2 MHZ

//RCC_APB2ENR|=1<<IOPCEN; //HABILITA EL RELOJ DEL PUERTO C


//GPIOC_CRH&=~(15<<(5*4));//APAGA LOS BITS DE CONFIGURACIÓN DEL PC13
//GPIOC_CRH|=(4uL<<(5*4)); //PUERTO C BIT 13 ENTRADA FLOTANTE
}

void Ini_var()
{
LED=0;
}

void Proceso()
{
if(BOTON==0) //Entrada en Pull-down: if (BOTON==0) (Si el boton no se oprime entra) if (BOTON==1) (Si el boton se oprime
entra)
{
LED=~LED;
Delay_ms(500);
}
}

6. Grabar el código como: DSP02_GPIO_REGISTROS.c y automáticamente quedará grabado en la carpeta


del proyecto.

7. Compile el proyecto: Build.

15/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Actividades en Proteus para simular el STM32F103R6

9. Crear un proyecto en Proteus que se llame: DSP02_GPIO_REGISTROS. (Calificación 5)

10. Mientras el botón de usuario no esté presionado, cambie los tiempos de conmutación del LED a: 200 ms.
Cuando se presiona el botón de usuario, ya no hay conmutación del LED. (Calificación 6)

11. Usar el pin PB5 (del CN10) como entrada externa y de esta forma colocar un push button en pull-up para
que al oprimir, el led de usuario (PA5) conmute a 200 ms. (Calificación 7)

12. Usar el pin PB6 como entrada externa y de esta forma colocar un push button en pull-down para que al
oprimir, el led de usuario (PA5) conmute a 200 ms. (Calificación 8)

16/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Realizar lo siguiente en Proteus para simular el STM32F103R6

13. Usar el pin PB5 y PB6 como entradas externas y de esta forma colocar dos push button en pull-down para
que al oprimir el push button 1, cuatro led’s verdes se enciendan de izquierda a derecha con 200 ms de
diferencia. Cuando se oprima el push button 2, cuatro led’s azules se enciendan de derecha a izquierda con
200 ms de diferencia cada uno. La solución a este problema debe hacerse usando operaciones lógicas y
corrimientos en la configuración del registro.

(Calificación 10)

17/18
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIA
Y TECNOLGIAS AVANZADAS – IPN

DISPOSITIVOS PROGRAMABLES
Práctica No. 3

Configuración de la unidad funcional de GPIO y funciones especiales mediante registros y simulación en Proteus

Profr. M. en C. Juan Manuel Madrigal Bravo

Cuestionario

1. En referencia el registro GPIOx_OSPEEDR, investigar en los manuales los cuatro posibles valores de
velocidad que maneja.
2. Cuáles son las funciones adicionales del registro AFR (Alternate Function Register).

Conclusiones

Bibliografía

[1] UM1724 User Manual. STM32 Nucleo-64 board. January 2016.

[2] RM0390 Reference Manual. STM32F446xx advanced ARM –based 32 bit MCUs. January 2016.

[3] STM32F446xC/E Datasheet. September 2016.

Entregables

PDF del reporte, con antecedents, cuestionario, conclusiones.


Archivo en código fuente del punto 13 (DSP02_GPIO_REGISTROS.c)
Archivo .hex del punto 13 (DSP02_GPIO_REGISTROS.hex)
Archivo de proteus del punto 13 (DSP02_GPIO_REGISTROS.pdsprj)

18/18

También podría gustarte