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

2023-10-14 06:04

本文主要是介绍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 dolocal data = f:read(4096)if not data or #data == 0 thenbreakendi2s.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 thenlog.info("i2s get data in zbuff")elselog.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)

这篇关于LuatOS-SOC接口文档(air780E)-- i2s - 数字音频的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208656

相关文章

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec