DA7212 MKRZERO接口

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
9个员额/ 0个新员额
最后发表
niradat
离线
最后看到:1年4个月前
加入:2019-12-27 07:09
DA7212 MKRZERO接口

你好,

根据DA7212 Page 62的数据表,当DA7212以从模式与处理器接口时,不需要MCLK。我已经用我的Arduino MKRZERO接口了ard-audio-da7212板。Arduino MKRZERO能够生成所需的I2S信号,如BCLK、WCLK和DATOUT。我的问题是,我需要从MKRZERO提供MCLK到ard-audio-da7212吗?

当做

Niradat。

设备:
charlesxue1122
离线
最后看到:1周2天前
工作人员
加入:2019-12-23 05:48
亲爱的涅拉达,

亲爱的涅拉达,

很抱歉回复晚了。我的DA7212数据表似乎和你的有所不同。

你能把你的寄给我看看描述吗?我需要检查PLL时钟soucrec是来自MCLK或block。

很多谢谢!

BR

查尔斯

niradat
离线
最后看到:1年4个月前
加入:2019-12-27 07:09
你好,

你好,

随函附上我拥有的DA7212的数据表。

问候,

Niradat

charlesxue1122
离线
最后看到:1周2天前
工作人员
加入:2019-12-23 05:48
嗨Niradat,

嗨Niradat,

附件是一份新的。您可以参考“13.25时钟模式”一节。请注意锁相环模式配置。

谢谢!

niradat
离线
最后看到:1年4个月前
加入:2019-12-27 07:09
你好查尔斯,

你好查尔斯,

感谢分享更新的DA7212数据表。我在Arduino MKRZERO上用数据表写了以下代码。在这个代码中,MKRZERO正在播放一个16位立体声WAV文件,我可以在我的ARD-AUDIO-DA7212音频屏蔽上听它。但DA7212似乎突然进入睡眠状态,音频停止。虽然MKRZERO正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面给予帮助。

最好的问候,

涅拉达。

#定义编解码器地址0x1A#include#include#include//要播放的wave文件名const char filename[]=“MUSIC.WAV”//表示波形文件SDWaveFile波形文件的变量;void setup(){//打开串行通信并等待端口打开:serial.begin(9600);延迟(5000);//设置SD卡,具体取决于转接板的屏蔽//您可能需要在begin for SS Serial.print(“初始化SD卡…”)中传递pin码;如果(!SD.begin(){Serial.println(“初始化失败!”);返回;}Serial.println(“初始化完成”);//创建SDWaveFile waveFile=SDWaveFile(文件名);//如果(!波形文件){Serial.println(“波形文件无效!”);while(1);//什么也不做}//打印一些信息。关于wave文件Serial.print(“Bits per sample=”);Serial.println(waveFile.bitsPerSample());长通道=波形文件通道();Serial.print(“Channels=”);串行打印LN(通道);long sampleRate=波形文件。sampleRate();串行打印(“采样率=”);串行打印(采样器);Serial.println(“Hz”);长持续时间=波形文件。持续时间();Serial.print(“Duration=”);连续打印(持续时间);Serial.println(“秒”);//////////////////////////////////////DA7212的初始化////////////////////////////////Wire.begin()//写入DA7212 0x92 0x00//将斜坡速率设置为默认延迟(100);Wire.beginTransmission(编解码器地址);连线写入(0x92);连线写入(0x00);导线端传动()//写入DA7212 0x90 0x80//启用数字LDO延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x90);线写入(0x80);导线端传动()//写入DA7212 0x29 0xC0//启用AIF 16位I2S模式延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x29);线写入(0xC0);导线端传动()//写入DA7212 0x22 0x0A//将输入采样率设置为44.1kHz延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x22);线写入(0x0A);导线端传动()//写入DA7212 0x94 0x02//将PC同步设置为重新同步默认延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x94);线写入(0x02);导线端传动()//写入DA7212 0x27 0x04//PLL\U CTRL PLL禁用延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x27);线写入(0x04);导线端传动()//写入DA7212 0x2A 0x32//路由DAI以输出默认延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x2A);Wire.write(0x32);导线端传动()//写入DA7212 0x4B 0x08//DACL延迟(100)的混音输入;Wire.beginTransmission(编解码器地址);线写入(0x48);线写入(0x08);导线端传动()//写入DA7212 0x4C 0x08//DACR延迟(100)的混音输入;Wire.beginTransmission(编解码器地址);线写入(0x4C);线写入(0x08);导线端传动()//写入DA7212 0x47 0xCD//启用电荷泵、CP_MOD模式、CPVDD/1和升压CP延迟(100);Wire.beginTransmission(编解码器地址);连线写入(0x47);线写入(0xCD);导线端传动()//写入DA7212 0x95 0x36//将CP阈值设置为0x36延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x95);线写入(0x36);导线端传动()//写入DA7212 0x96 0xA5//将CP Tau延迟设置为64ms延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x96);线写入(0xA5);导线端传动()//写入DA7212 0x48 0x2D//将音量设置为-12dB延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x48);Wire.write(0x2D);导线端传动()//写入DA7212 0x49 0x2D//将音量设置为-12dB延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x49);Wire.write(0x2D);导线端传动()//写入DA7212 0x51 0xF1//启用DAC、Mix和HP放大器延迟(100);Wire.beginTransmission(编解码器地址);线写入(0x51);Wire.write(0xF1);导线端传动()//写入DA7212 0xFD 0x01//将音调发生器增益设置为-18dBstem有效延迟(100);Wire.beginTransmission(编解码器地址);线写入(0xFD);Wire.write(0x01);电线末端传输();//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////调整播放音量AudioOutI2S。音量(50);//如果(!AudioOutI2S.canPlay(波形文件)){Serial.println(“无法使用I2S播放波形文件!”);while(1);//不执行任何操作}//开始播放Serial.println(“开始播放”);AudioOutI2S.播放(波形文件);}void loop(){//如果(!AudioOutI2S.isplay(){//播放已停止Serial.println(“播放已停止”);while(1);//什么也不做}

charlesxue1122
离线
最后看到:1周2天前
工作人员
加入:2019-12-23 05:48
嗨Niradat,

嗨Niradat,

如果您决定将DA7212配置为从模式,能否提供从您的Arduino MKRZERO发送的MCLK/BCLK/WS的频率?

我可以为您找到一些示例代码。

谢谢!

niradat
离线
最后看到:1年4个月前
加入:2019-12-27 07:09
你好查尔斯,

你好查尔斯,

是的,我想在从模式下配置DA7212。关于Arduino Mkrzero的时钟输出,MKRZERO即来自MKRZERE的只有三个输出,WS和DOUT,其各自的频率BCLK = 1.4112 MHz和WS = 44.1kHz。MKRZERO不会输出MCLK。

BCLK= 44.1 kHz × 16 × 2 = 1.4112 MHz

问候,

Niradat。

charlesxue1122
离线
最后看到:1周2天前
工作人员
加入:2019-12-23 05:48
嗨Niradat,

嗨Niradat,

请参考附件中的代码。

谢谢!

niradat
离线
最后看到:1年4个月前
加入:2019-12-27 07:09
非常感谢查尔斯

非常感谢查尔斯