628|0

28

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【匠芯创D133CBS】音频播放之I2S(IIS)驱动外置CODEC [复制链接]

 
本帖最后由 没有口袋的哆啦 于 2024-9-6 18:35 编辑

            大家好,我又来了

这一章我们要学习的内容是I2S也可以叫IIS,学名叫做数字音频传输标准,IIS协议是一种串行协议,他和SPI有一点点像,通常用来传输音频数据流,由飞利浦发明。支持单工、半双工、全双工传输模式,支持主从机模式,支持多声道。

不过随着技术的发展,在统一的I2S硬件接口下,出现了多种不同的I2S数据格式,可分为左对齐(MSB)标准、右对齐(LSB)标准、I2S Philips 标准、PCM协议(PCM严格来说不属于IIS协议)。

对于所有数据格式和通信标准而言,始终会先发送最高有效位(MSB 优先)。

发送端和接收端必须使用相同的数据格式,确保发送和接收的数据一致。

 

(1).I2S Philips 标准

使用LRCLK信号来指示当前正在发送的数据所属的声道,为0时表示左声道数据。LRCLK信号从当前声道数据的第一个位(MSB)之前的一个时钟开始有效。LRCLK信号在BCLK的下降沿变化。发送方在时钟信号BCLK的下降沿改变数据,接收方在时钟信号BCLK的上升沿读取数据。正如上文所说,LRCLK频率等于采样频率Fs,一个LRCLK周期(1/Fs)包括发送左声道和右声道数据。

对于这种标准I2S格式的信号,无论有多少位有效数据,数据的最高位总是出现在LRCLK变化(也就是一帧开始)后的第2个BCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。

(2).左对齐(MSB)标准

在LRCLK发生翻转的同时开始传输数据。该标准较少使用。注意此时LRCLK为1时,传输的是左声道数据,这刚好与I2S Philips标准相反。

(3).右对齐(LSB)标准

声音数据LSB传输完成的同时,LRCLK完成第二次翻转(刚好是LSB和LRCLK是右对齐的,所以称为右对齐标准)。注意此时LRCLK为1时,传输的是左声道数据,这刚好与I2S Philips标准相反。

(4).PCM协议

PCM接口和I2S接口引脚一致 - 帧同步时钟、位时钟,主要有两种模式:短帧、长帧。

 

I2S信号线:

I2S总线主要有3个信号线:

(1).串行时钟BCK

串行时钟BCK,对应数字音频的每一位数据,BCK都有1个脉冲。BCK的频率 = 声道数 * 采样频率 * 采样位数。

(2).字段选择信号LRCK

字段选择信号LRCK,也叫WS,用于切换左右声道的数据。WS的频率 = 采样频率。

字段选择信号LRCK表明了正在被传输的声道。I2S Philips标准WS信号的电平含义如下:

LRCK为0,表示正在传输的是左声道的数据;

LRCK为1,表示正在传输的是右声道的数据。

(3).数据线DOU、DIN

串行数据DOU、DIN,就是用二进制补码表示的音频数据。I2S串行数据在传输的时候,由高位(MSB)到低位(LSB)依次进行传输

除以上这些信号线外还有一个MCLK,这是用于给codec提供主时钟的,部分codec不需要使用它

 

 

IIS我们了解了后再来看codec,codec其实就是一个DAC芯片,我采用的codec型号是TM8211,因为它性价比非常高,板子是我自己制作的。它支持16bit的双声道音频输出,我还在输出端添加了两个音频功放,这样就能直接驱动扬声器了。

它的接线端子排列从左到右分别是:EN、5V、GND、DIN、LRCK、BCK

我们只需要将GND、DIN、LRCK、BCK这些信号线连接到板卡即可,EN默认是可用状态,供电我们使用另外的电源就行

然后再来看软件部分,由于匠芯创官方在SDK中并没有适配我所使用的codec所以我们得自己动手了,因为codec类型太多官方不可能都适配完,不过官方支持了大部分热门的型号,然后经过楼主1天得折腾, 终于实现了。(匠芯创官方可以看看我适合当FAE不,正好最近在找工作,哈哈哈

代码主要就两部分,IIS配置和数据读取搬运

这一部分就是IIS配置代码,首先将IIS配置为主机模式,然后将协议标准配置为右对齐标准,时钟相位为低,通道数、数据宽度这些动态获取即可,然后启动DMA传输,这样更省CPU资源

配置好后我们只需要循环的给IIS”喂“数据即可

然后再来看看效果,比PWM音频的音质略好一点,不过各有优缺点,PWM成本低,对于一般的应用可以满足要求,IIS成本略微高一点但是可以满足较高的应用要求。

7d1ca64ac85ed79861475c935be1adea

 

欢迎大家评论留言,你们的支持就是我的动力,下一章我们来学习MP3解码, 

需要本章节示例代码的请私信获取哦

 

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
四大品牌无线路由器产品推荐

来源:中关村在线 无线市场上最为人熟知的绝对是TP-Link、D-Link、网件、 Linksys四大品牌。如果您说买东西光看品牌是傻子,我 ...

芯片封装概述

芯片封装 一、DIP双列直插式封装  DIP(DualIn-line Package)是指采用双列直插形式封装的集成电路芯片,绝大多数中小规模 ...

IC设计工程师的高手进阶之路

随着中国IC设计产业渐入佳境,越来越多的工程师加入到这个新兴产业中。从一个初学者成长到主持大型设计的IC设计专家,这是每个IC ...

Helper2416-13——裸机第五弹——YL-boot——裸奔者的福音

YL-boot——裸奔者的福音 参与Helper2416开发板助学计划心得 闭关几天,终于初步完成了这YL-boot了。没有J-TAG不能单步调试还 ...

#8月改装#暴力改装普源DP832电源

本帖最后由 wangjiafu1985 于 2015-8-27 09:04 编辑 暴力改装普源DP832电源  免责声明:本贴发表之前经SOSO姐向普源提出授 ...

2020年1月份版主工作奖励

2020年1月获得版主奖励的名单如下: 用户名 发帖 回帖 加精 评分次数 删除主题/ ...

视频动画:直观的理解电磁波辐射

attach://480168.qlv480168 视频动画:直观的理解电磁波辐射 480168

Teensy 4.1 开发板

480436 Teensy 4.1,相比Teensy 4.0 有了不少改进。 引脚图 连接以太网 反面可以扩展存储器,左边是p ...

FPGA入门必备《Advanced FPGA Design》

国外FPGA设计经典教材《Advanced FPGA Design:Architecture, Implementation, and Optimization》,适合入门初学者学习。 ...

请教一个电源变压器后面电路问题

请教一个电源变压器后面电路问题 二极管和电阻前后调换一下位置,有什么影响? 862533

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表