人気ブログランキング | 話題のタグを見る

ELRS受信機の配線とCRSFのデコード

ELRS受信機に関する備忘録
マイコンと受信機とのUART接続は受信機の製造メーカーによって違うので注意!
よくあると思い込んでいたTXとRXで良い受信機もあれば 
親切なのかTXはTXへなど約束事が混在する
例えばこう
ELRS受信機の配線とCRSFのデコード_d0067943_11293018.jpg

ELRSはCRSFというプロトコルを使って通信しているため
マイコンでラジコンPPMにするにはデコードする必要があった
そこでRAWデータを取得してChatGPTに頼りまくってデコードスクリプトを探った
当初は調べた仕様を伝えてデコードスクリプトを探ったがうまくいかなかったので




ELRS受信機の配線とCRSFのデコード_d0067943_11424267.jpg

こういったデータを投げ込むとプロトコルの構造を
一瞬で推測して最初に投げた仕様だけにこだわらずに
デコードスクリプトを修正し

ELRS受信機の配線とCRSFのデコード_d0067943_11520822.jpg
適正なCRSFーPPM変換が出来るようになった。
めでたしめでたし
対話がほんとに大事

chatgotさん曰く

CRSF の 11bit データパッキングの再確認

CRSF では 16ch のデータを 11bit (0-2047) でエンコードし、合計 22 バイト (176bit) に詰め込んで送信 しています。
このとき、通常の 16bit 単位ではなく、ビット単位でずれて格納 されるため、単純な 2バイトごとのデコードでは値がずれてしまいます。


CRSF 11bit データの正しい取得方法

CRSF の RC チャンネルデータは 176bit (22バイト) に 16ch の 11bit データをパック しています。

  • 各チャンネルの 11bit データを バイト配列のビット位置から正しく復元 する必要があります。

CRSF 11bit データのパック形式

チャンネルビット範囲
ch10 - 10
ch211 - 21
ch322 - 32
ch433 - 43
ch544 - 54
ch655 - 65
ch766 - 76
ch877 - 87
ch988 - 98
ch1099 - 109
ch11110 - 120
ch12121 - 131
ch13132 - 142
ch14143 - 153
ch15154 - 164
ch16165 - 175

したがって、バイト単位で単純に 2 バイトごとに読み取ると、値がずれてしまう ため、ビットシフトを使って適切に復元する必要があります。





名前
URL
削除用パスワード
by mayoneko | 2025-03-12 11:56 | Comments(0)

飛ぶって、楽しいニャー


by mayoneko
カレンダー
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31