組み込みシステムにおける蓄積および検証アルゴリズムの適用〜

リンク:https://blog.csdn.net/m0_37697335

序文

外界は常に回路への干渉が多かれ少なかれあるため、デジタル信号の場合、送信されるデータは非常に異なっているように見える可能性があります。

データを送信する必要がある多くの場合、特に一部のデータが一部のハードウェア(一部の組み込みデバイス、ロボットなど)の動作に影響を与える可能性がある場合、誤ったデータはいくつかの隠れたリスクをもたらす可能性があり、考えるのは恐ろしいことです。

私は組み込み関連の分野なので、普段はシングルチップマイコンで遊んでいますが、もちろんシングルチップマイコンの性能は大きく異なりますが、結局のところ、性能の多くはかろうじて十分としか言えません。コストの考慮事項。

したがって、今日の検証アルゴリズムは比較的単純ですが、特に一部では効果的性能一般的硬件です。

今日の累加和校验算法,又名CheckSum算法主人公はソースに関しては、ここでは注意しません。

累積およびチェックアルゴリズムの実装

送信者:

データの合計を取得するために必要なデータを蓄積し、合計を否定してチェック値を取得します。次に、このチェック値と一緒に受信者に送信するデータを送信します。

受信機:

受信したデータ(チェックサムを含む)を累積し、1を加算します。0の場合、データに伝送エラーはありません。

累積結果を保存するために送信者と受信者が使用するタイプは同じである必要があることに注意してください。同じでない場合、1を加算してもオーバーフローを達成できず、0を取得できず、検証は無効になります。

例を挙げましょう:

送信者:0xA8、0x50を送信するには、unsigned char(8ビット)を使用して累積合計(0xF8(0b11111000))を保存し、チェックサムを否定して0x07(0b00000111)にします。次に、これら3つのデータを送信します。

受信者:受信が正しければ、3つのデータの累積合計は(0b11111111)であり、この時点で1を加算し、得られる結果は0です(実際の結果は0b100000000になるはずですが、unsigned charを使用して保存されるため( 8ビット)累積合計。したがって、上位ビットは切り捨てられ、0)の下位8ビットのみが残ります。

上記の例から、アルゴリズムの目的は、累積合計とチェック値を加算して、すべてのビットが1であるバイナリ結果を取得することであることがわかります。この結果は明らかに非常に扱いやすく、このアルゴリズムも非常に簡単です。実装が簡単です。シンプルなC言語のコード例を以下に示します。

送信者:以下は、チェック値を取得する方法のコードであり、結果は必要なチェック値です。

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;
}

受信者:入力には、送信者から送信されたチェック値が含まれます。関数によって返される値が0の場合、データは正しいです。

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.多くのソフトウェアエンジニアがハードウェアエンジニアをうらやましく思っていると言われています

2. I2C、SPI、UARTなど、マイクロコントローラーで一般的に使用されるいくつかの通信インターフェース。

3.プログラミング言語の1月のランキングの結果が公開され、5つの重要な発見があります

4.5元が70に変更されました、ねえ、チップは再び在庫切れです

5. RISC-Vプロセッサはどのように命令セットを設計しますか?何がそんなに特別なのか

6.組み込みエンジニアが一般的に使用するマクロ定義

免責事項:この記事はオンラインで複製されており、著作権は原作者に帰属します。作品の著作権にかかわる場合は、お問い合わせください。ご提供いただいた著作権認定資料に基づいて著作権を確認し、作者の報酬を支払うか、コンテンツを削除します。

おすすめ

転載: blog.csdn.net/DP29syM41zyGndVF/article/details/114266987