PIEZAS: 4 × 4 RGB Boton Pad Controller SPI

December 8, 2022 0 By mnylkp

Cubrimos el nuevo controlador de botón RGB de SPIPFUN hace unas semanas. Este es un clon a todo color de la interfaz monome; una cuadrícula de 4 × 4 de los botones con LED tri-color debajo. Cada LED tiene 24bits de control de color, para más de 16 millones de combinaciones de colores. Hasta 10 paneles se pueden encadenar juntos para crear cuadrículas de botones sustanciales, como la tabla de Tetris de Sparkfun. Anteriormente usamos una versión más pequeña en nuestro bloqueo de combinación RGB.

Le pedimos a Sparkfun que nos envíe la versión SPI del controlador del botón para probar. Este es un nuevo producto desarrollado en casa en Sparkfun, con hardware y software de código abierto. Lea sobre nuestra experiencia que se conecte a este tablero a continuación.

4 × 4 RGB Boton Pad Controller SPI (Sparkfun # WIG-09022, $ 39.95)

El controlador de botón de botón es un PCB desnudo, también recibimos una cubierta de botón de botón (SPARTFUN # COM-07835, $ ​​9.95), y dos de cada bisel (Sparkfun # COM-08747, # COM-08746, $ 3.95). La versión SPI con la que estamos trabajando puede ser impulsada directamente por un microcontrolador, o por un ‘maestro’ USB. La versión del controlador USB tiene un microcontrolador adicional y un convertidor de serie USB-> FTDI para conectividad de PC.

Cuando llegó la almohadilla del botón, nos sentamos de inmediato se sentó con la hoja de datos e intentamos conectar la placa con nuestra interfaz serial universal del pirata de autobús. El protocolo descrito en la versión 1 de la hoja de datos no funcionó, en absoluto.

SPARKFUN ABRIR SOURTED Este proyecto, por lo que determinamos el protocolo de interfaz correcto del código fuente para el botón PAD SPI (ZIP) y el controlador USB del botón del botón (ZIP). Discutimos la mayor parte del protocolo de la fuente, pero aún así tomó la ayuda de los ingenieros de Sparkfun para descubrir algunos de los puntos más internocumentados y más finos de interfaz de la Junta. La versión 2 de la hoja de datos (PDF) representa con precisión el protocolo de la interfaz.

Conexiones

Pirata de autobús
Teclado de botones

MISO
MISO

Mosi
Mosi

Reloj
Sck

Cs
Cs

+ 5Volts
Vcc

Gnd
Gnd

Las señales SPI de la almohadilla del botón se describen a medida que se relacionan con el microcontrolador a bordo, que está opuesto a la notación habitual. La señal MOSI (MASTER OUT, SLAVE IN) es en realidad la salida de datos de la Junta, y Miso (Master in, Slave Out) es la entrada de datos.

Probamos la almohadilla del botón con el pirata de bus, pero los mismos principios básicos se aplican a cualquier código de microcontrolador personalizado. La placa se extiende a 5 Volts, por lo que lo alimentamos de la fuente de alimentación de 5Volt a bordo del pirata del autobús. La interfaz SPI funciona a los niveles lógicos de 5 Volt, por lo que conectamos las resistencias de pull-Up del pirata del bus a la fuente de alimentación de 5VOLT y les permitieron todas las líneas de señal.

Interfacificamos la placa del botón con la biblioteca RAW3Wire de Pirate del autobús. RAW3WIRE es una biblioteca SPI de software con operaciones en bits. La biblioteca SPI de hardware solo permite las operaciones de byte completo que no son lo suficientemente granulares como para interactuar la placa. Ponemos el pirata de bus en modo RAW3Wire (opción de menú M) y eligió la opción PIN de HIZ porque las resistencias de pull-up mantendrán el autobús a 5 Volts.

RAW3WIRE> L <-CONFIGURE PEDIDO DE BIT 1. MSB primero 2. LSB primero Modo> 2 <-least Bit significativo primero LSB Set: Menor Sig Bit primero RAW3WIRE> W <-Enable fuente de alimentación Suministros de voltaje en RAW3WIRE>

El botón de botón comunica un poco menos significativo, por lo que también configuramos la biblioteca para comunicar primero a LSB. Finalmente, golpeamos la capital ‘W’ para habilitar las fuentes de alimentación del pirata del autobús. La placa de los botones parpadeará cada color momentáneamente como parte de su autoprueba de encendido.

Configuración de la placa de botón simple / múltiple

Cada Junta debe configurarse para uso individual o de placa MULTI. Los tableros vienen previamente programados para la operación de una sola placa, pero puede ser una buena idea establecer la configuración de todos modos. La configuración de la Junta se almacena permanentemente en EEPROM, por lo que solo tiene que hacerse una vez.

RAW3WIRE> [\ _ <-Take todas las señales bajas CS habilitado <-CS habilitado es 0Volts Reloj, 0 Salida de datos, 0 RAW3WIRE>

Una secuencia especial coloca la placa en modo de configuración. Comience con todas las líneas de señal bajas (] \ _).

RAW3WIRE> – ^ 1 1 <-et Operación de la placa simple Salida de datos, 1 <-data alta 0x01 Reloj Ticks <-One Relk Tick Escribir: 0x01 <-config opción 1, número de tableros Escribir: 0x01 <-set el número de tableros Raw3wire> W <-Small 'W', apagado Suministros de voltaje apagado RAW3WIRE> W <-CAPITAL 'W', PODER EN Suministros de voltaje en RAW3WIRE>

Para ingresar al modo de configuración, tome la línea de datos High (-) y envíe un pulso de reloj (^), pero deje el chip seleccione bajo. La Junta ya está lista para aceptar la configuración de configuración.

El primer byte enviado después de ingresar al modo de configuración, le indica a la junta qué configuración se modifica. Actualmente, solo se puede configurar el número de tableros (0x01). A continuación, envíe el número de tableros conectados, entre 1 y 10. Enviamos 1 porque estamos interconectando una sola tabla. Restablecer la placa y encenderá un LED correspondiente al número programado de tableros.

Establecer colores y leer el estado del botón

Ahora estamos listos para enviar datos de color a la placa y leer el estado del botón. Primero, tenga en cuenta que la señal CS (SELECT SELECT) de CS es opuesta a las convenciones normales. Por lo general, CS activa un chip cuando la señal es low (0Volts), e inválida cuando la señal es alta (5Volts); Esto generalmente se denota por / CS, #CS, OR! CS. En su lugar, el controlador del botón está activo cuando CS es alto.

Una transacción de 64byte establece los colores LED y recupera el estado del botón. El primer programa de 16 buzos del nivel rojo para cada LED, seguido de 16bytes de verde, y 16Bytes de azul. Termine leyendo 16bytes de la Junta para obtener el estado de cada botón. Los datos de los botones se envían como 0x00 si se presionan, y 0xFF si no se presiona. La hoja de datos recomienda un retraso 400US entre escribir los marcos de color y leer los datos del botón, pero el pirata de bus es lo suficientemente lento de que no nos preocupe.

El protocolo es lo suficientemente simple, pero hay una captura importante. La línea de reloj debe ser alta antes de recaudar CS, o el Bytestream estará apagado por 1 bit. Por esta razón, muchos módulos SPI de hardware no funcionarán con la Junta. Esto no es un problema si su microcontrolador le permite a Twiddle Pins controlado por un módulo de hardware, pero los micros con los que hemos trabajado no permiten esto.

RAW3WIRE> /] 255: 16 255: 16 255: 16 R: 16 [
Reloj, 1