Estoy tratando de especificar un microcontrolador para una tarea muy simple. Todo lo que hace es mostrar una imagen al arrancar (que probablemente será en blanco y negro).
La pantalla en sí es de 240*240 y una profundidad de color de 12 bits, lo que significa que tendría una memoria total de (240*240*12)/(8*1024)=84KB. Esto me parece bastante alto. ¿No debería estar calculando para el peor de los casos? ¿Aquí entran en juego ciertas técnicas de compresión?
Tendré que dejar algo de espacio libre para un gestor de arranque, etc., que creo que también ocuparía bastante espacio.
¿En qué parte del micro se almacenará esta imagen antes de enviarla a través de SPI a la pantalla LCD?
EDITAR:
En el peor de los casos, podría ser una imagen en blanco y negro sin escala de grises. Lo que alivia un poco el problema.
Pero cualquier cosa con color, ¿hay algún material de lectura para ver aproximadamente cuánta memoria necesito para mi pantalla?
Previamente estaba pensando en animaciones con múltiples imágenes, pero con mis limitaciones de costos, la memoria parece ser una prima, por lo que esto está fuera de discusión.
Por último, en general, ¿es más barato encontrar un micro del tamaño adecuado o un micro realmente barato con memoria externa (EEPROM?)
Permítame ser precipitado y predecir que en realidad está tratando de usar un ST7789. controlador/LCD basado (ya que Ebay está repleto de pantallas LCD baratas de 240*240 basadas en este controlador).
Si esto es cierto, lo primero que debe comprender es que el controlador LCD tiene un búfer de tramas RAM para almacenar la imagen, por lo que es posible que no tenga que suministrar tanta RAM/EEProm para el almacenamiento de imágenes como podría pensar. Las hojas de datos del ST7789 están aquí en Crystalfontz.
Si se trata de fotos y similares, deberá poder almacenar las imágenes comprimidas o sin comprimir. Si los almacena comprimidos para ahorrar almacenamiento, necesita al menos un búfer parcial en el que descomprimirlos antes de enviarlos a la pantalla. La compresión previa a la resolución de la pantalla reducirá significativamente el almacenamiento requerido, pero debe definir tanto la resolución como la compresión (imagen/línea por línea) que desea usar.
Si está tratando con imágenes basadas en sprites (para animación) o alfanuméricos, solo necesita almacenamiento para el contenido base y puede volver a dibujar, mover y rotar en su pantalla.
Si está tratando con patrones que se crean mediante programación, casi no necesita memoria de almacenamiento y solo un búfer parcial para escribir en la pantalla.
Si su MCU está conectado a la red, puede ser posible enviar solo búferes parciales sin comprimir a la MCU y transferirlos inmediatamente a la pantalla. por ejemplo, un flujo UDP --> búfer --> visualización. Esto puede funcionar muy bien para conectividad IP adulta a 100 Mbps en una MCU decente.
Si desea ver los efectos de la compresión con pérdida en las imágenes que tiene, puede usar un servicio en línea como OptimiZilla para mostrar los efectos en el tamaño de almacenamiento. Por ejemplo, una imagen JPEG típica de 240*240 podría comprimirse de 26 kb (típico de la web) a solo 2,1 kb y seguir siendo bastante viable.
Su enfoque es correcto si desea que sea lo más genérico posible. Si no sabe nada sobre la imagen que alguien quiere cargar, debe asumir el peor de los casos. La compresión de imágenes tampoco puede salvarte, porque es teóricamente imposible comprimir todas las imágenes.
Para todo lo demás hay que poner límites. Por ejemplo, puede decidir que está bien con una imagen gris, en cuyo caso solo necesita 4 bits por píxel. Puede decidir permitir solo imágenes JPEG grandes de 16 kiB con un conjunto fijo de parámetros admitidos. JPEG no es tan pesado y fue diseñado para ser relativamente fácil de implementar con microcontroladores. Existen buenas herramientas externas que pueden reducir las imágenes a un tamaño de archivo determinado. Para una menor compresión y complejidad, elija un formato diferente, tal vez GIF o PNG. Por supuesto, esto requiere más espacio para la descompresión.
Por otra parte, la memoria flash I²C y SPI es barata y pequeña.
chris stratton
chris stratton
Hasman404
chris stratton
Cruce
chris stratton
Cruce