ELRS受信機の配線とCRSFのデコード
2025年 03月 12日

CRSF の 11bit データパッキングの再確認
CRSF では 16ch のデータを 11bit (0-2047) でエンコードし、合計 22 バイト (176bit) に詰め込んで送信 しています。
このとき、通常の 16bit 単位ではなく、ビット単位でずれて格納 されるため、単純な 2バイトごとのデコードでは値がずれてしまいます。
CRSF 11bit データの正しい取得方法
CRSF の RC チャンネルデータは 176bit (22バイト) に 16ch の 11bit データをパック しています。
- 各チャンネルの 11bit データを バイト配列のビット位置から正しく復元 する必要があります。
CRSF 11bit データのパック形式
チャンネル | ビット範囲 |
---|---|
ch1 | 0 - 10 |
ch2 | 11 - 21 |
ch3 | 22 - 32 |
ch4 | 33 - 43 |
ch5 | 44 - 54 |
ch6 | 55 - 65 |
ch7 | 66 - 76 |
ch8 | 77 - 87 |
ch9 | 88 - 98 |
ch10 | 99 - 109 |
ch11 | 110 - 120 |
ch12 | 121 - 131 |
ch13 | 132 - 142 |
ch14 | 143 - 153 |
ch15 | 154 - 164 |
ch16 | 165 - 175 |
したがって、バイト単位で単純に 2 バイトごとに読み取ると、値がずれてしまう ため、ビットシフトを使って適切に復元する必要があります。