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

相关文章

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方