spi.8
SPI(8)
SPI(8)
FreeBSD System Manager's Manual
SPI(8)
spi
—
在 SPI 总线上与从设备通信
spi
[-A
] [-b
] [-L
] [-v
] [-C
command-bytes] [-c
count] [-d
r
|w
|rw
] [-f
device] [-m
mode] [-s
max-speed] spi
[-i
] [-v
] [-f
device] spi
[-h
]
spi
实用程序可用于通过 spigen(4) 设备与 SPI 总线上的设备执行原始数据传输 (读取、写入或同时读取/写入) 。
每个 spigen(4) 设备都与 spibus 上的特定 “chip select” (cs) 引脚相关联,因此需要指定。 如果在命令行上没有指定设备名称, spi
假定为 “spigen0.0” 。
有关 spigen 设备的更多信息,请参阅 spigen(4) 。
选项如下:
指定 ASCII 模式。 读取和写入数据都作为 2 个字符的十六进制值输入和输出,可选用空格分隔,例如 00 01 02 等。 当与 -b
标志结合使用时,stdin 上的数据仍然是 ASCII 十六进制字节值序列,但输出恢复为二进制模式。
二进制 (output) 模式。 仅在指定 -A
时有效。 将输出恢复为二进制 (而不是 ASCII) , 同时保持输入格式不变。 与 -A
结合使用以允许使用 “echo” 之类的东西将十六进制值传递给 SPI 设备,但将接收到的数据以二进制形式输出到 stdout。
-C
command-bytes
发送一个或多个命令字节,跳过传输期间读入的任何字节。 字节值应指定为带引号的参数,类似于 -A
的标准输入上的数据格式,即 2 个字符的十六进制值,可选用空格分隔。 SPI 设备通常需要发送命令,然后是数据字节。 您可以使用此选项在命令序列期间发送命令而不接收任何数据字节。
-c
count
作为十进制整数传输的总字节数。 如果正在执行写或读/写事务,并且从 stdin 读入的字节数少于此数量,则剩余字节将以 “0” 值发送。 如果可以根据输入文件大小确定长度,则可以使用 count 值 “-1” 来根据输入文件的大小进行传输。
-d
r
|w
|rw
传输方向 r
读, w
写, rw
同时读写。
-f
device
要使用的 SPI 设备 (默认为 /dev/spigen0) 。
将帮助文本打印到 stderr,解释命令行选项。
将有关 SPI 设备的信息显示到 stderr。 无论何时指定此标志,都不会读取或写入数据,模式和时钟速度也不会改变。
LSB 位顺序。 默认为 MSB,即先发送最高位。 指定 -L
会导致首先传输和读取 LSB。
-m
0
|1
|2
|3
SPI 模式,0 到 3。 根据 SPI 规范,这定义了与读取和写入数据相关的时钟相位和时序。
-s
speed
指定 SPI 时钟的最大速度,以 Hz 为单位。 总线将以不超过此最大值的最高可用速度运行。
指定详细模式。 诊断和信息写入标准错误。 您可以多次指定 -v
以增加详细程度。
以下是使用 spi 实用程序的几个示例:
获取有关默认 SPI 设备的信息
spi -i
在spigen0.1上设置最大时钟速度为200Khz,模式为3,但不发送也不接收任何数据
spi -f spigen0.1 -s 200000 -m 3
使用默认设备上的当前模式和速度发送一个包含 2 个字节的命令序列,并从 SPI 设备读取 2 个附加字节
spi -d r -C "00 01" -c 2
发送一个字节值 5,接收 2 个字节,将它们的值显示为 2 字节 ASCII 十六进制,模式 2,最大时钟速度为 500khz。
echo "05" | spi -A -d rw -m 2 -s 500000 -c 2
发送一个二进制文件,通过 od(1) 将SPI结果输出为十六进制字节,使用当前最大时钟速度和SPI模式。
spi -d rw -c -1 <input_file.bin | od -An -t x1
发送 2 个字节的数据,总共接收 4 个字节,将 SPI 结果输出为二进制数据,通过 od(1) 管道传输,显示为两个十六进制无符号短整数值。
echo "00 01" | spi -A -b -d rw -c 4 | od -t x2
通过发送命令字节 0x9f 并以 ASCII 十六进制显示 3 字节回复,从标准 spiflash 设备查询制造商 ID 和大小。
spi -f spigen0.0 -m 0 -s 1000000 -d r -c 3 -A -C 9f
spigen(4)
spi
实用程序出现在 FreeBSD 11.3 中。
August 21, 2020
FreeBSD 13.1-RELEASE
最后更新于