This commit is contained in:
parent
5ea7af48e8
commit
7b617fddc7
@ -11,7 +11,7 @@ aliases:
|
||||
- waveshare
|
||||
---
|
||||
|
||||
En terme d'écran à encre électronique (e-ink), Waveshare est un rare constructeur permettant d'acheter des écrans de toute taille.
|
||||
En termes d'écrans à encre électronique (e-ink), Waveshare est un des rares constructeurs permettant d'acheter des écrans de toute taille.
|
||||
Annoncés compatibles ESP32, Arduino et Raspberry Pi, ils sont en fait compatibles avec n'importe quelle carte de développement exposant le protocole SPI.
|
||||
|
||||
Les Raspberry Pi était devenues difficiles à trouver ces derniers mois, nous allons voir dans cet article comment utiliser une autre carte sous Linux pour utiliser un écran Waveshare.
|
||||
@ -31,10 +31,10 @@ Pour communiquer, le protocole utilise 3 fils + 1 fil par périphérique :
|
||||
|
||||
Plusieurs périphériques peuvent partager le bus SPI, les 3 fils décrits ci-dessus.
|
||||
Pour savoir à qui sont destinées les informations, il y a donc un fil supplémentaire pour chaque périphérique.
|
||||
Avec 3 périphériques sur le bus SPI, on aura donc 6 fils : les 3 fils du bus, partagés, et 1 fil par périphérique, non-partagés.
|
||||
Avec 3 périphériques sur le bus SPI, on aura donc 6 fils : les 3 fils du bus, partagés, et 1 fil par périphérique, non-partagé.
|
||||
|
||||
Ce fil supplémentaire, nommé `CS` pour Chip Select (ou `SS`), est alimenté lorsque la machine souhaite parler au périphérique désigné.
|
||||
1 seul périphérique est actif à la fois pour éviter les collisions sur le bus (imaginer deux périphériques envoyer deux messages distinct en même temps ... sur le même fil).
|
||||
1 seul périphérique est actif à la fois pour éviter les collisions sur le bus (imaginer deux périphériques envoyer deux messages distincts en même temps ... sur le même fil).
|
||||
Un périphérique ne parle et n'écoute que lorsque son `CS` est à l'état bas (à 0).
|
||||
|
||||
Lorsqu'un périphérique envoie ou reçoit des données, il se synchronise sur la fréquence d'horloge transmise par la machine sur le fil `SCLK`.
|
||||
@ -52,16 +52,16 @@ En plus de l'alimentation électrique (+3.3 V et la masse) et des fils utilisés
|
||||
|
||||
- `DC` : à 0 lorsque l'on enverra des commandes sur le bus SPI. À 1 lorsque ce sera des données qui y seront envoyées.
|
||||
- `RST` : lorsque ce fil est à 0, cela provoque le redémarrage de l'écran, la réinitialisation de tous ses registres. On le replace à 1 pour commencer à l'utiliser.
|
||||
- `BUSY` : la puce controlant l'écran utilise ce fil pour indiquer si l'écran ou le contrôleur est occupé, en train de réaliser une action (lorsqu'il est à 0) ou s'il est prêt à recevoir des informations (il est alors à 1) .
|
||||
- `BUSY` : la puce contrôlant l'écran utilise ce fil pour indiquer si l'écran ou le contrôleur est occupé, en train de réaliser une action (lorsqu'il est à 0) ou s'il est prêt à recevoir des informations (il est alors à 1) .
|
||||
|
||||
Ces spécifications étant bien établie, rien ne nous limite aux seules Raspberry Pi !
|
||||
Ces spécifications étant bien établies, rien ne nous limite aux seules Raspberry Pi !
|
||||
|
||||
|
||||
## Reconnaître une carte compatible
|
||||
|
||||
Pour être utilisée avec l'écran, la carte doit exposer un bus SPI sur ses GPIO, et vous devez disposer de 3 emplacements génériques disponibles en plus du 3,3 V et de la masse.
|
||||
|
||||
Toutes les cartes, récentes et anciennes, exposant ces interfaces.
|
||||
Toutes les cartes, récentes et anciennes, exposent ces interfaces.
|
||||
|
||||
Voici par exemple [la correspondance des broches de la Pine64](https://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdf) :
|
||||
|
||||
@ -72,7 +72,7 @@ Et [ceux de la Cubieboard](http://docs.cubieboard.org/cubieboard1_and_cubieboard
|
||||

|
||||
|
||||
Certaines cartes exposent des GPIO identiques à ceux de la Raspberry Pi, vous pourrez donc placer le HAT fourni directement dessus.
|
||||
Lorsque l'organisation des broches est différente, il faudra câble manuellement.
|
||||
Lorsque l'organisation des broches est différente, il faudra câbler manuellement.
|
||||
|
||||
Pour ma part, j'ai utilisé une carte MIPS Creator CI 20 :
|
||||
|
||||
@ -90,7 +90,7 @@ Nous n'avons pas les mêmes utilitaires simplifiés, nous allons donc voir comme
|
||||
|
||||
### Activer le SPI
|
||||
|
||||
Habituellement, on charge un module noyau pour Communiquer avec un appareil relié en SPI.
|
||||
Habituellement, on charge un module noyau pour communiquer avec un appareil relié en SPI.
|
||||
Ce module créera alors une couche d'abstraction et exposera l'abstraction dans le dossier `/dev`.
|
||||
|
||||
Ici, nous n'avons pas de module noyau dédié à l'écran, en fait le programme que l'on va lancer, la démo de Waveshare, communique directement en SPI.
|
||||
@ -234,7 +234,7 @@ spi_gpio {
|
||||
On applique l'overlay au démarrage, comme vu précédemment.
|
||||
|
||||
Dans les deux cas, il est aussi possible de faire les modifications directement dans le fichier DTS original et de remplacer le DTB utiliser pour démarrer la carte.
|
||||
Il faudra alors aille à refaire cela à chaque mise à jour du noyau.
|
||||
Il faudra alors veiller à refaire cela à chaque mise à jour du noyau.
|
||||
|
||||
|
||||
## Configuration des GPIO dédiés
|
||||
@ -260,7 +260,7 @@ echo out > /sys/class/gpio/gpio136/direction
|
||||
|
||||
## Adapter le code de la démo
|
||||
|
||||
La démo de Waveshare s'attend à être exécutée sur un Raspberry Pi et on retrouve donc un certain nombre d'éléments écrit en dur.
|
||||
La démo de Waveshare s'attend à être exécutée sur un Raspberry Pi et on retrouve donc un certain nombre d'éléments écrits en dur.
|
||||
De plus, elle fait usage d'une dépendance Python qui ne fonctionne pas en dehors de cette plateforme.
|
||||
|
||||
Voici [l'implémentation](https://git.nemunai.re/nemunaire/waveshareteam-e-Paper/commit/dfa74b004198794d01bdc461ea88d1cf9cdb80b5) que j'ai effectué afin d'adapter le code à mon usage :
|
||||
|
Loading…
x
Reference in New Issue
Block a user