GPIO 操作指令
对应源码:
components/airlink/include/luat_airlink_drv_gpio.h,components/airlink/src/driver/luat_airlink_drv_gpio.c启用宏:
LUAT_USE_AIRLINK_EXEC_GPIO(主指令),LUAT_USE_AIRLINK_EXEC_GPIO_RESP(异步响应)
GPIO 指令用于在两端之间透明地操作 GPIO 引脚. 主机调用本组指令, 从机实际执行 GPIO 操作并返回结果.
通用 payload 头
所有 driver 指令的 data 字段前 8 字节是 seq_id (uint64_t, 小端, 单调递增), 用于匹配 cmd 0x08 result 回调. 详见 指令层描述.
指令列表
| cmd | 名称 | 方向 | 说明 |
|---|---|---|---|
| 0x300 | gpio_setup | 主→从 | 配置 GPIO 引脚 (模式/上下拉/中断) |
| 0x301 | gpio_set | 主→从 | 设置 GPIO 输出电平 |
| 0x302 | gpio_get | 主→从 | 读取 GPIO 输入电平, 结果通过 cmd 0x310 回调 |
| 0x304 | gpio_driver_yhm27xx | 主→从 | 通过 YHM27xx IO 扩展芯片读写寄存器 |
| 0x305 | gpio_driver_yhm27xx_reqinfo | 主→从 | 查询 YHM27xx 设备信息 |
| 0x310 | gpio_get_result | 从→主 | 异步返回 GPIO 输入电平 (bitmap) |
| 0x311 | gpio_irq_cb | 从→主 | GPIO 中断回调通知 |
各指令详细定义
gpio_setup (0x300)
配置 GPIO 引脚.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| gpio | NB | luat_gpio_t 结构 (含 pin/mode/pull/irq 等) |
引用源码头文件 include/luat_gpio.h 中的 luat_gpio_t 结构定义.
gpio_set (0x301)
设置 GPIO 输出电平.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| pin | 1B | GPIO 引脚号 |
| level | 1B | 输出电平: 0 = 低, 1 = 高 |
gpio_get (0x302)
读取 GPIO 输入电平. 结果通过 cmd 0x310 异步回调, 客户端协程/信号量阻塞等待.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| pin | 1B | GPIO 引脚号 |
约束: 仅当 wifi 固件版本 ≥ 9 时支持 (
src/driver/luat_airlink_drv_gpio.c:74-79).
gpio_driver_yhm27xx (0x304)
通过 YHM27xx IO 扩展芯片读写寄存器.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| Pin | 1B | YHM27xx 所在的 GPIO 引脚 |
| ChipID | 1B | I2C 设备地址 |
| RegAddress | 1B | 寄存器地址 |
| IsRead | 1B | 0 = 写, 1 = 读 |
| Data | 1B | 写入的数据 (IsRead=0 时有效) |
gpio_driver_yhm27xx_reqinfo (0x305)
查询 YHM27xx 设备信息.
| 字段 | 长度 | 含义 |
|---|---|---|
| seq_id | 8B | 序列号 |
| Pin | 1B | YHM27xx 所在的 GPIO 引脚 |
| ChipID | 1B | I2C 设备地址 |
gpio_get_result (0x310)
异步返回 GPIO 输入电平. 响应方向 (从→主).
| 字段 | 长度 | 含义 |
|---|---|---|
| req_pkgid | 8B | 对应 gpio_get 请求的 seq_id |
| result_code | 2B | 0 = 成功, 负值 = 错误 |
| input_level_bitmap | 8B | GPIO 输入电平 bitmap (bit N = pin N 的电平) |
gpio_irq_cb (0x311)
GPIO 中断回调通知. 从机主动发送, 主机订阅相应事件.
| 字段 | 长度 | 含义 |
|---|---|---|
| pin | 1B | 触发中断的 GPIO 引脚 |
| level | 1B | 当前电平 |
| event | 1B | 中断类型 (RISING/FALLING/BOTH) |