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