Raspberry PiでSPIを使うには

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

ということで、無事に動作しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)