Raspberry Piの26ピンの拡張I/FにはSPIのインタフェースが出ています。
今日はこの部分の使い方をこちらのページを参考に調べてみました。
まず、デフォルトではSPIのドライバは読み込まれていないようです。
$ ls -la /dev/spi* ls: cannot access /dev/spi*: No such file or directory
そこで、 /etc/modprobe.d/raspi-blacklist.conf の spi-bcm2708の行をコメントアウトします。
$ cat /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them)
#blacklist spi-bcm2708 blacklist i2c-bcm2708
一旦リブートします。リブート後に確かめてみると・・・
$ ls -la /dev/spi* crw------- 1 root root 153, 0 Jan 1 1970 /dev/spidev0.0 crw------- 1 root root 153, 1 Jan 1 1970 /dev/spidev0.1
ということでデバイスが見えるようになりました。
なお、この作業はカーネルが新しくないといけないようです。
自分は2012/9/18バージョンのRaspbian “wheezy”で動かしています。
$ uname -a Linux raspberrypi 3.2.27+ #160 PREEMPT Mon Sep 17 23:18:42 BST 2012 armv6l GNU/Linux
デバイスファイルの存在が確認できたところで、リンク先のページにある spi_spidev_test.c をコンパイルして動かしてみます。
$ ls spi_spidev_test.c $ gcc spi_spidev_test.c -o spi_spidev_test $ sudo ./spi_spidev_test -D /dev/spidev0.0 spi mode: 0 bits per word: 8 max speed: 500000 Hz (500 KHz)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ということで、無事に動作しました。