Started describing the specifics of the protocol

This commit is contained in:
2025-03-14 15:10:52 +01:00
parent 1e72f91e77
commit 23188688f2

69
Doc.md
View File

@@ -174,3 +174,72 @@ On pourrait en voyant ca se dire que c'est un poil plus compliqué que nécessai
C'était l'algo prévu à la base, le problème vient du fait que comme notre liaison UART est notre principal goulot d'étranglement, on veut absolument utiliser les interfaces de la manière la plus efficace possible. Donc si notre master ou les cartes proches du master peuvent utiliser le plus possible chaque entrée de manière parfaitement équilibrée cela permet de garder une transmission de données plus élevée. (Exemple, si une sortie UART permet la transmission de 1mbit/s, alors si on parvient à utiliser celle du haut et de droite de manière parfaitement équivalentes, alors on peut monter à 2mbit/s ce qui peut drastiquement changer la vitesse de rafraichissement de notre grille)
Si on y réfléchis un peu plus, on peut se dire que le gain n'est important que pour la carte maitre et potentiellement les cartes directement adjacentes, mais comme on doit avoir le même code sur toutes les cartes c'est plus simple d'utiliser le même algorythme de distribution partout.
#### Traitement des infos
Quand on recoit un nouveau paquet du master en êtant un slave. On peut lire dans le premier byte le type de message.
Dans ces 8 bits, les 4 MSB sont les plus importants car ils determinent le type de message. Les 4 LSB sont toujours sou la forme 0101.
Voici une liste des paquets possibles pour le moment dans notre protocole
| sequence | definition |
| ----------- | ----------------- |
| 1000 0101 | Side Discovery |
| 1100 0101 | SD return |
| 0100 0101 | Slave Assignement |
| 0010 0101 | Invalidate |
| 0001 0101 | Pixel Data |
| 0000 0101 | ACK |
Tous ces paquets sont forgés par le master à l'exeption du paquet ACK qui peut être créé par un slave.
##### Side discovery (10000101 | 0x85)
Octets à suivre : 1
Structure :
Marche à suivre :
##### Side discovery return [SD return] (11000101 | 0xC5)
Octets à suivre : 1
Structure :
Marche à suivre :
##### Slave Assignement (01000101 | 0x45)
Octets à suivre : 2
Structure :
Marche à suivre :
##### Invalidate (00100101 | 0x25)
Octets à suivre : 0
Structure :
Marche à suivre :
##### Pixel Data (00010101 | 0x15)
Octets à suivre : 16X16X3 [768] (en imaginant 8 bits par couleurs et une matrice de 16 par 16)
Si on fait un petit calcul on peut voir que avec 24bits par pixel on arrive sur des débits assez énormes... Ca fait 768 octets par seconde par carte ou 6144 bits/s par carte... Avec un lien à 1mbit/s on va pas avoir des écrans ultra rapides.
Structure :
Marche à suivre :
##### ACK (00000101 | 0x5)
Octets à suivre : 2
Structure :
Marche à suivre :