Tabla de contenido:

Ejemplo de programación MTP Arduino: 5 pasos
Ejemplo de programación MTP Arduino: 5 pasos

Video: Ejemplo de programación MTP Arduino: 5 pasos

Video: Ejemplo de programación MTP Arduino: 5 pasos
Video: Arduino desde cero el original , sensor táctil 2024, Mes de julio
Anonim
Ejemplo de programación MTP Arduino
Ejemplo de programación MTP Arduino

En este Instructable, mostramos cómo usar el esquema de programación SLG46824 / 6 Arduino para programar un dispositivo Dialog SLG46824 / 6 GreenPAK ™ Programable en Múltiples Tiempos (MTP).

La mayoría de los dispositivos GreenPAK son programables por única vez (OTP), lo que significa que una vez que se escribe su banco de memoria no volátil (NVM), no se puede sobrescribir. Los GreenPAK con la función MTP, como SLG46824 y SLG46826, tienen un tipo diferente de banco de memoria NVM que se puede programar más de una vez.

Hemos escrito un boceto de Arduino que permite al usuario programar un MTP GreenPAK con unos simples comandos de monitor en serie. En este Instructable usamos un SLG46826 como nuestro GreenPAK con MTP.

Proporcionamos código de muestra para Arduino Uno utilizando una plataforma de código abierto basada en C / C ++. Los diseñadores deben extrapolar las técnicas utilizadas en el código Arduino para su plataforma específica.

Para obtener información específica sobre las especificaciones de la señal I2C, el direccionamiento I2C y los espacios de memoria, consulte la Guía de programación en el sistema GreenPAK que se proporciona en la página del producto SLG46826. Este Instructable proporciona una implementación simple de esta guía de programación.

A continuación, describimos los pasos necesarios para comprender cómo se ha programado el chip GreenPAK. Sin embargo, si solo desea obtener el resultado de la programación, descargue el software GreenPAK para ver el archivo de diseño GreenPAK ya completado. Conecte el kit de desarrollo GreenPAK a su computadora y presione el programa para crear el IC personalizado.

Paso 1: Conexiones Arduino-GreenPAK

Conexiones Arduino-GreenPAK
Conexiones Arduino-GreenPAK
Conexiones Arduino-GreenPAK
Conexiones Arduino-GreenPAK

Para programar el NVM de nuestro SLG46826 GreenPAK con nuestro boceto de Arduino, primero necesitaremos conectar cuatro pines de Arduino Uno a nuestro GreenPAK. Puede conectar estos pines directamente al adaptador de enchufe GreenPAK oa una placa de conexión con el GreenPAK soldado.

Tenga en cuenta que las resistencias pull up I2C externas no se muestran en la Figura 1. Conecte una resistencia pull up de 4.7 kΩ de SCL y SDA a la salida de 3.3 V del Arduino.

Paso 2: Exportación de datos GreenPAK NVM desde un archivo de diseño GreenPAK

Exportación de datos GreenPAK NVM desde un archivo de diseño GreenPAK
Exportación de datos GreenPAK NVM desde un archivo de diseño GreenPAK
Exportación de datos de GreenPAK NVM desde un archivo de diseño de GreenPAK
Exportación de datos de GreenPAK NVM desde un archivo de diseño de GreenPAK
Exportación de datos GreenPAK NVM desde un archivo de diseño GreenPAK
Exportación de datos GreenPAK NVM desde un archivo de diseño GreenPAK

Crearemos un diseño GreenPAK muy simple para ilustrar cómo exportar los datos NVM. El siguiente diseño es un cambiador de nivel simple donde los pines azules de la izquierda están atados a VDD (3.3v), mientras que los pines amarillos de la derecha están atados a VDD2 (1.8v).

Para exportar la información de este diseño, debe seleccionar Archivo → Exportar → Exportar NVM, como se muestra en la Figura 3.

A continuación, deberá seleccionar Intel HEX Files (*.hex) como tipo de archivo y guardarlo.

Ahora, deberá abrir el archivo.hex con un editor de texto (como Notepad ++). Para obtener más información sobre el formato y la sintaxis del archivo HEX de Intel, consulte su página de Wikipedia. Para esta aplicación, solo nos interesa la parte de datos del archivo, como se muestra en la Figura 5.

Resalte y copie los 256 bytes de datos de configuración de NVM ubicados dentro del archivo HEX. Cada línea que estamos copiando tiene 32 caracteres, lo que corresponde a 16 bytes.

Pegue la información en la sección nvmString resaltada del boceto de Arduino como se muestra en la Figura 6. Si está utilizando un microcontrolador que no sea Arduino, puede escribir una función para analizar los nvmData guardados en el archivo GreenPAK. GP6. (Si abre un archivo GreenPAK con un editor de texto, verá que almacenamos la información del proyecto en un formato XML de fácil acceso).

Para configurar los datos de EEPROM para su diseño GreenPAK, seleccione el bloque EEPROM del panel de componentes, abra su panel de propiedades y haga clic en "Establecer datos".

Ahora puede editar cada byte en la EEPROM individualmente con nuestra interfaz GUI.

Una vez que se configuran sus datos EEPROM, puede exportarlos a un archivo HEX utilizando el mismo método descrito anteriormente para exportar los datos NVM. Inserte estos 256 bytes de datos EEPROM en la sección eepromString del boceto de Arduino.

Para cada diseño personalizado, es importante verificar la configuración de protección dentro de la pestaña "Seguridad" de la configuración del proyecto. Esta pestaña configura los bits de protección para los registros de configuración de la matriz, la NVM y la EEPROM. Bajo ciertas configuraciones, cargar la secuencia NVM puede bloquear el SLG46824 / 6 a su configuración actual y eliminar la funcionalidad MTP del chip.

Paso 3: usa el boceto de Arduino

Utilice el boceto de Arduino
Utilice el boceto de Arduino

Sube el boceto a tu Arduino y abre el monitor en serie con una velocidad de 115200 baudios. Ahora puede usar las indicaciones del MENÚ del boceto para ejecutar varios comandos:

● Leer: lee los datos NVM o EEPROM del dispositivo utilizando la dirección esclava especificada

● Borrar: borra los datos NVM del dispositivo o los datos EEPROM utilizando la dirección esclava especificada

● Escritura: borra y luego escribe los datos NVM o EEPROM del dispositivo utilizando la dirección esclava especificada. Este comando escribe los datos que se guardan en las matrices nvmString o eepromString.

● Ping: devuelve una lista de direcciones esclavas de dispositivos que están conectadas al bus I2C.

Los resultados de estos comandos se imprimirán en la consola del monitor en serie.

Paso 4: Sugerencias de programación y mejores prácticas

A lo largo de la compatibilidad con SLG46824 / 6, hemos documentado algunos consejos de programación para ayudar a evitar los errores comunes asociados con el borrado y la escritura en el espacio de direcciones NVM. Las siguientes subsecciones describen este tema con más detalle.

1. Ejecución de escrituras de página NVM precisas de 16 bytes:

Al escribir datos en el NVM del SLG46824 / 6, hay tres técnicas que se deben evitar:

● Escritura de página con menos de 16 bytes.

● Escritura de página con más de 16 bytes.

● Escrituras de página que no comienzan en el primer registro dentro de una página (IE: 0x10, 0x20, etc.)

Si se utiliza alguna de las técnicas anteriores, la interfaz MTP ignorará la escritura I2C para evitar cargar el NVM con información incorrecta. Recomendamos realizar una lectura I2C del espacio de direcciones NVM después de escribir para verificar la transferencia de datos correcta.

2. Transferencia de datos de NVM a los registros de configuración de Matrix

Cuando se escribe la NVM, los registros de configuración de la matriz no se recargan automáticamente con los datos de la NVM recién escritos. La transferencia debe iniciarse manualmente ciclando el PAK VDD o generando un reinicio suave usando I2C. Al configurar el registro en la dirección 0xC8, el dispositivo vuelve a habilitar la secuencia de reinicio de encendido (POR) y vuelve a cargar los datos del registro desde el NVM en los registros.

3. Restablecimiento de la dirección I2C después de un borrado de NVM:

Cuando se borra el NVM, la dirección de NVM que contiene la dirección esclava I2C se establecerá en 0000. Después del borrado, el chip mantendrá su dirección esclava actual dentro de los registros de configuración hasta que el dispositivo se reinicie como se describe arriba. Una vez que se ha reiniciado el chip, la dirección esclava I2C debe establecerse en la dirección 0xCA dentro de los registros de configuración cada vez que se apaga o reinicia el GreenPAK. Esto debe hacerse hasta que se haya escrito la nueva página de dirección esclava I2C en la NVM.

Paso 5: Discusión de erratas

Discusión de erratas
Discusión de erratas

Al escribir en el "Byte de borrado de página" (Dirección: 0xE3), el SLG46824 / 6 produce un ACK que no cumple con I2C después de la parte "Datos" del comando I2C. Este comportamiento puede interpretarse como un NACK dependiendo de la implementación del maestro I2C.

Para adaptarse a este comportamiento, modificamos el programador Arduino comentando el código que se muestra en la Figura 11. Esta sección de código busca un I2C ACK al final de cada comando I2C en la función eraseChip (). Esta función se utiliza para borrar las páginas NVM y EEPROM. Dado que esta sección de código se encuentra en un bucle For, el "retorno -1;" line hace que la MCU salga prematuramente de la función.

A pesar de la presencia de un NACK, las funciones de borrado de NVM y EEPROM se ejecutarán correctamente. Para obtener una explicación detallada de este comportamiento, consulte "Problema 2: Comportamiento ACK no compatible con I2C para el Byte de borrado de página de la NVM y EEPROM" en el documento de erratas SLG46824 / 6 (Revisión XC) en el sitio web de Dialog.

Conclusión

En este Instructable describimos el proceso de usar el programador Arduino provisto para cargar cadenas NVM y EEPROM personalizadas a un IC GreenPAK. El código en Arduino Sketch se comenta a fondo, pero si tiene alguna pregunta con respecto al boceto, comuníquese con uno de nuestros ingenieros de aplicaciones de campo o publique su pregunta en nuestro foro. Para obtener información más detallada sobre los registros y procedimientos de programación de MTP, consulte la Guía de programación en el sistema de Dialog.

Recomendado: