ブログ

Armadillo-IoTでSPIを使う

at_kazutaka.bito
2015年4月3日 18時03分

Armadillo-IoTのRS232アドオンモジュールのテストインタフェースのSPIを使ってみた。

1.SPI端子の確認

Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル Armadillo-IoTベースボードマルチプレクス表 から、今回は、Armadillo-IoTのCON1にRS232アドオンモジュールを接続して、 RS232アドオンモジュールの  CON4の35ピン:CSPI2_SCLK  CON4の36ピン:CSPI2_MISO  CON4の37ピン:CSPI2_MOSI  CON4の50ピン:CSPI2_SS0 を使う。

2.ドライバの設定:DeviceDriver

Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル8.3.14. SPI のカーネルコンフィギュレーションを参考に make menuconfigで、

  Device Drivers  --->
      [*] SPI support  --->                                                           <SPI>
                *** SPI Master Controller Drivers ***
          -*-   Bitbanging SPI master                                          <SPI_BITBANG>
          <*>   MXC CSPI controller as SPI Master                                  <SPI_MXC>
                *** SPI Protocol Masters ***
          <*>   User mode SPI device driver support                              <SPI_SPIDEV>

を設定。

3.アドオンインタフェースの設定:SystemType

Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル8.3. Linuxドライバ一覧 のカーネルコンフィギュレーションを参考に make menuconfigで、

System Type  --->
      ARM system type (Freescale MXC/iMX-based)  --->
      Freescale MXC Implementations  --->
          MXC/iMX System Type (MX25-based)  --->                              <ARCH_MX25>
          MX25 Options  --->
              [*] Support Atmark Techno Armadillo-410                 <MACH_ARMADILLO410>
              Armadillo-400 Board options  --->
                  Armadillo-410 CON2 extension board (Armadillo-IoTG Std Base board)  --->
                                                            <ARMADILLO410_CON2_AIOTG_STD>
                  [*] Addon Module Auto Delect              <AIOTG_STD_ADDON_AUTO_DETECT>

                  [ ] Addon Module Auto Delect 

に設定。

すると、下に端子のコンフィギュレーションの項目がでる。 この中で、今回はArmadillo-IoTのCON1のSPI2を使うので、

[*] Enable SPI2 at CON1
[*] Enabel GPIO SPI2_SS0 at CON1

を有効にする。 参考)上記のコンフィギュレーションの画面でを選択すると、CON1/CON2のどの端子に接続されているかが見える。

4.armadillo_iotg_std.cの変更

Armadillo実践開発ガイド第3部2.3. SPI接続A/Dコンバーター の図2.37 CSPI3、SS0をspidevで使用する修正を参考に atmark-dist/linux-2.6.x/arch/arm/mach-mx25/armadillo_iotg_std.c 内の、static struct spi_board_info armadillo_iotg_std_spi2_board_info[] __initdataを 下記のように変更。 補足) 上記資料は、CSPI3を使っている。今回は、CSPI2を使う。違いに注意。

static struct spi_board_info armadillo_iotg_std_spi2_board_info[] __initdata = {
    {
        .modalias = "spidev",
        .max_speed_hz = 1000000,
        .bus_num = 2,
        .chip_select = 0,
    },
};

以上の手順後、ビルドしたカーネルをArmadillo-IoTに書き込むと、手順1の端子でSPI通信ができる。