Jetson NanoでSPIを有効にする

Jetson NanoでSPI通信をしたいと思ったのですが、どうやら初期状態ではSPIは無効になっているとのこと。そこで、SPIを有効にする方法を調べてみました。

Linux PCでJetson Nanoの設定を書き換える

まず、見つけたのはこちらのページ。

Jetsonのデバイスツリーを書き換える方法のようです。前提条件として、Jetson NanoにはL4T(Linux for Tegra) R32.1がインストールしてあり、起動できるようにしておくことが必要です。
あとはこのページに書いてある通りに進めればいいのですが、こちらで紹介されているやり方では、Jetson Nanoとは別にLinux PCが必要になります。

Linux PCをお持ちの方はこちらの方法で試してみてください。
上記のページで作者の方も述べていますが、あくまで非公式のやり方なので、自己責任でお願いします。

Jetson Nano単体で設定を書き換える

次に見つけたのは、こちらのページ。

こちらは、上で紹介した方法を改良したやり方になります。筆者が書いているように、Jetson NanoだけあればSPIを有効にできる方法です。

詳細なやり方は、こちらに書かれているのでその通りにやればSPI通信を有効かできます。しかし、英語なので日本語に訳したメモをここに残しておきます。

1.最新版のtarファイルをこちらからダウンロードして、Jetson Nanoに保存します。この記事を書いた時点では、flash-dtb-update-2019-12-09.tar.gzが最新です。

2.ダウンロードしたtarファイルを解凍します。

3.Jetson Nanoのターミナルを開き、解凍したディレクトリに移動して、

sudo ./flashme.sh /dev/mmcblk0

を実行します。

 

4.Jetson Nanoを再起動すると、spidev0.0が有効になっています。
有効になっているかどうか確認するには、

ls /dev/spi*

を実行してください。有効化されていれば、dev/spidev0.0と返ってきます。

SPI通信のループバックテスト

 

SPIを有効化することが出来たので、SPI通信のテストをしましょう。

まずは、pythonのSPI通信モジュール、py-spidevをインストールします。

git clone git://github.com/doceme/py-spidev
cd py-spidev
sudo python setup.py install

次にループバックテストをします。Jetson NanoのSPI通信に関するピンは次の表のようになっています。

名称 ピン番号
SPI_MOSI 19
SPI_MISO 21
SPI1_SCK 23
SPI1_CS0 24
SPI1_CS1 26

ループバックテストの時には、MOSIとMISOをつなぐ、すなわちピン19と21をつなぎます。

ループバックテストのプログラムはこちらで紹介されているものを使います。


#!/usr/bin/env python

# loopback test script
# connect MOSI and MISO

import spidev
import time

spi = spidev.SpiDev()
spi.open(0, 0)

def BytesToHex(Bytes):
return ''.join(["0x%02X " % x for x in Bytes]).strip()

try:
while True:
resp = spi.xfer2([0x01, 0x02])
print BytesToHex(resp)
time.sleep(1)

except KeyboardInterrupt:
spi.close()

このプログラムをJetson Nano上で実行すると、1秒おきに”0x01 0x02″と表示されます。

以上が、Jetson NanoでSPI通信を有効にするやり方と、ループバックテストで確認するやり方の紹介になります。

sciencompass34 has written 118 articles

はじめまして!”あおやぎ”と言います。
メーカーで研究開発の仕事をしています。このブログでは、私の専門分野である半導体やそれに関連する内容を紹介していきます。
半導体関連の知識をまとめたデータベースのようにしたいなと思っています。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください