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) 。

选项如下:

-A

指定 ASCII 模式。 读取和写入数据都作为 2 个字符的十六进制值输入和输出,可选用空格分隔,例如 00 01 02 等。 当与 -b 标志结合使用时,stdin 上的数据仍然是 ASCII 十六进制字节值序列,但输出恢复为二进制模式。

-b

二进制 (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) 。

-h

将帮助文本打印到 stderr,解释命令行选项。

-i

将有关 SPI 设备的信息显示到 stderr。 无论何时指定此标志,都不会读取或写入数据,模式和时钟速度也不会改变。

-L

LSB 位顺序。 默认为 MSB,即先发送最高位。 指定 -L 会导致首先传输和读取 LSB。

-m 0|1|2|3

SPI 模式,0 到 3。 根据 SPI 规范,这定义了与读取和写入数据相关的时钟相位和时序。

-s speed

指定 SPI 时钟的最大速度,以 Hz 为单位。 总线将以不超过此最大值的最高可用速度运行。

-v

指定详细模式。 诊断和信息写入标准错误。 您可以多次指定 -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

最后更新于

FreeBSD 中文社区