Paso 3: Hardware Hacking estilo LCD
Se tarda sólo siete cables para un LCD de SPI a la Junta de descubrimiento. Las señales son potencia, tierra, reloj SPI, datos SPI, chip seleccionar, comando / datos y reset. Seleccione si sólo hay un dispositivo en el bus SPI y chip select podría ser hardwired para siempre.
Blow es una listas de los pasadores de descubrimiento que se utilizan en mi código fuente.
STM32F100RBT6B microcontrolador
128 Kbytes Flash, RAM de 8 Kbyte
P1 Función de nombre
-------------------------------------------------
Análogo de la PC0 11 en 1 (0 a 3,0 voltios)
Análogo de 12 PC1 en 2
Análogo de la PC2 13 en 3
Analógicas del PC3 14 en 4
PA0 15 usuario botón en descubrimiento
PE5 20 SPI1 SClk para LCD
PA6 21 LCD datos = 1 / Cmd = 0
22 PA7 SPI1 MOSI a LCD (SDA)
PC4 23 LCD Reset
PC5 24 LCD SCE (CS0)
PB0 25 BTN_UP
P2 Función de nombre
-------------------------------------------------
1 PB10 USART3 Tx (puerto de depuración)
PB11 2 USART3 Rx (puerto de depuración)
PB12 3 BTN_LEFT
4 PB13 BTN_CENTER
PB14 5 BTN_RIGHT
PB15 6 BTN_DOWN
P3 Función de nombre
-------------------------------------------------
4 PC8 Blue LED en Discovery (TIM3_CH3 de 100Hz)
5 PC9 verde LED en descubrimiento
24 PB8 RC Servo Motor Out1 (TIM4_CH3 de 50 Hz)
25 PB9 RC Servo Motor Out2 (TIM4_CH4 de 50 Hz)
He tenido dos tipos de LCD conectar a la tarjeta de descubrimiento hasta ahora. Una pantalla proviene de Sparkfun y se llama un Nokia 5110. La segunda pantalla viene de perro ratonero / montaje electrónico. Enlaces para ambos muestran siga:
http://www.Mouser.com/productdetail/Electronic-Assembly/EA-DOGS102B-6/?QS=XoD1gVtqLQulaqATGATNqA%3D%3D
http://www.Sparkfun.com/products/10168
Mi objetivo era encontrar un LCD gráfico realmente barato. El Sparkfun LCD de Nokia es de 84 x 48 píxeles y cuesta $10 dólares. El perro ratonero / EA es de 102 x 64 píxeles y viene en tres sabores - la pantalla EA costo $12,36.
El Sparkfun / Nokia parece viejo cosas sobra. Además, había un montón de comentarios negativos acerca de los problemas con la pantalla LCD / Montaje del tablero. La pantalla del Nokia utiliza una cosa de goma de cebra para el vidrio en el PCB de la interfaz. Lo de cebra parece estar causando problemas. La pantalla EA, por el contrario, es nuevo, tiene más píxeles (aunque utiliza un diseño de memoria goofy), y cuesta más. Pero, para mí, es tan sexy el LCD azul translúcido. Ambos tipos de pantalla son de sólo lectura. No es posible ninguna valoración de la pantalla. Parece alguna restricción utilizando una interfaz SPI para la pantalla LCD. Mi voto va con la pantalla EA aunque cuesta más un poco más.
El código fuente adjunto puede conducir cualquier tipo de pantalla. Hay un #define cerca de la cima en lcd.h que establece de qué manera de construir la fuente. Solo configura correctamente el #define y reconstruir reflash para cambiar entre pantallas.
Conducir un pequeño LCD realmente muestra algunas de la capacidad del micro de brazo.
- La memoria RAM del micro tiene todos los datos de píxeles. Pensar como un búfer de RAM de sombra.
- La tarea de LCD en el sistema operativo encarga de enviar el búfer de RAM de sombra a la pantalla LCD.
- La pantalla entera se reescribe a un ritmo de 10Hz. Podría ser cualquier tipo de realidad. La frecuencia de actualización de hardware básico de LCD del vidrio LCD es de alrededor de 50Hz.
- La tarea de LCD envía una sola página (una página es un byte / 8 píxeles de alto por X bytes / píxeles de largo donde X es el ancho de píxel de la pantalla) a la vez. Por lo tanto, una pantalla de 102 x 64 pixeles tiene ocho páginas donde cada página es 102 bytes de longitud.
- Enviar una página a la vez permite que la ram de sombra a "manipular" antes de ser enviado a la LCD. Por ejemplo, la pantalla puede ser invertida 180 grados en el software si es necesario. Tenga en cuenta, algunas pantallas pueden hacerlo en hardware - pero cada pantalla parece hacer esto de manera diferente. Podría también tirón en blanco y negro a blanco sobre negro utilizando software. Es solo frio para poder inyectar cambios como los píxeles se preparan volar en el puerto SPI. Nota, todas las fotos en este instructible son LCD con la función de inversión de software.
- La tarea de LCD utiliza DMA para transferir los datos a la pantalla LCD. Mientras que la tarea está esperando el DMA para completar llamadas "taskYIELD()" así que otras tareas de prioridad baja pueden trabajar. Esto es enorme, el micro es libre de hacer otras cosas mientras que el canal DMA es escupir datos SPI a toda velocidad. Tenga en cuenta que las tareas de prioridad más alto se preferencia la tarea lcd automáticamente.
- El autobús SPI está funcionando a 3MHz (pantalla de Sparkfun sólo puede manejar 4 MHz). Así, una página 102 bytes obtiene transferida en poco más de 300 microsegundos! La pantalla EA puede manejar mucho mayor reloj SPI. Pero, es - un reloj más alto es más susceptible al ruido.
- Con la transferencia DMA significa que todos 102 bytes (una página) se transfieren sin una sola interrupción del micro de brazo. El Lee DMA el buffer de la RAM y mantiene el SPI Puerto 100% atascado lleno ocupado hasta hace - todo sin poner pegas el micro un poco. Los bytes SPI se embalan tan perfectamente porque todo esto se hace a nivel de hardware. Software nunca sería capaz de hacer buen trabajo.
- Una vez que se realiza una transferencia de la página DMA, la tarea del LCD ajusta el puntero de la DMA a la página siguiente y el proceso se repite hasta que todas las páginas se transfieren.
- La pantalla de EA tiene 8 páginas y lleva poco menos 10ms para transferir. Ver la trama de ámbito más abajo.
- Dada la EA pantalla tiene 6528 pixeles y estamos enviándoles 10 veces por segundo, el ancho de banda SPI a la pantalla se está ejecutando en más de 65kb/seg. Con el mercado haciendo la mayor parte de la obra no hay casi carga en el micro para mantener la pantalla actualizada a este ritmo! Me sopla lejos. Este tipo de transferencia a un LCD ahogar un poco de Pic o Atmel chip. Duplicando el refresco a 20Hz añadir sólo un ligero aumento en la carga de la CPU, por ejemplo.