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_numconsti2s_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_numconst void *src, size_t size, TickType_t ticks_to_wait)

esp_err_ti2s_write(i2s_port_ti2s_numconst 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的更多相关文章

  1. [IOT] 自制蓝牙工牌办公室定位系统 (二)—— 基于ESP32的蓝牙信号扫描系统

      前面章节: 自制蓝牙工牌办公室定位系统 (一)-- 阿里物联网平台概览及打通端到云(硬核·干货)   目录: 1.蓝牙广播简介 2.蓝牙扫描简介 3.基于蓝牙广播和蓝牙扫描常见应用 4.ESP32 ...

  2. ESP32 DAC

    ESP32有两个DAC通道,通道1链接GPIO25, 通道2链接GPIO26; 当DAC设置为 “built-in DAC mode”的时候,I2S可以通过DAC发送数据: 使用示例: dac_out ...

  3. ESP32 LyraT音频开发板试玩(二):播放音乐

    我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 本文延续上一篇博客 将D:\msys32\ ...

  4. ESP32引脚参考(转)

    ES​P32芯片配有48个具有多种功能的引脚.并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用. 关于如何使用ESP32 GPIO有很多问题.你应该用什么pin?在项目中应该避免使用哪 ...

  5. ESP32音频输入-MAX4466,MAX9814,SPH0645LM4H,INMP441(翻译)

    有几种方法可以将模拟音频数据输入到ESP32中. 直接从内置的模数转换器(ADC)读取 这对于一次性读取很有用,但不适用于高采样率. 使用I2S通过DMA读取内置ADC 适用于模拟麦克风,例如MAX4 ...

  6. I2S/PCM/IOM-2、I2C/SPI/UART/GPIO/slimbus

    概述 I2S,PCM,IOM-2都是数字音频接口,传数据的. I2C,SPI,UART,GPIO是控制接口,传控制信令的. I2S I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频 ...

  7. 转I2s

    转自http://blog.csdn.net/ce123/article/details/6919954 I2S音频总线学习(二)I2S总线协议 一.I2S总线概述 音响数据的采集.处理和传输是多媒体 ...

  8. I2S (Inter—IC Sound) 总线

    I2S I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多 ...

  9. I2C I2S SPDIF

    I2C总线 大多数是用于电视机等家用电器的(显卡与显示器之间的通讯也是)I2S: I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输 ...

随机推荐

  1. vue路由传参的三种基本方式

    现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据. 父组件中: <li v-for="article in articles" @click= ...

  2. 微信小程序实现验证码倒计时效果

    效果图 wxml <input class='input-pwd' placeholder="新密码" placeholder-style='color: #000' pas ...

  3. 洛谷P3721 [AH2017/HNOI2017]单旋(线段树 set spaly)

    题意 题目链接 Sol 这题好毒瘤啊.. 首先要观察到几个性质: 将最小值旋转到根相当于把右子树变为祖先的左子树,然后将原来的根变为当前最小值 上述操作对深度的影响相当于右子树不变,其他的位置-1 然 ...

  4. 【Java入门提高篇】Day27 Java容器类详解(九)LinkedList详解

    这次介绍一下List接口的另一个践行者——LinkedList,这是一位集诸多技能于一身的List接口践行者,可谓十八般武艺,样样精通,栈.队列.双端队列.链表.双向链表都可以用它来模拟,话不多说,赶 ...

  5. (后端)org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1,actual 0

    两种方案: 用queryForList方法替换queryForObject或者queryForMap,因为这两个方法必须要有值,不能为空. 把这个异常捕获,用try/catch. 这个查询的结果是nu ...

  6. [20180413]热备模式相关问题2.txt

    [20180413]热备模式相关问题2.txt --//上午测试热备模式相关问题,就是如果打开热备模式,如果中间的归档丢失,oracle在alter database end   backup ;时并 ...

  7. 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数

    1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...

  8. oracle权限管理学习

      Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户pub ...

  9. 理解inode 以及 软链接和硬链接概念区分

    inode简单理解 本文来源自网络文章,并针对文章内容加以批注和修改.希望能帮到你! 一. 磁盘设备 说到inode,首先必须要提及下<操作系统>中磁盘存储器的管理一节.磁盘设备是一种相当 ...

  10. Linux 修改用户组后,如何关闭所有 X session 下使得组生效?

    最近在使用 docker-ce ,在配置当前用户组为 docker 的时候(sudo usermod -aG docker $USER)发现:必须要关闭当前的 session 重新登录 后,才能使得修 ...