LoginSignup
7
4

More than 5 years have passed since last update.

Raspberry PiでSPI1/CE#2を使う(+起動が遅くなる問題を回避する)

Last updated at Posted at 2017-10-11

40ピンあるRaspberry Pi(Model A+/B+/2B/3B/Zero/Zero W)は,SPIが2系統備わっています.GPIO16/19/20/21が2系統目のSPI1です.

RPi Low-level peripherals - eLinux.org
300px-Pi-GPIO-header.png

ただし,単にSPIを有効にしただけでは,下記の通りSPI1は使えません.

>>> import spidev
>>> spi = spidev.SpiDev()
>>> spi.open(1,2)         # SPI1,CE#2を使おうとする
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory
$ ls /dev/spi*
/dev/spidev0.0  /dev/spidev0.1 
(spidev1.*がない...)

設定ファイルを書き換えると有効化できるのですが,バージョンによっては起動がめちゃくちゃ遅くなることがあるため,回避策も一緒に設定しておかないと悲しいことになります.

手順1. SPI1の有効化

SPI1を有効にするには, /boot/config.txt に下記を追加します.

dtoverlay=spi1-3cs

ただし,そのまま再起動してはいけません

手順2. シリアルコンソールかBluetoothを無効化

SPI1,シリアルコンソール(UART),Bluetoothでリソースが競合するようです.無効化はどちらかで構いません.

シリアルコンソールを無効化

/boot/cmdline.txtconsole=ttyAMA0,115200(またはconsole=serial0,115200) を削除します.

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo

Bluetoothを無効化 (Raspberry Pi 3 Model B/Zero Wのみ)

/boot/config.txt に下記を追加します.

dtoverlay=pi3-disable-bt

手順3. 再起動してSPI1を使う

これで設定は完了です.再起動すると,SPI1が使用可能になっているはずです.

$ ls /dev/spi*
/dev/spidev0.0  /dev/spidev0.1  /dev/spidev1.0  /dev/spidev1.1  /dev/spidev1.2
>>> import spidev
>>> spi = spidev.SpiDev()
>>> spi.open(1,2)         # エラーにならない
>>> 

もしも起動が遅くなってしまった場合…

私の場合は30分経っても起動が終わらず,SSHも繋がりませんでした.

この場合,Raspberry Pi以外のデバイスで,microSDカードの内容を書き換えます.

  1. 諦めて電源を切りましょう(データがぶっ壊れないことを祈りながら).
  2. カードリーダ,スマートフォン,カメラなどで,どうにかmicroSDカードを読み書きできる環境を整えます.
  3. cmdline.txtやconfig.txtを編集しましょう./boot領域はFATなので,Windowsからも見えます.

検証環境

  • Raspberry Pi 3 Model B / Raspbian Jessie (8.0) / Linux kernel 4.4.50-v7+

参考資料

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4