你好,
根据DA7212 Page 62的数据表,当DA7212以从模式与处理器接口时,不需要MCLK。我已经用我的Arduino MKRZERO接口了ard-audio-da7212板。Arduino MKRZERO能够生成所需的I2S信号,如BCLK、WCLK和DATOUT。我的问题是,我需要从MKRZERO提供MCLK到ard-audio-da7212吗?
当做
Niradat。
亲爱的涅拉达,
很抱歉回复晚了。我的DA7212数据表似乎和你的有所不同。
你能把你的寄给我看看描述吗?我需要检查PLL时钟soucrec是来自MCLK或block。
很多谢谢!
BR
查尔斯
随函附上我拥有的DA7212的数据表。
问候,
Niradat
嗨Niradat,
附件是一份新的。您可以参考“13.25时钟模式”一节。请注意锁相环模式配置。
谢谢!
你好查尔斯,
感谢分享更新的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);//什么也不做}
如果您决定将DA7212配置为从模式,能否提供从您的Arduino MKRZERO发送的MCLK/BCLK/WS的频率?
我可以为您找到一些示例代码。
是的,我想在从模式下配置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
请参考附件中的代码。
非常感谢查尔斯
亲爱的涅拉达,
很抱歉回复晚了。我的DA7212数据表似乎和你的有所不同。
你能把你的寄给我看看描述吗?我需要检查PLL时钟soucrec是来自MCLK或block。
很多谢谢!
BR
查尔斯
你好,
随函附上我拥有的DA7212的数据表。
问候,
Niradat
嗨Niradat,
附件是一份新的。您可以参考“13.25时钟模式”一节。请注意锁相环模式配置。
谢谢!
你好查尔斯,
感谢分享更新的DA7212数据表。我在Arduino MKRZERO上用数据表写了以下代码。在这个代码中,MKRZERO正在播放一个16位立体声WAV文件,我可以在我的ARD-AUDIO-DA7212音频屏蔽上听它。但DA7212似乎突然进入睡眠状态,音频停止。虽然MKRZERO正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面给予帮助。
最好的问候,
涅拉达。
嗨Niradat,
如果您决定将DA7212配置为从模式,能否提供从您的Arduino MKRZERO发送的MCLK/BCLK/WS的频率?
我可以为您找到一些示例代码。
谢谢!
你好查尔斯,
是的,我想在从模式下配置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。
嗨Niradat,
请参考附件中的代码。
谢谢!
非常感谢查尔斯