i2s - 数字音频#

已适配 Air780E/Air700E Air780EP/Air780EPV Air601 Air101/Air103

备注

本页文档由这个文件自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!

小技巧

本库有专属demo,点此链接查看i2s的demo例子

示例

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

常量#

常量

类型

解释

i2s.MODE_I2S

number

I2S标准,比如ES7149

i2s.MODE_LSB

number

LSB格式

i2s.MODE_MSB

number

MSB格式,比如TM8211

i2s.MONO_L

number

左声道

i2s.MONO_R

number

右声道

i2s.STEREO

number

立体声

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

初始化i2s

参数

传入值类型

解释

int

i2s通道号,与具体设备有关

int

模式, 0 主机 1 从机

int

采样率,默认44100. 可选

int

数据位数,默认16, 可以是8的倍数

int

声道, 0 左声道, 1 右声道, 2 立体声. 可选

int

格式, 可选MODE_I2S, MODE_LSB, MODE_MSB

int

1个声道的BCLK数量, 可选16和32

返回值

返回值类型

解释

boolean

成功与否

int

底层返回值

例子

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

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)

i2s.getPara(id)#

获取I2S参数,参数具体参考setup

参数

传入值类型

解释

int

通道id

返回值

返回值类型

解释

boolean

是否在工作状态 true是

int

模式, 0 主机 1 从机

int

采样率

int

数据位数

int

声道

int

格式

int

1个声道的BCLK数量

例子