En esta actividad se estudiarán los siguientes aspectos:
- Qué es USB?
- Qué es un puerto serial (UART)?
- Qué es un puerto serial virtual?
- Qué es una terminal serial?
- Minicom
- printf, getc, putc mediante USB
- Qué es un convertidor analógico digital?
- ADC en el STM32F4
- Cómo convertir un voltaje analógico a un valor digital?
mkdir ~/local/src/repos/gitlab/
cd ~/local/src/repos/gitlab/
git clone git@gitlab.com:arcoslab/libopencm3-plus-examples.git
- Inicialice los subrepositorios y compile las bibliotecas:
cd libopencm3-plus-examples
git submodule init
git submodule update
cd libopencm3
make -j`nproc`
cd ..
cd libopencm3-plus
make -j`nproc`
- Compile el ejemplo "cdcacm_example":
cd ..
cd examples/stm32/f4/stm32f429idiscovery/cdcacm_example
make
- Conecte el cable "mini-USB" (de programación) a la tarjeta STM32 y su computadora y cargue el programa:
make flash
- Permita a los usuarios comunes utilizar "dmesg" (solicite esto también al profesor):
sudo setcap cap_syslog=ep /usr/bin/dmesg
- En una consola aparte ejecute el siguiente comando:
dmesg -w
E: filme esta consola mientras realiza el siguiente paso:
- Conecte el cable "micro-USB" (el de usuario) a la tarjeta STM32 y su computadora
En este momento la PC detectará el dispositivo USB: "Product: CDC-ACM UART Interface, Manufacturer: ARCOS-lab UCR, SerialNumber: 62858A87" O similar
P: Finalmente dmesg indica el puerto de comunicación serial virtual asignado. Por ejemplo: "ttyACM1". Anote el puerto en su caso! Lo necesitará para los siguientes pasos.
- En una consola aparte instale el programa "minicom". Si no tiene permisos de administrador, solicité esta tarea al profesor.
sudo apt-get install minicom
- Ejecute el programa minicom en una consola aparte:
minicom -s
- Le saldrá un "menú" en texto. Con las flechas siga: "Serial port setup"->"A" (corrija el "Serial Device" al que anotó arriba, debe incluir "/dev/" al inicio siempre. Desactive "Hardware Flow Control" y "Software Flow Control" (apretando "F" y "G" según sea necesario). Aprete la tecla "Enter" para salirse y luego seleccion y aprete "Exit"
Minicom está listo para realizar comunicación con la tarjeta STM32
E: Filme la consola de minicom. Debería aparecer "Test" o similar. Aprete varias letras y filme. Luego presione la tecla "enter" y filme. Vuelva a apretar varias letras y filme.
Ya el program se encuentra en comunicación con mínicom.
- Modifique el programa de tal manera que imprima un conteo desde 0 a 10 y repita desde 0 nuevamente. Dicho programa debe esperar 0.5s entre cada "printf" (entre cada conteo). El programa debe seguir aceptando teclas y detenerse cuando alguien las apreta. Solo debe imprimir este conteo cuando se apreta "Enter".
P: Entregue el código del programa modificado
E: Filme la ejecución del programa
Mantenga la consola de minicom abierta, se necesitará en la siguiente sección de la actividad
- Descomprima el siguiente código: adc_cdcacm.tar.gz en el directorio de ejemplos de la tarjeta de desarrollo stm32f429discovery:
cd ~/local/src/repos/gitlab/libopencm3-plus-examples/examples/stm32/f4/stm32f429idiscovery/
tar -xzf adc_cdcacm.tar.gz
- Conecte el mini-USB de la tarjeta a su PC
- Compile y cargue el programa:
cd adc_cdcacm
make
make flash
- Desconecte la tarjeta de su PC completamente
- Utilizando una protoboard y cables, conecte un potenciómetro o trimmer según lo indicado en la clase por el profesor: Un extremo del pot a 3V, otro extremo a GND, y el centro a PA0
E: tome una fotografía de la conexión
- Solicite la verificación y visto bueno de conexión por parte del profesor.
- Conecte también el "micro-USB" a la PC y observe el comportamiento en la consola de minicom
- Presione "enter" en la consola de minicom
E: tome un video del comportamiento de minicom mientras varía la perilla del potenciómetro o trimmer
- Conecte una punta de osciloscopio entre tierra y la derivación del potenciómetro.
E: Tome un video que muestre el voltaje en el osciloscopio mientras varía el potenciómetro y también el valor indicado en la consola. El video debe ser continuo y apuntar a las tres cosas sucesivamente y varias veces: potenciómetro, osciloscopio, minicom.
P: Modifique el programa para que en lugar de imprimir valores enteros de 0 a 4095 imprima los valores en punto flotante que corresponden al voltaje real indicado por el osciloscopio.