Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Visualizacion Matriz8x8 por SPI
RESUMEN¶
En este ejemplo se pretende mostrar la visualización dinámica en matrices 8x8 por medio del protocolo SPI. Para esto, la siguiente información de divide en: Matriz de leds, Protocolo SPI, MAX 7219 y Ejemplo Visualización Dinámica.
MATRIZ DE LEDS¶
Una Matriz está compuesta por diodos organizados en forma de matriz, es decir en filas y columnas. Estas según el fabricante pueden estar configuradas con ánodo común o con cátodo común. Si los diodos se unen por el positivo se dice que son de ánodo común; por el contrario si está unidos por el negativo su configuración es con Cátodo común.
Como mostrar una figura o carácter¶
Para encender las columnas de la matriz y realizar alguna figura o carácter se debe usar la técnica de multiplexado por medio de un microcontrolador (por código) ya que es el método que permite encender mayor cantidad de leds con una cantidad de pines razonable, es decir que para una matriz 8x8 se necesitan 16 pines de salida en el microcontrolador, ocho para controlar los datos de las filas y otros ocho para las columnas.
Por ejemplo, en una matriz 8x8 para mostrar un dato en la columna 1 teniendo una matriz de ánodo común, se debe enviar por el pin de salida del microcontrolador al que está conectada dicha columna un 0 y un 1 a las demás columnas, luego se procede a enviar el dato que se quiera mostrar por cada fila, teniendo en cuenta que 0 es apagado y 1 es encendido. Lo anterior describe la visualización de un dato por una sola columna; si se desea visualizar un carácter en toda la matriz el procedimiento es realizar la acción anteriormente descrita con la columna 1, pero después, esta misma columna debe ponerse en 0, colocar un retardo pequeño (se recomienda usar 0.5 ms) y enviar un 1 a la columna 2 -teniendo en cuenta que las demás columnas no utilizadas deben ser 0 también- y enviar el dato por cada fila para esta columna; esta acción se realizara sucesivamente con cada columna hasta llegar a la última, es decir la octava columna, y reiniciar todo el procedimiento anterior desde la columna 1. En este punto, el lector deberá usar sus conocimientos de programación para realizar esta secuencia de manera práctica y eficiente.
PROTOCOLO SPI¶
El Protocolo SPI (Serial Peripherical Interface) o en español Interfaz Periferica Serial es un protocolo síncrono que trabaja de modo full dúplex para recibir y transmitir información, permitiendo que los dos dispositivos pueden comunicarse entre sí al mismo tiempo utilizando canales diferentes o líneas diferentes en el mismo cable. Al ser un protocolo síncrono el sistema cuenta con una línea adicional a la de datos encargada de llevar el proceso de sincronismo.
Dentro de este protocolo se define un maestro que será aquel dispositivo encargado de transmitir información a sus esclavos. Los esclavos serán aquellos dispositivos que se encarguen de recibir y enviar información al maestro. Existen cuatro líneas lógicas encargadas de realizar todo el proceso:
• MOSI (Master Out Slave In):. Línea utilizada para llevar los bits que provienen del maestro hacia el esclavo. • MISO (Master In Slave Out):. Línea utilizada para llevar los bits que provienen del esclavo hacia el maestro. • CLK (Clock):. Línea proviniente del maestro encarga de enviar la señal de reloj para sincronizar los dispositivos. • SS (Slave Select):. Línea encargada de seleccionar y a su vez, habilitar un esclavo.
MAX7219¶
El MAX7219 es un chip capaz de controlar por SPI hasta 64 diodos LED independientes. Este incorpora un decoder BCD code-B, realiza multiplexado y una memoria RAM interna de 8x8 para almacenar el valor de cada dígito. Posee cinco pines, dos de alimentación (VCC y GND) y tres del SPI: MOSI (DIN), CS (Chip Select) y CLK (Clock). Aquí cabe mencionar que en este chip no se encuentra una línea lógica MISO ya que lo único que se necesita en la matriz 8x8 es mostrar datos, es decir que el Maestro envíe los datos al esclavo y no lo contrario.
EJEMPLO VISUALIZACIÓN DINÁMICA¶
Para la visualización dinámica en la matriz 8x8 se realizo una secuencia numérica descendiente desde 9 hasta 0. Para realizarla por el protocolo SPI se tuvo que realizar la configuración del SPI en la plataforma de desarrollo de código de mbed
CONFIGURACION MAX7231 EN MBED¶
Clase SPI¶
La librería mbed posee una clase llamada SPI. Para crear una variable de este tipo se debe seguir una de las siguientes dos sintaxis: Por software: SPI nombre_variable(Pin_MOSI, Pin_MISO, Pin_Clock, Pin ChipSelect) Por hardware: SPI nombre_variable(Pin_MOSI, Pin_MISO, Pin_Clock) DigitalOut nombre_variableCS(Pin_ChipSelect)
Para hallar los pines correspondientes al SPI se debe ver la descripción del Nucleo- F446RE disponible en mbed en donde se muestran cuatro imágenes de todos lo pines del Nucleo.
Como se puede observar, existen 3 canales de SPI (SPI1, SPI2 y SPI3) con sus respectivos pines (MOSI, MISO, CLK, CS). Para este ejemplo se usaron los pines correspondientes al SPI2 PB_15, PB_14, PC_7 y PB_9 respectivamente. La conexion se muestra a continuación:
Para acceder a las configuraciones de la matriz o interactuar con los datos de las columnas se deben reconocer los bits correspondientes para cada función, esta informacion se detalla en el datasheet del MAX7219 (https://www.sparkfun.com/datasheets/Components/General/COM-09622-MAX7219-MAX7221.pdf). A partir de esto se observa que los primeros 4 son de condición no importa "x", los siguientes ocho bits describen la dirección, en la cual se encuentra el acceso a columnas y a configuraciones de la matriz; los últimos ocho bits hacen referencia a los datos pertenecientes a la dirección seleccionada. En la siguiente imagen se puede observar una tabla con las direcciones de registro: