fbcp-ili9341 : Un pilote écran Raspberry Pi pour atteindre 60 fps

Les cartes Raspberry Pi sont capables d’une foules de choses et en particulier de proposer une bonne émulation de nombreux jeux issus des catalogues de vielles consoles. Problème, leurs rendus sur les écrans exploitant leur bus SPI ne sont pas capables de suivre cette cadence.

Le problème est connu depuis longtemps, pour l’usage d’une Raspberry Pi destinée à afficher des éléments nécessitant beaucoup d’images par seconde, l’emploi du port HDMI de la carte est obligatoire. Passer par le bus SPI signifie baisser drastiquement le nombre d’images que la carte pourra envoyer vers un écran. 

Je devrais presque déjà écrire “signifiait” et parler au passé puisqu’un nouveau pilote baptisé fbcp-ili9341 et développé par un certain Jukka Jylänki permet de bénéficier désormais d’un affichage à 60 images par seconde via le bus SPI. 

Ce nouveau pilote est compatible avec les Raspberry Pi 2, 3 ainsi que le modèle Zero W. Il permet de proposer un bien meilleur rafraîchissement et va probablement être employé massivement par beaucoup de bidouilleurs qui utilisaient jusqu’à aujourd’hui tant bien que mal des solutions HDMI plus encombrantes pour retrouver une bonne vitesse d’affichage.

La vidéo ci dessus propose cote à cote les deux pilotes disponibles pour l’affichage via le bus SPI sur un écran Waveshare 3.5″ en 480 x 320 IPS. Un modèle courant que l’on trouve décliné en de nombreuses copies sur le marché.

2018-10-23 16_27_37-minimachines.net

Un listing d’écrans compatibles est maintenu sur la page Github du projet.

Les écrans employant des chipsets ILI9341, ILI9340 ou HX8357D devraient être compatibles avec ce nouveau pilote. Les deux solutions sont des cartes Raspberry Pi Model 3 B. On découvre dans la vidéo la différence flagrante d’affichage entre les deux solutions. Le pilote fbcp-ili9341 offre une fluidité exemplaire quand le pilote d’origine, fourni par la fondation, propose une image très saccadée.

Quake dans une Game Boy Advance au travers d’une Raspberry Pi

La solution trouvée par Jukka Jylänki n’est pas miraculeuse, elle ne transforme pas les capacités matérielles du bus SPI mais change la méthode dont sont envoyées les données. Au lieu d’envoyer la totalité de l’écran pour un rafraîchissement permanent de la totalité de l’affichage, seuls les pixels qui changent transitent par le Bus SPI.

2018-10-23 16_29_14-minimachines.net

L’écran 3.5″ Waveshare IPS tactile est compatible, il est proposé à 28.99€ sur Amazon

Celui-ci n’est donc plus congestionné puisque, en général, 50% des données ont alors besoin d’être traitées par la petite bande passante du bus. On passe ainsi de 30 à 60 images par seconde qui peuvent être affichées en remplacant simplement le pilote d’origine par le fbcp-ili9341.

Source : Github via Hackaday

5 commentaires sur ce sujet.
  • 23 octobre 2018 - 17 h 40 min

    J’aime ces idées simples,
    qui permettent de faire réellement la différence…
    Car il ne fallait pas seulement trouver la solution,
    mais il fallait aussi la programmer !!!

    Bravo et Merci Jukka Jylänki,
    pour cette superbe participation…

    Répondre
  • 23 octobre 2018 - 17 h 45 min

    Merci pour l’article, intéressant !

    Répondre
  • 23 octobre 2018 - 19 h 38 min

    Mais du coup, potentiellement l’usage du cpu sera plus importante, non?
    J’imagine qu’il faut bien calculer, pour chaque image, la différence avec la précédente.

    Répondre
  • 23 octobre 2018 - 20 h 36 min

    Très fort le développeur. Il est en ligne avec l’idée des Raspberry : le compris pour arriver à un résultat correct.

    Répondre
  • luc
    26 octobre 2018 - 10 h 58 min

    Super ! J’ai justement un écran 3,5 pouces waveshare. Bravo au développeur, il a par ailleurs rédigé un README très exhaustif sur la page github du projet. C’est très appréciable.
    Merci Pierre pour l’info.

    Répondre
  • LAISSER UN COMMENTAIRE

    *

    *