Dropbox

機体の設定をDump/Diffのテキストファイルから読み解きたいことがまれにあります。大部分は意味のある文字列が書いてありますし、受信機の種類などは記憶していたりするので良いのですがConfiguratorのPortページのデータが曲者です。どのUARTが受信機だったとか、VTXのプロトコルがIRC TrampだったかSmartAudioだったとか重要な項目ですが、記憶するのは難しいですしDump/Diffデータも意味不明の数字でしかありません。ということで、これについて調べたことを書いておきます。タイトルはSerial編として続きがあるように見えますが、次に何かDump/Diffで困ったことが見つからない限り書く予定はありません。

上はとある機体のPortsタブです。これに対応するDumpデータは以下のようになっています。
# serial
serial 20 1 115200 57600 0 115200
serial 0 8192 115200 57600 0 115200
serial 1 64 115200 57600 0 115200

最初のserial 20で始まる行はdiffの出力には現れません。これはUSB VCPに相当すると容易に想像が付きます。またserial 0がUART1でserial 1であるというのもほぼ確信を持って言えるでしょう。それに続く数値もPortsタブの設定を変化させて探っていけば自分が必要な項目は拾い出せるとは思いますが、今ひとつスマートではありませんし確信を持って語ることは出来ません。

正しい情報を得るべくソースコードを読んで探していたのですが、結局ドキュメントにまとめて書かれていることが分かりました。ということでbetaflight/docs/Serial.mdを読んでいただければ全ては解明します。

それだけではつれないので簡単に説明を加えておきます。serialに続く最初の数字がポートでUART番号から1を引いたものです。またUSBは20、softserialは30から始まります。
その次の数字がFunctionで、これが今回知りたかったものです。その後にボーレート(シリアルインターフェースの速度)がいくつか続きます。Ports画面には速度はひとつしか表示されていないのが謎ですが、とりあえずあまり変更するものではないので置いておきます。

Functionについては次のように定義されています。

2. Serial Port Function

Function Value
FUNCTION_NONE 0
FUNCTION_MSP 1
FUNCTION_GPS 2
FUNCTION_TELEMETRY_FRSKY_HUB 4
FUNCTION_TELEMETRY_HOTT 8
FUNCTION_TELEMETRY_LTM 16
FUNCTION_TELEMETRY_SMARTPORT 32
FUNCTION_RX_SERIAL 64
FUNCTION_BLACKBOX 128
FUNCTION_TELEMETRY_MAVLINK 512
FUNCTION_ESC_SENSOR 1024
FUNCTION_VTX_SMARTAUDIO 2048
FUNCTION_TELEMETRY_IBUS 4096
FUNCTION_VTX_TRAMP 8192
FUNCTION_RCDEVICE 16384
FUNCTION_LIDAR_TF 32768
FUNCTION_FRSKY_OSD

IT屋さんにはおなじみの数字が書かれています。これは10進数ですが、バイナリーにするとひとつのビットになります。これはひとつのポートに複数のFunctionをもたせることが出来るようにしているからです。現実性は無視して例を上げるとUART1にGPSとFRSKY Telemetryの機能を持たせた場合は2+4で6にセットされます。

最初にあげた例に戻ってみます。

serial 0 8192

はUART1がFUNCTION_VTX_TRAMP、また

serial 1 64

はUART2がFUNCTION_RX_SERIALであることが分かります。ということでPorts画面と一致していることがわかります。

Trackback

no comment untill now

Add your comment now