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

相关文章

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进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1