Les informations échangées sur la liaison série sont sous la
forme de trames qui respectent toujours le même 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
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
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)
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
É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