Application de l'algorithme d'accumulation et de vérification dans le système embarqué ~

Lien: https://blog.csdn.net/m0_37697335

Préface

Parce que le monde extérieur aura toujours plus ou moins d'interférences sur le circuit, pour les signaux numériques, il est probable que les données transmises apparaîtront très différentes.

Dans de nombreuses occasions où des données doivent être transmises, en particulier certaines données peuvent affecter les actions de certains matériels (tels que certains appareils embarqués, robots, etc.), des données erronées peuvent entraîner des risques cachés, ce qui est effrayant à penser.

Étant donné que je suis dans le domaine de l’embarqué, je joue généralement avec des micro-ordinateurs à une seule puce. Bien sûr, les performances des micro-ordinateurs à une seule puce varient considérablement. Cependant, on ne peut dire que la plupart des performances sont à peine suffisantes, après tout, considérations de coût.

L'algorithme de vérification d'aujourd'hui est donc relativement simple, mais efficace, en particulier certains 性能一般的硬件.

Dit aujourd'hui 累加和校验算法,又名CheckSum算法protagoniste:. Quant à la source, je ne ferai pas attention ici.

Implémentation de l'algorithme d'accumulation et de contrôle

expéditeur:

Accumulez les données requises pour obtenir une somme de données et annulez la somme pour obtenir notre valeur de contrôle. Envoyez ensuite les données à envoyer au destinataire avec cette valeur de contrôle.

destinataire:

Accumulez les données reçues (y compris la somme de contrôle), puis ajoutez 1. Si vous obtenez 0, il n'y a pas d'erreur de transmission dans les données.

Notez que les types utilisés par l'expéditeur et le destinataire pour enregistrer le résultat de l'accumulation doivent être les mêmes, sinon le débordement ne peut pas être obtenu en ajoutant 1 et ne peut donc pas obtenir 0, et la vérification sera invalide.

Donnons un exemple:

Expéditeur: Pour envoyer 0xA8, 0x50, nous utilisons des caractères non signés (8 bits) pour enregistrer la somme accumulée, qui est 0xF8 (0b11111000), et la somme de contrôle est 0x07 (0b00000111) en l'annulant. Envoyez ensuite ces trois données.

Destinataire: Si la réception est correcte, la somme cumulée des trois données est (0b11111111), à ce moment, ajoutez 1 et le résultat obtenu est 0 (le résultat réel doit être 0b100000000, mais parce qu'il est enregistré à l'aide de caractères non signés ( 8 bits) Somme cumulative, donc les bits hauts sont tronqués, ne laissant que les huit bits bas de 0).

De l'exemple ci-dessus, nous pouvons savoir que le but de l'algorithme est d'ajouter la somme cumulée et la valeur de contrôle pour obtenir un résultat binaire où chaque bit vaut 1. Ce résultat est évidemment très facile à manipuler, et cet algorithme est également très Facile à mettre en œuvre Simple, l'exemple de code en langage C est donné ci-dessous.

Expéditeur: Ce qui suit est le code pour savoir comment obtenir la valeur de contrôle, et le résultat est la valeur de contrôle que nous voulons.

U8 TX_CheckSum(U8 *buf, U8 len) //buf为数组,len为数组长度
{ 
    U8 i, ret = 0;
 
    for (i = 0; i < len; i++)
    {
        ret += *(buf++);
    }
    ret = ~ret;
    return ret;
}

Récepteur: l'entrée contient la valeur de contrôle envoyée par l'expéditeur. Si la valeur renvoyée par la fonction est 0, les données sont correctes.

U8 RX_CheckSum(U8 *buf, U8 len) //buf为数组,len为数组长度
{ 
    U8 i, ret = 0;
 
    for (i = 0; i < len; i++)
    {
        ret += *(buf++);
    }
    ret = ret;
    return ret+1;
}

1. On dit que de nombreux ingénieurs en logiciel envient les ingénieurs en matériel

2. Plusieurs interfaces de communication couramment utilisées dans les microcontrôleurs, telles que I2C, SPI, UART, etc.

3. Les résultats du classement de janvier des langages de programmation sont publiés, et nous avons cinq conclusions importantes

4,5 yuans ont changé à 70, hé, la puce est à nouveau en rupture de stock

5. Comment le processeur RISC-V conçoit-il le jeu d'instructions? Qu'est-ce qui est si spécial

6. Définitions de macros couramment utilisées par les ingénieurs embarqués

Avertissement: Cet article est reproduit en ligne et le droit d'auteur appartient à l'auteur original. Si vous êtes impliqué dans le droit d'auteur de l'œuvre, veuillez nous contacter, nous confirmerons le droit d'auteur sur la base des matériaux de certification du droit d'auteur que vous fournissez et paierons la rémunération de l'auteur ou supprimerons le contenu.

Je suppose que tu aimes

Origine blog.csdn.net/DP29syM41zyGndVF/article/details/114266987
conseillé
Classement