最近调试了I2S。由于芯片里面硬件配置出现了几个错误,着实也把我折腾了一番,不过,最终
还是把它搞定了。为了加深理解,就做个笔记吧,方面以后查找和学习。
定义:I²S或I2S(英语:Inter-IC Sound或Integrated Interchip Sound)是IC间传输数字音频数据
的一种接口标准,采用序列的方式传输2组(左右声道)数据。I2S常被使用在发送CD的PCM音频数据
到CD播放器的DAC中。由于I2S将数据信号和时钟频率信号分开发送,它的抖动(jitter)有损十分地小。
基本概念
I²S由3条传输线组成:
- 比特时钟频率线(BCLK: bit clock line)
- 字符选择线(word select line)或左右时钟频率线(left right clock line)(LRCLK)
- 至少一条复合数据线(SDATA:multiplexed data)
- 有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。
也有可能找到以下这些线:
- 主时钟频率:256个典型的左右时钟频率线(MCLK= 256*LRCLK)
- 上传数据的复合消息(multiplex)线
I²S由前述的比特时钟频率、字符时钟频率和数据三条线所组成。当新的数据被放到数据在线时,比特时钟频率
就会跳动一次。它以数据采样率的64倍速度在运作,诸如CD的采样率为44.1 KHz,要传输它所使用的比特时钟
频率就为2.8224 MHz。I²S的数据线允许两个轨道的数据同时发送,而字符选择时钟频率能让接收设备知道现在
正在发送轨道1或轨道2的数据。每个轨道可传输32位的数据,所以显而易见地,字符选择时钟频率和声音的采
样率时钟频率是相同的。比特时钟频率即是采样率时钟频率的64倍,44.1KHz x 2个声道 x 32位 = 2.8224MHz。
I²S的数据是从高比特(MSB)发送至低比特(LSB),从字符选择时钟频率的左端开始,加上一个比特时
钟频率的延迟,即数据将比字符选择时钟频率要慢一个比特时钟频率。也有左校正(Left Justified)的I²S数据流
,它没有比特时钟频率的延迟,数据和字符选择时钟频率是同步的。右校正(Right Justified)则是数据比字符
选择时钟频率快一个比特时钟频率。
系统配置方法:
要注意master和slave的配置方式是不一样的,slave的配置:
i2sip_w_slave_i2sip(reg_base,HAL_I2S_SLAVE); //配置salve模式
WRITE_REG(0x0,I2S_BASE,0x68); //关闭其他通道。
WRITE_REG(0x0,I2S_BASE,0xa8);
WRITE_REG(0x0,I2S_BASE,0xe8);
定位思路:
A 首先要调试master模式,这种简单,一般通过示波器查看是否有时钟或者数据发出。要看波形,最好在
发送中写入:0x55 (特殊方法,高低高低)
B 其次,调试slave模式的情况下,首先查看是否有软件接收中断,如果有,说明配置正确,如果没有
要查看寄存器配置,确定slave模式是否打开成功。
C 要确定slave模式接收到的数据是否正确,master发送正玄波,固定数等进行测试。
D 一定要确定外边的使用的硬件环境是否OK,具体有几种情况需要确定,线缆,能否发送,能否接收,
今天就遇到一个i2s的线缆接触不良的问题,真是坑人啊。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战