HumansXドキュメントセンター 公式サイトへ ↗

6. SPI インターフェース - 返却データの確認

RDK X5 では、40PIN の物理ピン 19, 21, 23, 24, 26 にチップの SPI1 バスが引き出されており、2 つのチップセレクトに対応しています。IO 電圧は 3.3V です。

SPI の使い方の詳細は、/app/40pin_samples/test_spi.py をご参照ください。

ループバックテスト

MISO と MOSI をハードウェア上で接続してから SPI テストプログラムを実行し、書き込みと読み出しを行います。読み出したデータが書き込んだデータと完全に一致すれば正常です。

ハードウェア接続

ジャンパーキャップで MISO と MOSI を直接ハードウェア上で接続します。

テスト手順

  • python3 /app/40pin_samples/test_spi.py を実行します
  • 表示された SPI コントローラーから、バス番号とチップセレクト番号を入力して選択します。例えば spidev0.0 をテストする場合、bus num と cs num はいずれも 0 です。Enter キーで確定します。
List of enabled spi controllers:
/dev/spidev0.0  /dev/spidev0.1
Please input SPI bus num:0
Please input SPI cs num:0
  • プログラムが正常に動作すると 0x55 0xAA が継続的に表示されます。0x00 0x00 が表示される場合は、SPI のループバックテストに失敗しています。
Starting demo now! Press CTRL+C to exit
0x55 0xAA
0x55 0xAA

テストコード

#!/usr/bin/env python3

import sys
import signal
import os
import time

# 导入spidev模块
import spidev

def signal_handler(signal, frame):
    sys.exit(0)

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

def spidevTest():
    # 设置spi的bus号(0, 1, 2)和片选(0, 1)
    spi_bus = input("Please input SPI bus num:")
    spi_device = input("Please input SPI cs num:")
    # 创建spidev类的对象以访问基于spidev的Python函数。
    spi=spidev.SpiDev()
    # 打开spi总线句柄
    spi.open(int(spi_bus), int(spi_device))

    # 设置 spi 频率为 12MHz
    spi.max_speed_hz = 12000000

    print("Starting demo now! Press CTRL+C to exit")

    # 发送 [0x55, 0xAA], 接收的数据应该也是 [0x55, 0xAA]
    try:
        while True:
            resp = spi.xfer2([0x55, 0xAA])
            print(BytesToHex(resp))
            time.sleep(1)

    except KeyboardInterrupt:
        spi.close()

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    print("List of enabled spi controllers:")
    os.system('ls /dev/spidev*')

    spidevTest()