LuatOS-SOC接口文档(air780E)-- i2s - 数字音频

示例

复制代码
-- 这个库属于底层适配库, 具体用法请查阅示例
-- demo/multimedia
-- demo/tts
-- demo/record

常量

常量 类型 解释
i2s.MODE_I2S number I2S标准,比如ES7149
i2s.MODE_LSB number LSB格式
i2s.MODE_MSB number MSB格式,比如TM8211

i2s.setup(id, mode, sample, bitw, channel, format, mclk)

初始化i2s

参数

传入值类型 解释
int i2s通道号,与具体设备有关
int 模式, 当前仅支持0, MASTER|TX|RX 模式, 暂不支持slave. 可选
int 采样率,默认44100. 可选
int 数据位数,默认16, 可以是8的倍数
int 声道, 0 左声道, 1 右声道, 2 双声道. 可选
int 格式, 可选MODE_I2S, MODE_LSB, MODE_MSB
int mclk频率, 默认 8M. 可选

返回值

返回值类型 解释
boolean 成功与否
int 底层返回值

例子

复制代码
-- 以默认参数初始化i2s
i2s.setup(0)
-- 以详细参数初始化i2s, 示例为默认值
i2s.setup(0, 0, 44100, 16, 0, 0, 8000000)

i2s.send(id, data, len)

发送i2s数据

参数

传入值类型 解释
int 通道id
string 数据, 可以是字符串或zbuff
int 数据长度,单位字节, 字符串默认为字符串全长, zbuff默认为指针位置

返回值

返回值类型 解释
boolean 成功与否
int 底层返回值,供调试用

例子

复制代码
local f = io.open("/luadb/abc.wav")
while 1 do
    local data = f:read(4096)
    if not data or #data == 0 then
        break
    end
    i2s.send(0, data)
    sys.wait(100)
end

i2s.recv(id, buffer, len)

接收i2s数据,注意在数据在回调时已经存放在zbuff里,目前只有air780e系列支持

参数

传入值类型 解释
int 通道id
zbuff 数据缓存区
int 单次返回的数据长度,单位字节,必须与传入的zbuff的大小一致

返回值

返回值类型 解释
boolean 成功与否

例子

复制代码
local buffer = zbuff.create(3200)
local succ = i2s.recv(0, buffer, 3200);

i2s.close(id)

关闭i2s

参数

传入值类型 解释
int 通道id

返回值

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

例子

复制代码
i2s.close(0)

i2s.on(id, func)

注册I2S事件回调

参数

传入值类型 解释
int i2s id, i2s0写0, i2s1写1
function 回调方法

返回值

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

例子

复制代码
i2s.on(0, function(id, buff)
	if buff then
		log.info("i2s get data in zbuff")
	else
		log.info("i2s tx one block done")
	end
end)

i2s.txStat(id)

获取i2s的发送缓冲区状态

参数

传入值类型 解释
int i2s id, i2s0写0, i2s1写1
return 底层缓冲区的总大小
return 底层缓冲区的剩余待发送数据

返回值

例子

复制代码
-- 读取发送缓冲区的状态, 从而判断是否需要继续传入音频数据
local max, remain = i2s.txStat(0)
log.info("i2s发送缓冲区状态", max, remain)
相关推荐
合宙Luat4 个月前
Air780EP模块 LuatOS开发-MQTT接入阿里云应用指南
阿里云·云计算·合宙·air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--rsa - RSA加密解密
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--rtos - RTOS底层操作库
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--repl - “读取-求值-输出” 循环
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--pwm - PWM模块
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--protobuf - ProtoBuffs编解码
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--otp - OTP操作库
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--os - os操作
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--pack - 打包和解包格式串
air780e