mercredi 1 janvier 2020

Les trames


Les informations échangées sur la liaison série sont sous la forme de trames qui respectent toujours le même format:

Frame format:
ID
D0
D1
D2
D3
D4
D5
D6
D7
PAD
CS


  • Une trame ou "frame" à une longueur de 11 octets (Byte)
  • Le premier octet est un numéro d’identifiant ID qui est l’opération de lecture ou d’écriture à destination d’un périphérique.
ID

0x00
Synchronisation PC
0x01
Write data from PC|Box into board
0x02
Read data from board to PC|Box
0x06
Write data from PC into date time board
0x07
Synchronisation Display
0x08
Write data from Display into board
0x09
Read data from board to Display

  • 8 octets contenant les données échangées
  • 1 octet de remplissage "padding"vaut 0x40 quand la trame est émise par le poêle sinon 0x00
  • Le dernier octet CS est un checksum est vaut la somme des 10 premiers octets


Lecture d’un registre




Lorsque l’on veut lire une valeur depuis la carte (read data from board) il faut:
  • Attendre la trame avec l’ID = 0x00 en effet le maître se met en écoute après cette trame pendant environ 30ms
  • Envoyer une trame avec ID=0X02 suivi de l’adresse du registre à lire sur 2 octets avec D0 le poids faible (Add.LowByte) et D1 le poids fort de l’adresse (Add.HighByte)  
ID
Add
Add
D2
D3
D4
D5
D6
D7
PAD
CS
0x02
LowByte
HighByte
0
0
0
0
0
0
0
XX

  • Attendre la trame de réponse avec ID=0x02 contenant la valeur du registre en D0 
0x02
D0
D1
D2
D3
D4
D5
D6
D7
0x40
CS

D0 correspond à la valeur du registre à l’adresse Add
D1 correspond à la valeur du registre à l’adresse Add+1
D2 correspond à la valeur du registre à l’adresse Add+2
etc...
D7 correspond à la valeur du registre à l’adresse Add+7


Exemple:
Lecture de la version du poêle - Read board version in register - 0x1E04 (0x is hexadecimal prefix notation)

  • Attendre la trame de synchronisation - Waiting synchro frame from serial port
ID
D0
D1
D2
D3
D4
D5
D6
D7
PAD
CS
0x00
xx
xx
xx
xx
xx
xx
xx
xx
0x40
xx


  • Envoyer la trame de lecture - Write reading frame to serial port        
ID
ADD.LB
ADD.HB
D2
D3
D4
D5
D6
D7
PAD
CS
0x02
0x04
0x1E
0
0
0
0
0
0
0
24

  • Lire la trame de réponse - Read response frame from serial port
ID
Val reg 0x1E04
Val reg 0x1E05
Val reg 0x1E06
Val reg 0x1E07
Val reg 0x1E08
Val reg 0x1E09
Val reg 0x1E0A
Val reg 0x1E0B
PAD
CS
0x02
0x2D
0
0x27
0
0x81
0
0x0A
0
0x40
0x21


Le numéro de version (stocké dans le registre 0x1E04) est le 1er octet de donnée (d0) = 0x2D soit 45
Le numéro de model (stocké dans le registre 0x1E06) est le 3ieme octet de donnée (d2) = 0x27 soit 39

Stove board version stored in register 0x01E04 is 0x2D = 45 and Stove model number stored in register 0x1E06 is 0x27 = 39




Écriture d’un registre



Lorsque l’on veut écrire une valeur dans la carte (write data to board) il faut:
  • Attendre la trame avec l’ID = 0x00 le maître se met en écoute après cette trame
  • Envoyer une trame avec ID=0X01 suivi de l’adresse du registre à écrire sur 2 octets avec D0 le poids faible et D1 le poids fort de l’adresse et D2 la valeur à écrire sur 1 octet.
ID
Add
Add
D2
D3
D4
D5
D6
D7
PAD
CS
0x01
LowByte
HighByte
Val
0
0
0
0
0
0
XX

Remarque: 
Lorsque le cycle d'écriture est terminé. Il est conseillé de faire à la suite du cycle d'écriture, un cycle de lecture de la valeur du même registre afin de vérifier que le cycle d'écriture précédent a réussi.

Exemple:
Écriture de la température de consigne de l'eau du ballon tampon (config 3) à 65°C soit 0x41 dans le registre 0x1C54 - Writing set point temperature of water tank storage to 65°C
  • Attendre la trame de synchronisation - Waiting synchro frame from serial port
ID
D0
D1
D2
D3
D4
D5
D6
D7
PAD
CS
0x00
xx
xx
xx
xx
xx
xx
xx
xx
0x40
xx
  • Envoyer la trame d'écriture - Send writing frame to serial port        
ID
ADD.LB
ADD.HB
D2
D3
D4
D5
D6
D7
PAD
CS
0x01
0x54
0x1C
0x41
0
0
0
0
0
0
0xB2



Aucun commentaire:

Enregistrer un commentaire