ブログ

Armadillo-IoT(G3)/X1:spidevでSPIデバイスを制御するサンプルプログラム(Linux-4.9版)

at_kazutaka.bito
2020年1月27日 10時19分

Armadillo実践開発ガイド 第3部(linux-3.14-at対応)
2.3. SPI接続A/Dコンバーター
に紹介されているspidevでSPIデバイス(MCP3204)を制御するサンプルプログラムを
カーネル(Linux-4.9)で動作するように変更しました。

参考)Armadillo-X1の拡張インタフェースのSPIの使用方法は下記をご参照ください。
Armadillo-X1製品マニュアル
21.7.4. SPI


サンプルプログラム一式を添付します。
mcp3204_for_spidev_20200123.tar.gz
上記の実践開発ガイドのサンプルプログラムから、下記2点を変更しています。
mcp3204.c(変更部分のみ抜粋)

        /* 転送設定をセットする */
        tr.tx_buf = (unsigned long)tx;
        tr.rx_buf = (unsigned long)rx;
        tr.len = ARRAY_SIZE(tx);
        tr.delay_usecs = MCP3204_SPI_DELAY_USECS;
        tr.speed_hz = MCP3204_SPI_SPEED_HZ;
        tr.bits_per_word = MCP3204_SPI_BITS;
        tr.cs_change = 0;
        tr.tx_nbits = 0; // 追加(※)
        tr.rx_nbits = 0; // 追加(※)

※)Linux-4.9では、この要素が追加されているため。

Makefile(変更部分のみ抜粋)

CROSS   := arm-linux-gnueabi

の箇所を下記のように変更(※)

CROSS   := 

※)Armadillo-IoT(G3)/X1上でのセルフコンパイルを想定し、クロスコンパイル用のプレフィックスを削除。