# spi.8

SPI(8)

SPI(8)

FreeBSD System Manager's Manual

SPI(8)

## [名称](#__u540D___u79F0_)

`spi` —

在 SPI 总线上与从设备通信

## [概要](#__u6982___u8981_)

`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`]

## [描述](#__u63CF___u8FF0_)

`spi` 实用程序可用于通过 spigen(4) 设备与 SPI 总线上的设备执行原始数据传输 (读取、写入或同时读取/写入) 。

每个 spigen(4) 设备都与 spibus 上的特定 “chip select” (cs) 引脚相关联，因此需要指定。 如果在命令行上没有指定设备名称, `spi` 假定为 “spigen0.0” 。

有关 spigen 设备的更多信息，请参阅 spigen(4) 。

选项如下：

[`-A`](#A)

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

[`-b`](#b)

二进制 (output) 模式。 仅在指定 `-A` 时有效。 将输出恢复为二进制 (而不是 ASCII) , 同时保持输入格式不变。 与 `-A` 结合使用以允许使用 “echo” 之类的东西将十六进制值传递给 SPI 设备，但将接收到的数据以二进制形式输出到 stdout。

[`-C`](#C) command-bytes

发送一个或多个命令字节，跳过传输期间读入的任何字节。 字节值应指定为带引号的参数，类似于 `-A` 的标准输入上的数据格式，即 2 个字符的十六进制值，可选用空格分隔。 SPI 设备通常需要发送命令，然后是数据字节。 您可以使用此选项在命令序列期间发送命令而不接收任何数据字节。

[`-c`](#c) count

作为十进制整数传输的总字节数。 如果正在执行写或读/写事务，并且从 stdin 读入的字节数少于此数量，则剩余字节将以 “0” 值发送。 如果可以根据输入文件大小确定长度，则可以使用 count 值 “-1” 来根据输入文件的大小进行传输。

[`-d`](#d) `r`|`w`|`rw`

传输方向 `r` 读, `w` 写， `rw` 同时读写。

[`-f`](#f) device

要使用的 SPI 设备 (默认为 /dev/spigen0) 。

[`-h`](#h)

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

[`-i`](#i)

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

[`-L`](#L)

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

[`-m`](#m) `0`|`1`|`2`|`3`

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

[`-s`](#s) speed

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

[`-v`](#v)

指定详细模式。 诊断和信息写入标准错误。 您可以多次指定 `-v` 以增加详细程度。

## [实例](#__u5B9E___u4F8B_)

以下是使用 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

## [参见](#__u53C2___u89C1_)

spigen(4)

## [历史](#__u5386___u53F2_)

`spi` 实用程序出现在 FreeBSD 11.3 中。

August 21, 2020

FreeBSD 13.1-RELEASE
