STM32でNUTTXを使ってみる

オンボード3軸アクセラレータの利用


Nuttxの周辺機器のサポートは非常に限定的、かつボードに依存しています。
例えばF4 Discoveryで利用できる周辺機器については、こちらに記載が有りますが、非常に分かりにくいです。
$HOME/nuttxspace/nuttx/boards/arm/stm32/stm32f4discovery/README.txt

ソースを直接見た方が分かりやすいです。
F4 Discoveryの周辺機器の初期化は以下のコードです。
$HOME/nuttxspace/nuttx/boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c

他のボードの初期化も同様の場所にあります。
$HOME/nuttxspace/nuttx/boards/arm/stm32/ボード名/src/xxx_bringup.c

このコードを見るとどのような周辺機器をサポートしているかわかります。
前回USERLEDSの利用方法を紹介しました。
今回は3-axis accelerometerドライバーを有効にする手順を紹介しますが、メニューの使い方がトリッキーです。

ソースを見ると以下で3-axis accelerometerドライバーの登録を行っています。
#ifdef CONFIG_LIS3DSH
  /* Create a lis3dsh driver instance fitting the chip built into
   * stm32f4discovery
   */

  ret = board_lis3dsh_initialize(0, 1);
  if (ret < 0)
    {
      serr("ERROR: Failed to initialize LIS3DSH driver: %d\n", ret);
    }
#endif

そこで、こ ちらからCONFIG_LIS3DSHを検索します。
1.5.483 CONFIG_LIS3DSH: STMicro LIS3DSH 3-Axis accelerometer support
Type: Boolean
Default: n
Selects: CONFIG_SPI
Dependencies: CONFIG_SENSORS
Kconfig file: ./drivers/sensors/Kconfig
Enable driver support for the STMicro LIS3DSH 3-Axis accelerometer.

1.5章はSensor Deviceのメニューですが、このメニューのどこを探してもこの項目は出てきません

変数名の説明をよく読むと
Dependencies: CONFIG_SENSORSと書かれています。
このように変数によっては別の項目を有効にしないと、メニューに表示されない場合が有ります。
Dependencies(依存関係)のところは注意した方がいいです。

そこでDevice DriverのSensor Device Supportを有効にします。


引き続きSTMicro LIS3DSH 3-Axis accelerometer supportを有効にします。


これでよくやくmakeが通ります。
カーネルをビルドして、ビルドしたカーネルを書き込むと、/dev/acc0のデバイスが出現します。





このデバイスを操作するアプリは以下のアプリです。

config EXAMPLES_LIS3DSH_READER
        tristate "LIS3DSH acceleration reader example"
        default n
        depends on LIS3DSH
        depends on SPI_EXCHANGE


このアプリを有効にしてカーネルをビルドします。


このアプリを実行すると軸情報を表示します。


続く...