跳转至

airlink - AirLink(设备间通讯协议)

示例

-- 本库仅部分BSP支持, 通信形式以设备内SPI/设备间UART/设备间UART通信为主要载体
-- 主要是 Air8000 和 Air780E 系列
-- 详细用法请参考demo

常量

常量 类型 解释
airlink.MODE_SPI_SLAVE number airlink.start参数, SPI从机模式
airlink.MODE_SPI_MASTER number airlink.start参数, SPI主机模式
airlink.MODE_UART number airlink.start参数, UART模式
airlink.CONF_SPI_ID number SPI配置参数, 设置SPI的ID
airlink.CONF_SPI_CS number SPI配置参数, 设置SPI的CS脚的GPIO
airlink.CONF_SPI_RDY number SPI/UART配置参数, 设置RDY脚的GPIO
airlink.CONF_SPI_IRQ number SPI/UART配置参数, 设置IRQ脚的GPIO
airlink.CONF_IRQ_TIMEOUT number SPIUART配置参数, 设置IRQ模式的等待超时时间

airlink.init()

初始化AirLink

参数

返回值

返回值类型 解释
nil 无返回值

例子

-- 对于Air8000, 本函数已自动执行, 无需手动调用
-- 对于Air780EPM+Air8101的组合, 需要执行一次
airlink.init()

airlink.start(mode)

启动AirLink

参数

传入值类型 解释
int mode 0: SPI从机模式 1: SPI主机模式 2: UART模式

返回值

返回值类型 解释
nil 无返回值

例子

-- 对于Air8000, 本函数已自动执行, 无需手动调用
-- 对于Air780EPM+Air8101的组合, 需要执行一次
-- Air780EPM作为SPI主机
airlink.start(airlink.MODE_SPI_MASTER)
-- Air8101作为SPI从机
airlink.start(airlink.MODE_SPI_SLAVE)

airlink.stop(mode)

关闭AirLink

参数

传入值类型 解释
int mode 0: SPI从机模式 1: SPI主机模式 2: UART模式

返回值

返回值类型 解释
nil 无返回值

例子

-- 本函数当前无任何功能, 只做预留

airlink.test(count)

发送测试指令(nop空指令)

参数

传入值类型 解释
int count 发送次数

返回值

返回值类型 解释
nil 无返回值

例子

-- 本函数仅供内部测试使用
airlink.test(10)

airlink.statistics()

打印统计信息

参数

返回值

返回值类型 解释
nil 无返回值

例子

-- 调试用途, 可周期性调用
airlink.statistics()

airlink.slave_reboot()

重启从机

参数

返回值

返回值类型 解释
nil 无返回值

例子

-- 调试用途, 可重启从机
airlink.slave_reboot()

airlink.sdata(data)

发送自定义数据

参数

传入值类型 解释
string/zbuff 待传输的自定义数据,可以是字符串, 可以是zbuff

返回值

返回值类型 解释
nil 无返回值

例子

-- 本函数用于传递自定义数据到对端设备, 通常用于Air8101+Air780EPM的场景
airlink.sdata("hello world")

airlink.ready()

判断是否就绪

参数

返回值

返回值类型 解释
bool 是否就绪

例子

-- 判断AirLink是否就绪, 指底层通信是否通畅, 最近一次通信是否超时(默认2s)
-- 本函数仅用于判断AirLink是否就绪, 不能用于判断是否收到数据
if airlink.ready() then
    log.info("airlink", "已经就绪")
else
    log.info("airlink", "尚未就绪")
end

airlink.config(key, value)

配置AirLink的参数

参数

传入值类型 解释
int key 配置项, 参考airlink的常数项
int value 配置值

返回值

返回值类型 解释
bool 成功返回true, 失败返回nil

例子

--配置AirLink的SPI ID为1, CS引脚为10, RDY引脚为11, IRQ引脚为12
airlink.config(airlink.CONF_SPI_ID, 1)
airlink.config(airlink.CONF_SPI_CS, 10)
airlink.config(airlink.CONF_SPI_RDY, 11)
airlink.config(airlink.CONF_SPI_IRQ, 12)

airlink.sfota(path)

升级从机固件

参数

传入值类型 解释
string 升级文件的路径

返回值

返回值类型 解释
bool 成功返回true, 失败返回nil

例子

-- 注意, 升级过程是异步的, 耗时1~2分钟, 注意观察日志
airlink.sfota("/luadb/air8000s_v5.bin")
-- 注意, 升级过程中, 其他任何指令和数据都不再传输和执行!!!

airlink.debug(mode)

调试开关

参数

传入值类型 解释
int mode 0: 关闭调试 1: 打开调试

返回值

返回值类型 解释
nil 无返回值

例子

-- 打开调试(默认是关闭状态)
airlink.debug(1)

airlink.pause(mode)

暂停或回复airlink通信

参数

传入值类型 解释
int mode 0: 恢复 1: 暂停

返回值

返回值类型 解释
nil 无返回值

例子

-- 仅当airlink运行在轮询模式, 需要暂停时使用, 通常是为了休眠
airlink.pause(1)

airlink.irqmode(mode, master_gpio, slave_gpio)

开启中断模式

参数

传入值类型 解释
int mode false: 禁用 true: 启用
int master_gpio 主机引脚, 建议使用GPIO20
int slave_gpio 从机引脚, Air8000使用GPIO140, Air8101使用GPIO28

返回值

返回值类型 解释
nil 无返回值

例子

-- 默认情况下, airlink工作在轮询模式, 周期性查询数据
-- 开启中断模式后, 从机有新数据时, 会在slave_gpio上产生一个下升沿+上升沿中断
airlink.irqmode(true, 20, 140)
-- 注意, 开启本模式, 外部接线必须稳固, 否则各种airlink相关操作都会异常

airlink.power(enable)

关闭airlink相关供电

参数

传入值类型 解释
boolean enable true: 使能 false: 禁用

返回值

返回值类型 解释
nil 无返回值

例子

-- 关闭airlink相关供电, 通常用于省电
-- 当前仅对Air8000带wifi功能的模组有效
-- 关闭之后, 如需使用wifi功能, 需要重新执行wifi.init等操作
-- 注意, wifi供电关掉后, >=128的GPIO也会变成输入高阻态
airlink.power(false)
-- 开启wifi芯片,恢复airlink通信
airlink.power(true)