« ArduinoUNOのピン名ラベル貼ってみた | トップページ | M5Atom LITE/M5Stamp PICOのフルカラーシリアルLEDをライブラリなしで制御する »

2022年5月26日 (木)

AM2301BのCRC

AM2301BのCRC
情報が少なくて割と困ったので書いときます
秋月で売ってる温湿度センサー AM2306B
スペックシートに詳しい情報が載ってなくて (。´・ω・)? 状態
コマンドリファレンスがないとかどうかしてる。

中でもCRCの算出方法はチョット悩んだのでサンプル載せときます。
AM2301Bの使い方の動画はYouTubeにあげます。


// AM2301BのCRC計算
// 入力: uint8_t readData[6] - センサーから読み取ったデータ6Byte
// 出力: uint8_t crc - CRC8-Dallas/Maxim (X8 + X5 + X4 + 1)
//
// 生成多項式 : 1 + x^4 + x^5 + x^8 => B100110001 => 0x31
// 左シフト
uint8_t crc = 0xFF; // CRC初期値 0xFF
for (int i = 0; i < 6 ; i++) {
    uint8_t b = readData[i];
    crc ^= b;
    for (int x = 0; x < 8; x++) {
        if (crc & 0x80) {
            crc <<= 1;
            crc ^= 0x31;
        } else {
            crc <<= 1;
        }
    }
}


Image

|

« ArduinoUNOのピン名ラベル貼ってみた | トップページ | M5Atom LITE/M5Stamp PICOのフルカラーシリアルLEDをライブラリなしで制御する »

arduino」カテゴリの記事

コメント

この記事へのコメントは終了しました。