ESP32 I2S
I2S支持DMA;
I2S可以直接利用DAC来输出模拟信号 (GPIO 25 & GPIO 26);
高精度时钟使能参数: .use_apll = true
ESP32配置外设一般都是配置一个结构体,I2S也不例外:
static const i2s_config_t i2s_config = {
.mode = I2S_MODE_MASTER | I2S_MODE_TX,
.sample_rate = 44100,
.bits_per_sample = 16,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB,
.intr_alloc_flags = 0, // default interrupt priority
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false
};
I2S可以经由多个GPIO输出多路信号,但是输入信号只能由一个GPIO输入;
esp_err_t i2s_set_pin(i2s_port_t i2s_num, const i2s_pin_config_t *pin)
这个函数有两个参数,第一个参数就是I2S的接口号,第二个参数是pin_config的结构体初始化,如果第二个结构体参数是NULL的话,就默认设置GPIO25&GPIO26引脚,也就是说内置的两个DAC都会被初始化;
下面这个API函数用于设置I2S的DAC模式,一般情况下I2S的内置DAC是被默认不激活的;
esp_err_ti2s_set_dac_mode(i2s_dac_mode_tdac_mode)
内置的DAC至支持I2S1
下面这个API函数在I2S读写之前必须被引用,这个函数安装I2S驱动:
esp_err_ti2s_driver_install(i2s_port_ti2s_num, consti2s_config_t *i2s_config, int queue_size, void *i2s_queue)
下面这个函数就是卸载I2S驱动,用完了就卸载:
esp_err_ti2s_driver_uninstall(i2s_port_ti2s_num)
下面这个函数用来向DMA写数据,但是这个函数可能被官方取消,以后用I2S_write来取代:
int i2s_write_bytes(i2s_port_ti2s_num, const void *src, size_t size, TickType_t ticks_to_wait)
esp_err_ti2s_write(i2s_port_ti2s_num, const void *src, size_t size, size_t *bytes_written, TickType_t ticks_to_wait)
下面这个函数用于设置传输速率,RX&TX都管用哦,
esp_err_ti2s_set_sample_rates(i2s_port_ti2s_num, uint32_t rate)
下面两个函数分别是结束和开始I2S驱动:
esp_err_ti2s_stop(i2s_port_ti2s_num)
esp_err_ti2s_start(i2s_port_ti2s_num)
下面这个函数是清空I2S的DMA缓存:
esp_err_ti2s_zero_dma_buffer(i2s_port_ti2s_num)
ESP32 I2S的更多相关文章
- [IOT] 自制蓝牙工牌办公室定位系统 (二)—— 基于ESP32的蓝牙信号扫描系统
前面章节: 自制蓝牙工牌办公室定位系统 (一)-- 阿里物联网平台概览及打通端到云(硬核·干货) 目录: 1.蓝牙广播简介 2.蓝牙扫描简介 3.基于蓝牙广播和蓝牙扫描常见应用 4.ESP32 ...
- ESP32 DAC
ESP32有两个DAC通道,通道1链接GPIO25, 通道2链接GPIO26; 当DAC设置为 “built-in DAC mode”的时候,I2S可以通过DAC发送数据: 使用示例: dac_out ...
- ESP32 LyraT音频开发板试玩(二):播放音乐
我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 本文延续上一篇博客 将D:\msys32\ ...
- ESP32引脚参考(转)
ESP32芯片配有48个具有多种功能的引脚.并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用. 关于如何使用ESP32 GPIO有很多问题.你应该用什么pin?在项目中应该避免使用哪 ...
- ESP32音频输入-MAX4466,MAX9814,SPH0645LM4H,INMP441(翻译)
有几种方法可以将模拟音频数据输入到ESP32中. 直接从内置的模数转换器(ADC)读取 这对于一次性读取很有用,但不适用于高采样率. 使用I2S通过DMA读取内置ADC 适用于模拟麦克风,例如MAX4 ...
- I2S/PCM/IOM-2、I2C/SPI/UART/GPIO/slimbus
概述 I2S,PCM,IOM-2都是数字音频接口,传数据的. I2C,SPI,UART,GPIO是控制接口,传控制信令的. I2S I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频 ...
- 转I2s
转自http://blog.csdn.net/ce123/article/details/6919954 I2S音频总线学习(二)I2S总线协议 一.I2S总线概述 音响数据的采集.处理和传输是多媒体 ...
- I2S (Inter—IC Sound) 总线
I2S I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多 ...
- I2C I2S SPDIF
I2C总线 大多数是用于电视机等家用电器的(显卡与显示器之间的通讯也是)I2S: I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输 ...
随机推荐
- Django Rest framework 之 序列化
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- 安装SQL server 2016遇到问题
microsoft R open https://mran.microsoft.com/download/ https://mran.revolutionanalytics.com/download/ ...
- CSS格式化排版--排版
1.文字排版--字体:利用font-family设置字体,注意设置的字体必须是本地电脑中存在的字体. 例子:class="MicrosoftYahei"的h1标签的字体设置为 宋体 ...
- JavaSE 集合概述
1.对象的存储: 数组(基本数据类型 & 引用数据类型) 集合(引用数据类型) 2.集合框架 Collection 接口: 方法: iterator().toArray(); 迭代器遍历集合 ...
- Android Studio:Support Library依赖包的版本号
当我们用RecyclerView时,如果想用某一个特定的版本,怎样才能知道版本号呢?如果自己的笔记本中用过这个库,那么会保存在本地硬盘中. Android自身依赖包的版本号本地存放路径: 没有用过该 ...
- MySQL8的注意点
最近使用MySQL8,发现两个问题,略记如下: 1. 新建用户无法使用JDBC或者Navicat等登陆,报错信息为 认证失败 ,原因为 新版 MySQL 认证插件变化(变为caching_sha2_p ...
- 慕学在线网0.5_xadmin的全局配置
全局配置包括了以下修改: 开启主题功能: 修改左上角的"django Xadmin"和主界面的"我的公司": App菜单收叠: App名字修改(汉化). 1.把 ...
- IE push方法,最后一个参数后面不能跟",",否则报语法错误
var columns = [[]]; columns[0].push( { field: 'ADDNAME', title: '添加人', width: 80, }, { field: 'ADDDT ...
- json数据 二级联动
<head> <link href="static/bootstrap-3.3.5-dist/css/bootstrap.css" rel="style ...
- 面向对象的封装与隐藏 this
当我们创建一个对象的时候,我们可以通过‘对象.属性’的方式,对对象的属性进行赋值. 这里赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件. 但是实际问题中我们需要给这个属性 ...