Accueil Composants Contrôle graphique sans pilote

Contrôle graphique sans pilote

Comment configurer un contrôleur virtuel pour réduire les coûts et le temps CPU lors du rendu des graphiques

L'un des moyens les plus courants de créer des applications avec des graphiques intégrés consiste à ajouter un contrôleur graphique interne ou externe. Le problème est que cela augmente les coûts, peut rendre les mises en page inutilement complexes et, dans la plupart des cas, pour une interface graphique simple, ces pilotes ne sont pas nécessaires.

Une alternative consiste à utiliser les périphériques du microcontrôleur pour obtenir un contrôleur graphique virtuel qui rend les graphiques sans nécessiter une grande quantité de temps CPU, qui peut en fait être inférieur à 5 %.

En général, un système graphique sans contrôleur doit envoyer une trame d'informations de pixels à une vitre d'affichage à une certaine vitesse. Ce taux de rafraîchissement est généralement de 60 Hz. Pour ce faire, le système doit constamment envoyer des données raster à l'écran LCD. Dès le départ, il semble que cette tâche va nécessiter la majeure partie du temps CPU sur un microcontrôleur. Cependant, ce n'est pas le cas des microcontrôleurs tels que la famille PIC32 de Microchip, qui intègrent un périphérique d'accès direct à la mémoire (DMA) pour le transfert de données. Avec un DMA qui transfère les données de pixel, il faut moins de 5% du temps CPU pour obtenir un contrôleur graphique virtuel.

Le périphérique DMA peut transférer des données d'un point à un autre sans l'intervention du CPU. Dans une méthode graphique sans contrôleur, le DMA peut être configuré pour transférer une ligne de données de trame via le port maître parallèle (PMP). Chaque ligne est composée de plusieurs points. DMA enverrait une partie du tampon de trame pendant un transfert. Une demande d'interruption PMP ou de synchronisation déclenche alors le prochain transfert DMA jusqu'à ce qu'une ligne ait été transférée. Dans les appareils avec des interruptions non persistantes, une minuterie peut être utilisée comme source de déclenchement DMA.

Pour les appareils avec une interface de bus externe (EBI), ce module peut être utilisé comme source d'horloge pixel. Une telle source d'horloge peut atteindre des fréquences d'horloge de pixel plus élevées que le périphérique PMP, même si l'EBI partage les mêmes broches que le PMP.

Pendant les transferts de données, le PMP ou l'EBI émet un signal de lecture ou d'écriture après chaque transfert de pixel. Les signaux de lecture et d'écriture agissent comme une horloge pixel pour le cristal d'affichage. Après le transfert de chaque ligne de données de pixels, DMA interrompt le processeur et certains signaux de synchronisation, tels que HSYNC, VSYNC et DEN (ligne d'activation des données), qui sont nécessaires pour mettre à jour les écrans LCD. Ceci est constamment répété jusqu'à ce qu'un tracé complet ait été dessiné. Le raster est stocké dans une mémoire volatile, l'image peut donc être dynamique.

La mémoire SRAM est utilisée dans cet agencement et la configuration est la base d'un système graphique sans contrôleur. Le système peut être configuré pour utiliser une mémoire SRAM interne ou externe, comme illustré dans les figures 1 et 2.

Écrans LCD TFT 

Bien que la méthode graphique sans contrôleur ait été conçue pour fonctionner avec des écrans LCD TFT, elle peut également fonctionner avec des cristaux CSTN ou MSTN avec des modifications mineures.

Les lignes de données sont constituées d'informations sur la couleur du pixel. Les écrans LCD ont généralement de 8 à 24 lignes de données de couleur, selon la profondeur de couleur de l'écran LCD. Ces lignes de données alimentent l'écran LCD avec les données de couleur brutes pour chaque pixel.

Les signaux d'horloge HSYNC, VSYNC, DEN et PCLK synchronisent les données graphiques pixel et raster et l'écran LCD. Les lignes de synchronisation indiquent à l'écran LCD si les données se trouvent au début ou à la fin d'une ligne (HSYNC) ou d'une trame (VSYNC). Le DEN permet à l'écran LCD de savoir quand des données de pixels valides sont envoyées à l'écran LCD et à certains écrans LCD TFT en raison du temps nécessaire pour configurer l'écran LCD pour les emplacements de pixels suivants.

Les données sont envoyées ligne par ligne jusqu'à ce que le tracé soit complètement dessiné. Le signal PCLK est la source d'horloge pour l'ensemble du système. Une impulsion d'horloge PCLK met à jour le LCD.

Les lignes d'horloge restantes doivent être synchronisées avec l'horloge pixel pour une sortie d'image correcte. Les écrans LCD qui ne contiennent pas de signaux HSYNC et VSYNC peuvent également être utilisés avec la configuration graphique sans pilote.

La carte fille graphique PICtail Plus (carte graphique LCC) sans contrôleur à faible coût de Microchip a été conçue pour démontrer cette technique et fonctionne avec de nombreux kits de démarrage PIC32 existants. Le pilote logiciel LCC peut aider à la synchronisation requise par certains paramètres temporels, tels que la largeur d'impulsion, l'avance et la traînée de l'impulsion en impulsions horizontales et verticales. Une fois ces valeurs compilées dans le contrôleur graphique LCC, le LCD affiche le raster.

La figure 3 montre ce qui se passe à l'intérieur du microcontrôleur PIC32 lorsqu'une trame graphique est envoyée à l'écran. Le bloc DMA et PMP indique que les périphériques DMA et PMP qui partagent le bus de données avec le CPU sont opérationnels.

Le bloc CPU indique les tâches nécessaires au rendu des graphiques. La routine de service d'interruption DMA (ISR) est le seul code qui doit être écrit en plus de la configuration périphérique DMA et PMP pour envoyer une trame graphique à l'affichage.

Rendu de nouveaux pixels

Le rendu des nouveaux pixels dans le frame buffer est tout aussi important que la mise à jour de l'écran. Ceci est fait par le CPU, qui écrit dans le tampon d'affichage. Si la trame est stockée en externe, le transfert DMA est suspendu pendant la mise à jour de la trame. Ceci est nécessaire car il n'y a qu'un seul périphérique PMP et il est partagé par le contrôleur graphique virtuel ou le transfert DMA. Cette méthode affecte le taux de rafraîchissement de l'écran. Le nombre de mises à jour de pixels doit être surveillé pour éviter un changement trop long du taux de mise à jour ; sinon le changement sera perceptible par l'œil humain. Cela se fait à l'aide d'un compteur de pixels variable inclus dans le contrôleur graphique virtuel qui est mis à jour à chaque écriture de pixel et effacé à chaque interruption DMA.

Le périphérique EBI permet de réduire considérablement le temps de suspension nécessaire par mise à jour de trame. Lorsque l'EBI est utilisé pour l'écriture, moins de données sont nécessaires pour stocker et restaurer puisque les registres PMP ne sont pas partagés entre les lectures et les écritures. De plus, le module EBI est un périphérique plus efficace lorsqu'il communique avec une mémoire SRAM externe.

Logiciels

La méthode de mémoire SRAM interne utilise le signal d'écriture PMP pour l'horloge de pixel. Pour ce faire, les rangées de connecteurs un et deux de la carte graphique LCC doivent être configurées. Avec cette configuration, toutes les couleurs sont 8BPP et aucune SRAM externe n'est utilisée. La SRAM intégrée au microcontrôleur écrit en permanence ses valeurs de pixels sur le PMP.

Un format de couleur 8 RVB est utilisé pour la couleur 332BPP, qui a trois valeurs de couleur pour le rouge, trois pour le vert et deux pour le bleu. Il s'agit d'un format de couleur courant car le rouge est une couleur plus facilement détectable par l'œil humain que le bleu.

La méthode SRAM externe utilise un signal de lecture du PMP pour l'horloge de pixel. Les rangées deux et trois de la carte graphique LCC doivent être configurées. Dans cet agencement, toutes les couleurs sont en 16BPP et la SRAM externe contient la trame graphique qui est lue en continu. Pour une couleur 16BPP, un format 565 RVB est utilisé avec cinq valeurs de couleur pour le rouge, six pour le vert et cinq pour le bleu.

Dans les deux méthodes, lorsqu'il est connecté à un écran LCD avec plus de 16 lignes de couleur, les lignes de couleur inutilisées correspondent aux bits les plus significatifs du dernier bit de couleur utilisé. Cela garantit qu'une gamme complète de couleurs du blanc au noir peut être obtenue.

Conclusion

Cet article a montré comment implémenter un système graphique sans contrôleur à faible coût avec des périphériques de microcontrôleur pour créer un contrôleur graphique virtuel en utilisant seulement une petite quantité de temps CPU.



Mots clés
pilote graphique