Armadilloフォーラム

MSIOF(SPI)のマスタ送信、受信サンプルコード

oobu_eiichi

2014年9月24日 17時58分

お世話になっております。
HIICSの大部です。

linux-3.4-at6\include\linux\spi/spi.hのI/F関数が結構あり、使い方がいまいち分からない
のでMSIOF 1または2でマスタからの送信と受信するサンプルコード(テスト用で作成したものでもよい)
があれば頂きたいです(なければ簡単なフローチャートでもよいです)。

お手数ですがよろしくお願いします。

コメント

at_makoto.harada

2014年9月24日 19時23分

SPIを動作させることが主目的であれば、spidevを利用すると良いかもしれません。
spidevを用いると、ユーザーランドで動作するアプリケーションプログラムからデバイスの制御をおこなうことができます。

spidevを利用したサンプルコードはlinuxソースツリーの以下の場所にあります。
Documentation/spi/spidev_test.c

Armadillo-840とLCD拡張ボードで試してみました。
手順を以下に示します。

1. カーネルコンフィグを変更

Linux/arm 3.4-at6 Kernel Configuration
 System Type --->
     *** Armadillo System Configuration ***
     Armadillo-840 System Configuration --->
            CON7 extension board (Custom)  --->
             ( ) LCD
             (X) Custom                               チェックを入れる
         *** Interface and Device select ***
        [*] use MSIOF1                                チェックを入れる
        [*]   SPI: User mode SPI device [CS:PORT73]   チェックを入れる
        [ ] use SDHI1                                 チェックを外す
 
 Device Drivers --->
     [*] SPI support --->                             チェックを入れる
        *** SPI Master Controller Drivers ***
        <*> Utilities for Bitbanging SPI masters      チェックを入れる
        <*> SuperH MSIOF SPI controller               チェックを入れる
        *** SPI Protocol Masters ***
        <*> User mode SPI device driver support       チェックを入れる

2. Armadilo起動、コンパイル
手順1で作成したカーネルと、ユーザーランドにdebian(*1)を用いて起動し、以下のようにしてコンパイルします。

    # apt-get update; apt-get upgrade;
    # apt-get install gcc
    # gcc spidev_test.c -o spidev_test
 

(*1) http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

3. spidev_testの実行

# LCD拡張ボードCON11: ピン11とピン12はオープン

    # ./spidev_test -D /dev/spidev1.0
    spi mode: 0
    bits per word: 8
    max speed: 500000 Hz (500 KHz)
 
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF

# LCD拡張ボードCON11: ピン11とピン12をショート(MISOとMOSIをループバック)

    # ./spidev_test -D /dev/spidev1.0
    spi mode: 0
    bits per word: 8
    max speed: 500000 Hz (500 KHz)
 
    FF FF FF FF FF FF
    40 00 00 00 00 95
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    FF FF FF FF FF FF
    DE AD BE EF BA AD
    F0 0D

参考になれば幸いです。

お世話になっております。
HIICS 大部です。

LCD拡張ボードを購入していないのですが、Armadillo-840ボードで
ループバック(マスタから送信してマスタで受信)のテスト確認はできますでしょうか?

お世話になっております。
HIICS 大部です。

拡張ボードを購入した場合、ショートさせるピンが用意されているのでしょうか?
それとも何か改造(部品が必要とか)が必要なのでしょうか?

at_makoto.harada

2014年9月25日 12時06分

> 拡張ボードを購入した場合、ショートさせるピンが用意されているのでしょうか?
> それとも何か改造(部品が必要とか)が必要なのでしょうか?

拡張ボードのCON11はヘッダが未実装(2.5mmピッチのスルーホール)です。
拡張ボードにはショートさせるためのピンは用意されていないので、市販のジャンパ線などを利用して
試してみてください。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…