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
}
]
}通过设备名
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的操作时序请参考 数据手册 或相关教程。
进行设备初始化:
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指令无应答。
读取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编码)。