Skip to content

SPI ​

在使用SPI指令前,需要先由config指令配置对应的SPI接口和设备,参考 SPI配置。

spi_transmit ​

spi_transmit发起一次SPI设备数据传输。

参数说明 ​

  • device [string] (!) 要操作的SPI设备名(config指令中 spi_device 配置对象的 name 属性值)。
  • encoding [string] (?) 指令数据 data 的编码格式。默认值json。可选值:
    • json - 经JSON转义的字符串,适用于文本数据。
    • base64 - Base64编码的字符串,适用于二进制数据。
    • hex - Hex编码的字符串,适用于二进制数据。
  • data [string] (?) 按照 encoding 格式编码后的数据。
  • read [int] (?) data 数据传输完成后,要继续读取的字节数。默认值0(不读取),最大允许值2048。

样例 ​

以ADXL345数字加速度计为例。首先使用config指令配置总线和设备:

json
{
  "action": "config",
  "spi": [
    {
      "spi_num": 0,
      "mosi": 10,
      "miso": 11,
      "sclk": 12
    }
  ],
  "spi_device": [
    {
      "name": "adxl345",
      "spi_num": 0,
      "mode": 3,
      "cs": 13
    }
  ]
}
  1. 通过设备名adxl345操作ADXL345。例如,读取设备ID:

    json
    {
      "action": "spi_transmit",
      "device": "adxl345",
      "encoding": "hex",
      "data": "80",
      "read": 1
    }

    返回设备ID为E5,应答消息如:

    json
    {
      "type": "spi",
      "device": "adxl345",
      "encoding": "hex",
      "data": "E5"
    }
    • ADXL345的操作时序请参考 数据手册 或相关教程。
  2. 进行设备初始化:

    json
    [
      {
        "action": "spi_transmit",
        "device": "adxl345",
        "encoding": "hex",
        "data": "310B"
      },
      {
        "action": "spi_transmit",
        "device": "adxl345",
        "encoding": "hex",
        "data": "2C0A"
      },
      {
        "action": "spi_transmit",
        "device": "adxl345",
        "encoding": "hex",
        "data": "2D08"
      }
    ]
    • ADXL345的初始化包括三条指令,以指令数组的形式顺序执行。
    • 指令 "data": "310B" - 设置数据格式:全分辨率,±2g量程。
    • 指令 "data": "2C0A" - 设置输出数据速率:100 Hz。
    • 指令 "data": "2D08" - 进入测量模式。
    • 当没有指定 read 参数(默认0)时,spi_transmit指令无应答。
  3. 读取XYZ轴加速度数据(6字节):

    json
    {
      "action": "spi_transmit",
      "device": "adxl345",
      "encoding": "hex",
      "data": "F2",
      "read": 6
    }

    应答消息如:

    json
    {
      "type": "spi",
      "device": "adxl345",
      "encoding": "hex",
      "data": "82000100B700"
    }

提示

spi_transmit 是通用的SPI接口操作指令,而非某个SPI设备的专有指令。在使用特定的SPI设备时,应根据数据手册的时序要求,来确定合适的指令参数。

应答 ​

type-spi 返回从SPI设备读取的数据。数据将按照指令的 encoding 参数进行编码。

json
{
  "type": "spi",
  "device": "adxl345",
  "encoding": "hex",
  "data": "82000100B700"
}
  • type - 数据类型 spi(SPI设备数据)。
  • device - SPI设备名。
  • encoding - 数据编码(即指令中 encoding 参数指定的编码)。
  • data - 编码后的数据(此处为hex编码)。