NORDAC SK 400E
CRC (Vérification de redondance cyclique) est calculé en suivant les étapes suivantes:
Etape 1: Charger un registre de 16 bit (appelé registre CRC) avec FFFFH.
Etape 2: Effectuer un ou exclusif avec le premier octet du message de commande et l'octet
d'ordre le plus bas du registre 16 bit CRC, mettant le résultat dans le registre CRC.
Etape 3: Décaler le registre CRC d'un bit vers la droite en mettant zéro dans le MSB. Extraire
et examiner le LSB.
Etape 4: Si le LSB du registre CRC est 0, répéter l'étape 3, puis effectuer un ou exclusif avec
le registre CRC et la valeur polynomiale A001H.
Etape 5: Répéter l'étape 3 et 4 jusqu'à 8 décalages ont été effectués. Lorsque ceci est
effectué, Un octet complet aura été traité.
Etape 6: Répéter l'étapes 2 à 5 pour les prochains octets du message de commande.
Continuer ceci jusqu'à que tout les octets soient traités.
registre CRC est la valeur CRC.
message, les octets le plus haut et le plus bas de la valeur CRC doit être
échangée, c.à.d : l'octet d'ordre le plus bas sera transmis en premier.
Ce qui suit est un exemple de génération CRC utilisant le langage C. La fonction prend deux
arguments:
Unsigned char* data
Unsigned char length
La fonction retourne la valeur CRC comme entier non signé.
Unsigned int crc_chk(unsigned char* data, unsigned char length){
int j;
unsigned int reg_crc=0xFFFF;
while(length--){
reg_crc ^= *data++;
for(j=0;j<8;j++){
}
}
return reg_crc;
}
un pointeur au buffer de message
Le nombre d'octets dans le buffer de message
if(reg_crc & 0x01){ /* LSB(b0)=1 */
reg_crc=(reg_crc>>1) ^ 0xA001;
}else{
reg_crc=reg_crc >>1;
}
En transmettant la valeur CRC dans le
5-47
Notice de mise en service
Le contenu final du
5