これまでマイクロFPVレーサーのEX120をGPS自律飛行化する妄想をず~っと続けてきたわけですが。

 
 
 
blog_import_5ca4877233808.jpeg
 
 
 
 
ここまでのストーリーはこちらから見れます。
 
 
 
搭載されているフライトコントローラー(Eachine SP Racing F3 EVO)が6DOFのため、10DOF化する必要があります。
 
 
 
で~、このコントローラーには3つのUARTシリアスバスが装備されているのですが、バロメーターとコンパスを接続するためのI2Cシリアルバスが搭載されていません。
 
 
 
I2Cシリアルバスをどうするか?という時点で身動きが取れない状態になっていたのですが・・・。 
 
 
 
実は、灯台もと暗しで、その解決方法が身近にあったのです。
 
 
 
それがリソースマッピングです。
 
 
 
これはフライトコントローラーを制御する汎用マイコンチップ、STM32のピンI/Oを設定する機能のことです。
 
 
 
このリソースマッピングはBetaflight/ベータフライト3.1、Cleanflight/クリーンフライト2.0から追加された機能です。
 
 
 
Eachine SP Racing F3 EVOにはSTM32F303、通称F3と呼ばれるマイコンチップが搭載されています。
 
 
STM32F303-Pin.jpg
 
 
STM32F303には48のピンがあり、上図のピンの内側にピン番号、外側にピン名が示されています。
 
 
 
STM32の情報(datasheet)はSTM32のサイトからダウンロードできます。
 
 
 
次に、自分のEX120には少し古いですがクリーンフライト2.1.0がインストールされています。
 
 
 
CLIでdumpファイルの最初の部位を見てみると、
 
 
# dump
# Cleanflight / SPRACINGF3EVO 2.1.0 Jul 30 2017 / 13:13:51 (8b24735)
name -
resource BEEPER 1 C15
resource MOTOR 1 A00
resource MOTOR 2 A01
resource MOTOR 3 A02
resource MOTOR 4 A03
resource MOTOR 5 A06
resource MOTOR 6 A07
resource MOTOR 7 B00
resource MOTOR 8 B01
resource MOTOR 9 B10
resource MOTOR 10 B11
resource MOTOR 11 NONE
resource MOTOR 12 NONE
resource SERVO 1 NONE
resource SERVO 2 NONE
resource SERVO 3 NONE
resource SERVO 4 NONE
resource SERVO 5 NONE
resource SERVO 6 NONE
resource SERVO 7 NONE
resource SERVO 8 NONE
resource PPM 1 A15
resource PWM 1 NONE
resource PWM 2 NONE
resource PWM 3 NONE
resource PWM 4 NONE
resource PWM 5 NONE
resource PWM 6 NONE
resource PWM 7 NONE
resource PWM 8 NONE
resource LED_STRIP 1 A08
resource SERIAL_TX 1 A09
resource SERIAL_TX 2 A14
resource SERIAL_TX 3 B10
resource SERIAL_TX 4 NONE
resource SERIAL_TX 5 NONE
resource SERIAL_TX 6 NONE
resource SERIAL_TX 7 NONE
resource SERIAL_TX 8 NONE
resource SERIAL_TX 9 NONE
resource SERIAL_TX 10 NONE
resource SERIAL_TX 11 A07
resource SERIAL_TX 12 B01
resource SERIAL_RX 1 A10
resource SERIAL_RX 2 A15
resource SERIAL_RX 3 B11
resource SERIAL_RX 4 NONE
resource SERIAL_RX 5 NONE
resource SERIAL_RX 6 NONE
resource SERIAL_RX 7 NONE
resource SERIAL_RX 8 NONE
resource SERIAL_RX 9 NONE
resource SERIAL_RX 10 NONE
resource SERIAL_RX 11 A06
resource SERIAL_RX 12 B00
resource I2C_SCL 1 B06
resource I2C_SCL 2 NONE
resource I2C_SDA 1 B07
resource I2C_SDA 2 NONE
resource LED 1 B08
resource LED 2 NONE
resource LED 3 NONE
resource RX_BIND 1 NONE
resource RX_BIND_PLUG 1 NONE
resource TRANSPONDER 1 A08
resource SPI_SCK 1 B03
resource SPI_SCK 2 B13
resource SPI_SCK 3 NONE
resource SPI_MISO 1 B04
resource SPI_MISO 2 B14
resource SPI_MISO 3 NONE
resource SPI_MOSI 1 B05
resource SPI_MOSI 2 B15
resource SPI_MOSI 3 NONE
mixer QUADX
 
mmix reset
 
 
 
このようにリソース(resource)コマンドで各ピンの機能が設定されているのです。
 
 
 
例えば、下の様にUARTのTX1はPA09ピン、TX2はPA14ピン、TX3はPB10ピンで設定されているのです。
resource SERIAL_TX 1 A09
resource SERIAL_TX 2 A14
resource SERIAL_TX 3 B10
 
 
 
そして、I2CのSCL1がPB06、SDA1がPB07で設定されていますが、このFCの基板ではこのピンの回路は存在しません。 多分、フルサイズのSP Racing F3 EVO(このFCは10DOF)には回路が存在するのでしょう。
resource I2C_SCL 1 B06
resource I2C_SCL 2 NONE
resource I2C_SDA 1 B07
resource I2C_SDA 2 NONE
 
 
 
つまりこのリソースコマンドを使って、I2CのSCL1を別のピン、例えば、TX2のPA14に設定することができるのです!