From 23188688f24e78c1d6e97bcdda004cbb4a3bf2db Mon Sep 17 00:00:00 2001 From: maxluli Date: Fri, 14 Mar 2025 15:10:52 +0100 Subject: [PATCH] Started describing the specifics of the protocol --- Doc.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/Doc.md b/Doc.md index c5aad41..7a0ac40 100644 --- a/Doc.md +++ b/Doc.md @@ -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 : \ No newline at end of file