openSUSE:SPI

跳转到:导航搜索

配置

加载spidev内核模块

为了能够从用户空间访问SPI,您需要在每次启动时加载spidev内核模块。

 modprobe  spidev

要使其在每次启动时自动加载,请创建/etc/modules-load.d/10-spi.conf文件,内容如下

 # Load spidev.ko
 spidev

树莓派

对于任何树莓派,您需要通过将以下行添加到/boot/efi/extraconfig.txt来启用SPI访问

 dtparam=spi=on

此外,有必要手动将spidev驱动程序绑定到/sys/bus/spi/devices/spi*下列出的spi设备,例如这样

 echo spidev > /sys/bus/spi/devices/spi0.0/driver_override
 echo spi0.0 > /sys/bus/spi/drivers/spidev/bind

Raspbian内核上的此问题spidev模块的内核文档包含更多关于为什么有必要的信息。

spi-tools

spi-tools包含一组从命令行访问SPI的工具。

安装

要安装spi-tools,您需要为您的openSUSE版本添加hardware仓库。例如,对于Factory ARM:https://download.opensuse.org/repositories/hardware/openSUSE_Factory_ARM/hardware.repo

也提供一键安装:https://software.opensuse.net.cn/package/spi-tools

列出已注册的SPI设备

ls /dev/spidev*.*将列出在SPI总线上注册的SPI设备。例如,/dev/spidev0.1是SPI总线0上的设备1


检查SPI配置

spi-config -d /dev/spidev0.1 -q将返回SPI总线0上设备1的SPI配置。对于RPi3,它将返回

 /dev/spidev0.1: mode=0, lsb=0, bits=8, speed=125000000

同时读/写

将数据从command_1发送到SPI链路,并将数据从SPI链路接收到command_2

 command_1 | spi-pipe -d /dev/spidev0.1 | command_2

0x010F值发送到SPI总线0上的设备1,频率为10 MHz,并将读取值显示为原始十六进制值的示例

 echo -n -e "\x01\x0F" | spi-pipe -d /dev/spidev0.1 -s 10000000 | hexdump

只读

将数据0发送到SPI链路,并将数据从SPI链路接收到command-2

 spi-pipe -d /dev/spidev0.1 < /dev/zero | command_2

以原始十六进制值从SPI总线0上的设备1读取值的示例,频率为10 MHz

 spi-pipe -d /dev/spidev0.1 -s 10000000 < /dev/zero | hexdump


只写

将数据从command-1发送到SPI链路

 command_1 | spi-pipe -d /dev/spidev0.1

0x010F值发送到SPI总线0上的设备1,频率为10 MHz的示例

 echo -n -e "\x01\x0F" | spi-pipe -d /dev/spidev0.1 -s 10000000


Python spidev

python3-spidev包含一组从python3访问SPI的工具。

安装

要安装python3-spidev,只需从主OSS仓库安装即可。对于Leap 15.1,您需要从devel:languages:python仓库安装它。也提供一键安装:https://software.opensuse.net.cn/package/python3-spidev

示例

配置spidev0.1为10 MHz并在SPI总线上写入0x0F01值的脚本示例

#!/usr/bin/python3

import spidev

# Define which bus/device to access
spi = spidev.SpiDev()
bus = 0
device = 1
spi.open(bus, device)

# Settings
spi.max_speed_hz = 10000000 # 10 MHz
#spi.mode = 0b01

to_send = [0x0F, 0x01]
spi.xfer(to_send)

# Release SPI
spi.close

参见