Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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+

参考資料

no_clock
P2P地震情報とかも作ってます.
https://www.nyamikan.net/
m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした