Cómo dominar rápidamente la programación de una nueva MCU
Los principios y funciones básicos de cualquier MCU son similares, la única diferencia es la configuración y el número de módulos de funciones periféricas, sistemas de instrucción, etc. Para los sistemas de instrucción, aunque parecen tener una forma muy diferente, en realidad son solo símbolos diferentes. El significado que representan, las funciones a completar y los métodos de direccionamiento son básicamente similares. Por lo tanto, para cualquier MCU, debemos comprenderlo y dominarlo principalmente desde los siguientes aspectos:
Comprender las características de un MCU
Para comprender un MCU, primero es necesario conocer su espacio ROM. , Espacio de RAM, número de puertos IO, número de temporizadores y métodos de temporización, módulos de funciones periféricas proporcionados, fuentes de interrupción, voltaje de funcionamiento y consumo de energía, etc.
Después de comprender esto, el siguiente paso es comparar las funciones de la MCU seleccionada con las funciones requeridas para el desarrollo real del proyecto y aclarar qué recursos se necesitan actualmente y cuáles no se utilizan en este proyecto. . Para las funciones que deben usarse en el proyecto pero que no son proporcionadas por la MCU seleccionada, debe comprender cuidadosamente la información relevante de la MCU para poder implementar métodos indirectos, por ejemplo, si desea implementar la actual. función de salida y el microcontrolador no tiene recursos DA, debe agregar un chip DA adicional o elegir un chip de salida actual con un puerto serie.
Para conocer los recursos necesarios para el desarrollo del proyecto, debe leer atentamente el contenido correspondiente en la hoja de datos y puede ignorar o explorar los módulos funcionales innecesarios. Para el aprendizaje de MCU, la aplicación es la clave. Debe aprender mediante la aplicación en lugar de aprender por aprender.
Después de aclarar las funciones relevantes de la MCU, puede comenzar a programar. Para los principiantes o diseñadores que utilizan esta MCU por primera vez, pueden encontrar muchas funciones de la MCU poco claras. Para tales problemas, hay dos formas de resolverlos. Una es escribir un programa de verificación especial para comprender las funciones descritas en. la otra información se puede ignorar temporalmente y el diseño del programa se escribe de acuerdo con su comprensión actual, y se deja para que se modifique y mejore durante la depuración. El primer método es adecuado para proyectos y principiantes con tiempo libre, mientras que el último método es adecuado para personas con cierta experiencia en desarrollo de MCU o cuando el cronograma del proyecto es ajustado;
No se recomienda dedicar tiempo especial a El sistema de instrucción. Es hora de entender. El sistema de instrucciones es solo un símbolo de descripción lógica. Durante la programación, solo puede verificar las instrucciones relevantes de acuerdo con su propia lógica y los requisitos lógicos del programa. A medida que avanza la programación, se familiarizará cada vez más con el sistema de instrucciones. Incluso puedes recordarlo inconscientemente.
Familiarícese con las funciones básicas de la MCU
Para la mayoría de las MCU, las siguientes funciones son las más comunes y básicas. Para diferentes MCU, la forma en que se describen puede ser diferente, pero. Son esencialmente iguales:
Temporizador: Aunque existen muchos tipos de Temporizadores, se pueden clasificar en dos categorías: una es un Temporizador de intervalo de tiempo fijo, es decir, su tiempo de temporización se establece mediante el sistema y no puede ser controlado por el programa de usuario. El sistema solo proporciona varios intervalos de tiempo fijos para que el programa de usuario elija, como 32 Hz, 16 Hz, 8 Hz, etc., por lo que se puede utilizar para implementar reloj, temporización y otros relacionados. funciones. Esta clase no es común; el otro tipo es el temporizador programable. Como sugiere el nombre, el tiempo de sincronización de este tipo de temporizador puede controlarse mediante el programa del usuario. Los métodos de control incluyen: selección de la fuente del reloj, número de división de frecuencia (. Preescala) Selección y montaje de números prefabricados, etc. Este tipo de aplicación de temporizador es muy flexible y su uso real también cambia constantemente, como realizar conteo, temporización o salida de PWM, etc. Dado que la fuente del reloj se puede seleccionar libremente, este tipo de temporizador generalmente se combina con el contador de eventos;
Puerto IO: cualquier MCU tiene una cierta cantidad de puertos IO. Sin un puerto IO, un MCU El canal. Se pierde la comunicación con el mundo exterior. Según la capacidad de configuración del puerto IO, se puede dividir en los siguientes tipos:
Puerto puro de entrada o puro de salida: este tipo de puerto IO está determinado por el diseño del hardware de la MCU y solo puede ser de entrada o salida. salida y no puede ser utilizado por software. No es común realizar configuraciones en tiempo real;
Leer y escribir puertos IO directamente: por ejemplo, el puerto IO del microcontrolador 51 pertenece a este tipo de IO. puerto.
Cuando se ejecuta la instrucción de lectura del puerto IO, es un puerto de entrada; cuando se ejecuta la instrucción de escritura del puerto IO, es automáticamente un puerto de salida;
Un puerto IO con una dirección que se puede configurar: el la entrada o salida de este tipo de puerto IO se realiza a través de un registro. Para configurar, la aplicación es más flexible;
Puerto IO funcional: este tipo de puerto IO se puede reutilizar. Por ejemplo, la segunda función es IIC. , SPI, AD, UART/USART, etc., que se pueden configurar a través de registros para lograr funciones de multiplexación, este tipo de puerto IO puede realizar funciones específicas más complejas a través de chips dedicados, como comunicación RS232 a través de MAX232, almacenamiento de apagado. a través de AT24C02, etc.;
Para el uso de puertos IO, es importante. Una cosa que se debe tener en cuenta es: para el puerto de entrada, debe haber una señal de nivel clara para garantizar que no pueda flotador (esto se puede lograr agregando una resistencia pull-up o pull-down, y para el puerto de salida, se debe considerar el nivel de su estado de salida y sus condiciones de conexión externa, como las capacidades de conducción).
Interrupción externa: la interrupción externa también es una función básica de la mayoría de las MCU. Generalmente se utiliza para la activación de señales en tiempo real. Los métodos de interrupción incluyen activación de flanco ascendente, activación de flanco descendente y activación de nivel. Las interrupciones externas generalmente se implementan a través del puerto de entrada. Si es un puerto IO, su función de interrupción se activará solo cuando esté configurado en entrada; si es un puerto de salida, la función de interrupción externa se desactivará automáticamente. Las aplicaciones de las interrupciones externas son las siguientes:
Detección de señales de disparo externas: una se basa en requisitos en tiempo real, como control de tiristores controlados por silicio, detección de señales repentinas, etc.; es la necesidad de ahorrar energía;
Medición de la frecuencia de la señal: las interrupciones pueden activarse mediante flancos ascendentes o descendentes;
Detección de clave y activación del sistema: para MCU que entran en estado de suspensión , generalmente debe activarse mediante una interrupción externa. La forma más básica es un botón, que cambia el nivel mediante la acción del botón;
Interfaz de comunicación: la interfaz de comunicación proporcionada por la MCU generalmente. incluye la interfaz SPI, UART, interfaz I2C, etc. se describen a continuación:
Interfaz SPI: este tipo de interfaz es el método de comunicación más básico proporcionado por la mayoría de las MCU. Su transmisión de datos está controlada por un sistema sincrónico. reloj Las señales incluyen: SDI (entrada de datos en serie), SDO (salida de datos en serie), SCLK (reloj en serie), CS (opcional); este tipo de interfaz puede funcionar en modo Maestro o Esclavo. de quién proporciona la señal del reloj, el lado que proporciona el reloj es el Maestro y el lado opuesto es el Esclavo, que puede lograr una comunicación full-duplex;
UART/USART: es el asíncrono más básico. /interfaz de transmisión síncrona, y sus líneas de señal solo tienen dos líneas Rx y Tx, el formato de datos básico es: Bit de inicio + Bit de datos (7 bits/8 bits) + Bit de paridad (par, impar o ninguno) + Bit de parada (1~2 bits). El tiempo que ocupa un bit de datos se llama velocidad en baudios. Para la mayoría de las MCU, la longitud de los datos, el modo de verificación de datos (verificación impar, verificación par o sin verificación), la longitud del bit de parada (bit de parada) y la velocidad en baudios se pueden configurar de manera flexible a través de la programación del programa. El método más utilizado para este tipo de interfaz es implementar comunicación RS232 o comunicación RS485.
Interfaz I2C: I2C es un protocolo de transmisión de datos desarrollado por Philips. También se implementa mediante 2 señales: SDAT (entrada y salida de datos en serie) y SCLK (reloj en serie). Su mayor beneficio es que se pueden conectar múltiples dispositivos a este bus e identificarlos y acceder a ellos a través de direcciones. Uno de los mayores beneficios del bus I2C es que es muy conveniente utilizar software para implementarlo a través del puerto IO (recursos en el chip); o simulación de puerto IO ordinaria), su método de comunicación es semidúplex.
Watchdog (temporizador de vigilancia): Watchdog también es una configuración básica de la mayoría de las MCU. El Watchdog de la mayoría de las MCU solo puede permitir que el programa lo reinicie pero no lo apague (algunos están configurados cuando el. El programa está grabado, como la MCU de la serie Microchip PIC), y algunas MCU utilizan un método específico para determinar si se debe abrir, como la serie STM32. Siempre que el programa acceda al registro Watchdog, se abrirá automáticamente y no podrá. ser usado nuevamente.
En términos generales, el tiempo de reinicio del mecanismo de vigilancia se puede configurar de forma programable. La aplicación más básica de Watchdog es proporcionar una función de reinicio automático para las MCU que fallan debido a fallas inesperadas.