La Red de Conocimientos Pedagógicos - Conocimientos históricos - ¿Cuál es el conocimiento básico del microcontrolador (qué conocimiento básico se necesita para aprender el microcontrolador)?

¿Cuál es el conocimiento básico del microcontrolador (qué conocimiento básico se necesita para aprender el microcontrolador)?

Es la abreviatura de unidad de microcontrolador MCU. Se llama microcontrolador en chino y se conoce comúnmente como MCU. Se trata de reducir adecuadamente la frecuencia y las especificaciones de la CPU e integrar interfaces periféricas como memoria, contador, USB, convertidor A/D, UART, PLC, DMA e incluso circuitos de controlador LCD en un chip para formar una computadora a nivel de chip que puede controlar diferentes aplicaciones Diferentes combinaciones, desde teléfonos móviles, periféricos de PC, controles remotos hasta electrónica automotriz e industrial.

Una breve historia del desarrollo de las microcomputadoras de un solo chip

La historia de las microcomputadoras de un solo chip no es larga, pero se está desarrollando rápidamente. Su aparición y desarrollo están aproximadamente sincronizados con el microprocesador. Desde que Intel lanzó por primera vez su microprocesador de 4 bits en 1971, su desarrollo se puede dividir aproximadamente en cinco etapas. La siguiente es una introducción al desarrollo de Intel. sMCU

1971 ~1976

La etapa inicial del desarrollo de MCU. En noviembre de 1971, Intel diseñó por primera vez el microprocesador Intel 4004 de 4 bits. Cada chip tiene 2.000 transistores. Se combinó con RAM, ROM y registro de desplazamiento para formar el primer microprocesador MCS-4. Posteriormente, el microprocesador Intel 8008 y 8. Se introdujeron microprocesadores de bits lanzados por otras empresas.

1976 ~1980

Nivel de microcontrolador de bajo rendimiento. Representada por la serie MCS-48 lanzada por Intel en 1976, utiliza una estructura monolítica para integrar una CPU de 8 bits, una interfaz de E/S paralela de 8 bits, un temporizador/contador de 8 bits, RAM y ROM en un chip semiconductor. Aunque tiene un rango de direccionamiento limitado, sin E/S serie, pequeña capacidad de RAM y ROM y un sistema de interrupción simple, sus funciones pueden cumplir con los requisitos del control industrial general y de instrumentos inteligentes.

1980 ~1983

Nivel de microcontrolador de alto rendimiento. En la actualidad, los microcontroladores de 8 bits de alto rendimiento generalmente están equipados con puertos serie, sistemas de procesamiento de interrupciones multinivel y múltiples temporizadores/contadores de 16 bits. La capacidad de RAM y ROM en el chip aumenta y el rango de direccionamiento puede alcanzar los 64 KB. Algunos chips también tienen interfaces de conversión A/D.

Desde 1983 hasta finales de los 80.

Nivel MCU de 16 bits. En 1983, Intel lanzó la serie MCS-96 de microcontroladores de 16 bits de alto rendimiento. Debido a su último proceso de fabricación, la integración de chips alcanza los 120.000 transistores/chip.

En la década de 1990

Las MCU se estaban desarrollando a niveles más altos en términos de integración, funcionalidad, velocidad, confiabilidad y aplicación.

Clasificación y aplicación de los microcontroladores

Los microcontroladores se pueden dividir en dos tipos según sus tipos de memoria: sin ROM en chip y con ROM en chip. Para los chips sin ROM en el chip, la EPROM externa debe conectarse antes de la aplicación; los chips ROM en el chip se pueden dividir en EPROM en el chip, ROM en el chip enmascarado y Flash en el chip.

Se puede dividir en tipo general y tipo especial según su finalidad, según el ancho del bus de datos y la longitud de los bytes de datos que se pueden procesar a la vez, se divide en 8; MCU de 16 bits y 32 bits.

En la actualidad, el mercado de MCU más utilizado en China es el campo de la electrónica de consumo, seguido por el campo industrial y el mercado de la electrónica automotriz. El consumo electrónico incluye electrodomésticos, televisores, videoconsolas, sistemas de audio y vídeo, etc. Las áreas industriales incluyen hogares inteligentes, automatización, aplicaciones médicas y nueva generación y distribución de energía. El campo de la automoción incluye sistemas de control de seguridad y sistemas de propulsión de automóviles.

Funciones básicas de MCU

Para la gran mayoría de microcontroladores, las siguientes funciones son las más comunes y básicas. Para diferentes MCU, los métodos de descripción pueden ser diferentes, pero la esencia es básicamente la misma:

Temporizadores: aunque hay muchos tipos de temporizadores, se pueden dividir aproximadamente en dos categorías: uno es un temporizador con un intervalo de tiempo fijo, es decir, el tiempo lo establece el sistema y puede ser controlado por el programa de usuario. El sistema solo proporciona varios intervalos de tiempo fijos para que los usuarios elijan, como 32 Hz, 16 Hz, 8 Hz, etc. Este tipo de temporizador se encuentra comúnmente en microcontroladores de 4 bits y puede usarse para implementar reloj, temporización y otras funciones relacionadas.

El otro es un temporizador programable.

Como sugiere el nombre, los temporizadores se pueden cronometrar mediante un programa controlado por el usuario. Los métodos de control incluyen selección de fuente de reloj, selección de preescalador y configuración de número preestablecido. Algunos microcontroladores tienen estas tres características al mismo tiempo y otros pueden tener una o dos de ellas. La aplicación de este temporizador es muy flexible y sus usos prácticos cambian constantemente. Una de las aplicaciones más comunes es utilizarlo para implementar salida PWM.

Dado que la fuente del reloj se puede seleccionar libremente, este temporizador se utiliza a menudo junto con un contador de eventos.

Puertos IO: Cualquier MCU tiene un número determinado de puertos IO. Sin el puerto IO, el microcontrolador perderá el canal de comunicación con el mundo exterior. Según la configuración del puerto IO, se puede dividir en las siguientes categorías:

Puerto de entrada pura o de salida pura: este puerto IO está determinado por el diseño del hardware de la MCU y solo puede ser entrada o salida y no se puede configurar en tiempo real mediante software.

Puerto IO de lectura y escritura directa: por ejemplo, el puerto IO del MCS-51 pertenece a este puerto IO. Al ejecutar el comando para leer el puerto IO, se convierte en un puerto de entrada; al ejecutar el comando para escribir el puerto IO, se convierte automáticamente en el puerto de salida.

Programación para establecer la dirección de entrada y salida: la entrada o salida de este tipo de puerto IO la establece el programa de acuerdo con las necesidades reales. La aplicación es flexible y puede realizar algunas aplicaciones a nivel de bus, como. como bus I2C, varios buses de control de controladores LCD y LED, etc.

Para el uso de puertos IO, debe recordar: para el puerto de entrada, debe haber una señal de nivel clara para garantizar que pueda flotar; para el puerto de salida, el nivel de estado de salida debe considerar su nivel externo; Al realizar la conexión, debe asegurarse de que no haya suministro o descenso de corriente en estado de espera o estático.

Interrupción externa: la interrupción externa también es una función básica de la mayoría de los microcontroladores. Generalmente se utiliza para la activación de señales en tiempo real, muestreo de datos y detección de estado. El modo de interrupción se activa mediante flanco ascendente, flanco descendente y activación por nivel. Las interrupciones externas generalmente se implementan a través de puertos de entrada. Si es un puerto IO, su función de interrupción solo se habilitará cuando esté configurado como 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ñal de disparo externo: Una se basa en requisitos en tiempo real, como el control de tiristores controlados por silicio y la detección de señales de ráfaga. Otra es la necesidad de conservar la electricidad.

Al medir la frecuencia, para garantizar que no se pierda la señal, la interrupción externa es la opción más ideal.

Decodificación de datos: en el campo de las aplicaciones de control remoto, para reducir los costos de diseño, a menudo es necesario utilizar software para decodificar varios datos codificados, como la codificación Manchester y PWM.

Detección de pulsaciones de teclas y activación del sistema: generalmente, las MCU que entran en estado de suspensión deben activarse mediante interrupciones externas. La forma más básica es la pulsación de teclas, y el nivel se cambia mediante pulsaciones de teclas.

Interfaz de comunicación: Generalmente, las interfaces de comunicación proporcionadas por los microcontroladores incluyen interfaz SPI, UART, interfaz I2C, etc. Se describen a continuación:

Interfaz SPI: esta interfaz es el método de comunicación más básico proporcionado por la mayoría de los microcontroladores y su transmisión de datos está controlada por un reloj sincrónico. Las señales incluyen SDI, SDO, SCLK y señales de listo; en algunos casos, es posible que no haya una señal de listo; la interfaz puede funcionar en modo maestro o esclavo; En general, depende de quién proporciona la señal del reloj. El dispositivo maestro proporciona el reloj y el otro es el dispositivo esclavo.

UART: Es la interfaz de transmisión asíncrona más básica, con sólo líneas de señal Rx y Tx. El formato de datos básico es: bit de inicio, bit de datos, bit de paridad, bit de parada. El tiempo que tarda un bit de datos se llama velocidad en baudios.

Para la mayoría de los microcontroladores, la longitud de los datos, el modo de verificación de datos, la longitud del bit de parada y la velocidad en baudios se pueden configurar de manera flexible mediante programación. La forma más común de esta interfaz es la comunicación en serie con una PC.

Interfaz: I2C es un protocolo de transmisión de datos desarrollado por Philips. Esto también se consigue mediante dos señales: SDAT y SCLK. Su mayor ventaja es que se pueden conectar múltiples dispositivos en este bus y se pueden identificar y acceder a ellos por dirección. Una de las mayores ventajas del bus I2C es que es muy conveniente implementar software a través del puerto IO. La velocidad de datos transmitida por el bus I2C está completamente controlada por SCLK, que puede ser rápida o lenta. A diferencia de la interfaz UART, el bus I2C tiene requisitos de velocidad estrictos.

Watchdog: Watchdog es también la configuración básica de la mayoría de MCU. La mayoría de los dispositivos de vigilancia de microcontroladores sólo pueden permitir que el programa lo reinicie, pero no lo apague. Pero algunas MCU deciden encenderse o apagarse de una manera específica, como la serie Samsung KS57. Siempre que el programa acceda al registro de vigilancia, se activará automáticamente y no se podrá desactivar. En términos generales, el tiempo de reinicio del mecanismo de vigilancia se puede configurar a través del programa. La aplicación más básica del mecanismo de vigilancia es proporcionar capacidades de autorrecuperación para la MCU cuando falla debido a una falla inesperada.

Habilidades de aprendizaje para microcontroladores

Los principios y funciones básicos de cualquier MCU son similares. La única diferencia es la configuración, cantidad y sistema de mando de sus módulos de funciones periféricas.

Para el sistema de comando, aunque parece diferente en forma, en realidad son solo símbolos diferentes. Sus significados, funciones a completar y métodos de direccionamiento son básicamente similares.

Para comprender una MCU, necesitamos conocer su espacio ROM, espacio RAM, número de puertos IO, número de temporizadores y métodos de temporización, circuitos periféricos proporcionados, fuentes de interrupción, voltaje de funcionamiento y consumo de energía, etc.

Después de comprender las características de estas MCU, el siguiente paso es comparar las funciones de la MCU seleccionada con las necesarias para el desarrollo real del proyecto y aclarar qué recursos se necesitan actualmente y qué recursos no se utilizan en este. proyecto.

Para las funciones que se requieren en el proyecto pero que no son proporcionadas por la MCU seleccionada, debe comprender cuidadosamente la información relevante de la MCU para poder implementarlas indirectamente. Por ejemplo, si el proyecto desarrollado necesita comunicarse con el puerto COM de la PC y la MCU seleccionada no proporciona un puerto UART, esto se puede lograr mediante una interrupción externa.

Para conocer los recursos necesarios para el desarrollo del proyecto, es necesario comprender y leer atentamente sus manuales. Los módulos funcionales innecesarios se pueden ignorar o explorar. Para el aprendizaje de microcontroladores, la aplicación es la clave y el objetivo principal.

Después de definir las funciones relevantes de la MCU, puede comenzar a programar.

Para los principiantes o diseñadores que utilizan este microcontrolador por primera vez, puede haber muchas descripciones vagas de las funciones del microcontrolador. Hay dos formas de resolver este problema. Uno es escribir un programa de verificación especial para comprender las funciones descritas en los datos; el otro se puede ignorar por el momento. El diseño del programa del microcontrolador se escribe de acuerdo con el conocimiento actual y se modificará y mejorará durante la depuración. El primer método es adecuado para proyectos y principiantes con relativamente poco tiempo, y el último método es adecuado para personas con cierta experiencia en el desarrollo de microcontroladores o cuando el progreso del proyecto es limitado.

Nunca te tomes un tiempo especial para entender las instrucciones. El conjunto de instrucciones es sólo un símbolo de descripción lógica. Al programar, solo puede verificar las instrucciones relevantes según su propia lógica y los requisitos lógicos del programa. Y a medida que avance la programación, dominará cada vez más el sistema de instrucciones e incluso lo memorizará inconscientemente.

Programación MCU

La programación de MCU es muy diferente a la programación de PC. Aunque las herramientas de desarrollo de microcontroladores basadas en C se están volviendo cada vez más populares, el lenguaje ensamblador sigue siendo el lenguaje de programación más conciso y efectivo para códigos de programas eficientes y diseñadores a quienes les gusta usar ensamblador.

Para la programación de microcontroladores, se puede decir que el marco básico es aproximadamente el mismo y generalmente se divide en tres partes: la parte de inicialización, el cuerpo del bucle del programa principal y el controlador de interrupciones, que se explican de la siguiente manera:

Inicialización: la externalización es el paso más básico e importante en toda la programación del microcontrolador, que generalmente incluye lo siguiente:

Enmascarar todas las interrupciones e inicializar el puntero de la pila: la parte de inicialización. normalmente no lo hace. No quiero que me molesten.

Limpiar el área RAM del sistema y la memoria de visualización: Aunque en ocasiones puede no ser del todo necesario, desde la perspectiva de la confiabilidad y consistencia, se recomienda desarrollar buenos hábitos de programación, especialmente para evitar errores inesperados.

Inicialización del puerto IO: de acuerdo con los requisitos de aplicación del proyecto, configure el modo de entrada y salida del puerto IO relevante y configure la resistencia pull-up o pull-down del puerto de entrada; puerto de salida, es necesario configurar su nivel de salida original para evitar errores innecesarios.

Configuración de interrupciones: active todas las fuentes de interrupción requeridas por el proyecto, establezca condiciones de activación para las interrupciones y desactive las interrupciones innecesarias que no se utilizan.

Inicialización de otros módulos funcionales: todos los módulos de función periféricos de MCU que deben usarse deben configurarse de acuerdo con los requisitos de aplicación del proyecto, como comunicación UART, velocidad en baudios, longitud de datos, modo de verificación, parada. espera de longitud de bits. Para el temporizador del programador, se deben configurar su fuente de reloj, divisor y datos de sobrecarga.

Externalización de parámetros: una vez externalizados el hardware y los recursos de la MCU, el siguiente paso es inicializar algunas variables y datos utilizados en el programa. La inicialización de esta parte debe diseñarse de acuerdo con la disposición general del proyecto y programa específico. Para algunas aplicaciones que utilizan EEPROM para guardar la cantidad de elementos preestablecidos, se recomienda copiar los datos relevantes a la RAM de la MCU durante la inicialización para mejorar la velocidad de acceso del programa a los datos y reducir el consumo de energía del sistema.

Bucle del programa principal: La mayoría de microcontroladores se ejecutan de forma continua durante un tiempo prolongado, por lo que su programa principal está diseñado básicamente en un bucle. Para aplicaciones con múltiples modos de trabajo, puede haber múltiples cuerpos de bucle, que se convierten mediante indicadores de estado. Para el cuerpo principal del programa, se suelen organizar los siguientes módulos:

Proceso de cálculo: El proceso de cálculo suele llevar mucho tiempo, por lo que nos oponemos firmemente a cualquier interrupción, especialmente a la multiplicación y división.

Programa de transmisión: utilizado principalmente para aplicaciones con controladores LED y LCD externos.

Manejador de interrupciones: el manejador de interrupciones se utiliza principalmente para manejar tareas y eventos con altos requisitos en tiempo real, como detección de señales de ráfaga externa, detección y procesamiento de botones, conteo de tiempos, escaneo de pantallas LED, etc.

En general, las rutinas de interrupción deben mantener su código lo más simple posible. Para la no ejecución que requiere procesamiento en tiempo real, puede establecer un indicador de activación en la interrupción y luego el programa principal ejecutará la transacción específica. Esto es muy importante, especialmente para MCU de baja potencia y baja velocidad, todas las interrupciones. debe ser respondido de manera oportuna.

Diferentes MCU #039 tienen diferentes métodos de procesamiento para la disposición de diferentes cuerpos de tareas.

Por ejemplo, para la aplicación de MCU de baja velocidad y bajo consumo, considerando que estos proyectos son dispositivos portátiles y pantallas LCD comunes, la respuesta a botones y pantallas requiere un alto rendimiento en tiempo real. Por lo tanto, las interrupciones temporizadas se utilizan generalmente para manejar acciones de pulsación de teclas y visualización de datos. Para MCU de alta velocidad, como aplicaciones FOSC de 1 MHz, dado que la MCU tiene tiempo suficiente para ejecutar el bucle del programa principal en este momento, varios indicadores de activación solo se pueden configurar en las interrupciones correspondientes y todas las tareas se pueden ejecutar en el ciclo principal. programa.

En la programación de microcontroladores, se debe prestar especial atención a evitar que las interrupciones y el cuerpo principal del programa accedan o configuren la misma variable o datos al mismo tiempo. Un método de prevención eficaz es organizar el procesamiento de este tipo de datos en un módulo y determinar si se deben realizar operaciones relacionadas con los datos juzgando el indicador de activación en otros programas y establecer el indicador de activación solo donde los datos deben procesarse; -Esto asegura que la ejecución de los datos sea predecible y única.

Haz clic para probar Heart of the King 2.