你好,
根据DA7212的数据表Page 62,当DA7212与从动模式中的处理器接口时,不需要MCLK。我用我的Arduino Mkrzero界面接口了ARD-Audio-DA7212板。Arduino MKRZero能够生成所需的I2S信号,如BCLK,WCLK和Datout。我的问题是我必须向Mkrzero提供MCLK到ARD-Audio-DA7212吗?
当做,
尼拉达特。
亲爱的Niradat,
抱歉迟到的回应。我的DA7212 DA7212似乎与您的差异有些不同。
你能把你的人发送给我来检查描述。我需要检查PLL时钟Soucrec来自MCLK或Blck。
非常感谢!
布尔
查尔斯
附近是我拥有的da7212的数据表。
Regards,
尼拉达特
嗨Niradat,
附件是一个新的。您可以参考“13.25时钟模式”部分作为参考。请注意PLL模式配置。
谢谢!
嗨查尔斯,
感谢您分享DA7212的更新数据表。使用数据表我已经在Arduino Mkrzero上写下了Follwing代码。在此代码中,MKRzero正在播放16位立体声WAV文件,我可以在我的ARD-Audio -Da7212音频屏蔽上聆听它。但似乎DA7212突然进入睡眠状态,音频停止。虽然mkrzero正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面帮助。
此致,
涅盘。
#定义编解码器地址0x1A#include#include#include//要播放的wave文件的文件名const char filename[]=“MUSIC.WAV”;//表示波形文件SDWaveFile waveFile的变量;void setup(){//打开串行通信并等待端口打开:serial.begin(9600);延迟(5000);//设置SD卡,具体取决于转接板的屏蔽//您可能需要在begin for SS Serial.print(“初始化SD卡…”)中传递pin码;如果(!SD.begin()){Serial.println(“初始化失败!”);返回;}Serial.println(“初始化完成”);//创建一个SDWaveFile waveFile=SDWaveFile(文件名);//如果(!waveFile){Serial.println(“wave文件无效!”);while(1);//什么都不做}//打印出一些信息。关于wave文件Serial.print(“Bits per sample=”);Serial.println(waveFile.bitsPerSample());长通道=waveFile.channels();Serial.print(“Channels=”);Serial.println(通道);long sampleRate=waveFile.sampleRate();Serial.print(“采样率=”);串行打印(sampleRate);串行打印(“Hz”);长持续时间=waveFile.duration();Serial.print(“Duration=”);连续打印(持续时间);Serial.println(“秒”);//////////////////////////////////////////////////////////////////////////////DA7212的初始化/////////////////////////////////////////////////////////////////////////////Wire.begin()//写入DA7212 0x92 0x00//将斜坡率设置为默认延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0x92);Wire.write(0x00);线端传动()//写入DA7212 0x90 0x80//启用数字LDO延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0x90);线写(0x80);线端传动()//写入DA7212 0x29 0xC0//启用AIF 16位I2S模式延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0x29);Wire.write(0xC0);线端传动()//写入DA7212 0x22 0x0A//设置传入采样率为44.1kHz延时(100);Wire.beginTransmission(编解码器地址);Wire.write(0x22);线写(0x0A);线端传动()//写入DA7212 0x94 0x02//将PC sync设置为resync default delay(100);Wire.beginTransmission(编解码器地址);Wire.write(0x94);Wire.write(0x02);线端传动()//写入DA7212 0x27 0x04//PLL\u CTRL PLL disabled delay(100);Wire.beginTransmission(编解码器地址);Wire.write(0x27);Wire.write(0x04);线端传动()//写入DA7212 0x2A 0x32//路由DAI输出默认延迟(100);Wire.beginTransmission(编解码器地址);线写(0x2A);Wire.write(0x32);线端传动()//写入DA7212 0x4B 0x08//DACL延迟的混音输入(100);Wire.beginTransmission(编解码器地址);Wire.write(0x48);Wire.write(0x08);线端传动()//写入DA7212 0x4C 0x08//DACR延迟(100)的混音输入;Wire.beginTransmission(编解码器地址);线写(0x4C);Wire.write(0x08);线端传动()//写入DA7212 0x47 0xCD//使能电荷泵、CP\u MOD mode、CPVDD/1和Boost CP delay(100);Wire.beginTransmission(编解码器地址);Wire.write(0x47);Wire.write(0xCD);线端传动()//写入DA7212 0x95 0x36//将CP threshold设置为0x36 delay(100);Wire.beginTransmission(编解码器地址);Wire.write(0x95);Wire.write(0x36);线端传动()//写入DA7212 0x96 0xA5//设置CP Tau DELAY为64ms DELAY(100);Wire.beginTransmission(编解码器地址);Wire.write(0x96);Wire.write(0xA5);线端传动()//写入DA7212 0x48 0x2D//将音量设置为-12dB延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0x48);Wire.write(0x2D);线端传动()//写入DA7212 0x49 0x2D//将音量设置为-12dB延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0x49);Wire.write(0x2D);线端传动()//写入DA7212 0x51 0xF1//启用DAC、Mix和HP放大器延迟(100);Wire.beginTransmission(编解码器地址);线写(0x51);Wire.write(0xF1);线端传动()//写入DA7212 0xFD 0x01//将音调发生器增益设置为-18dBstem有效延迟(100);Wire.beginTransmission(编解码器地址);Wire.write(0xFD);Wire.write(0x01);Wire.endTransmission();//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////调整播放音量AudioOutI2S。音量(50);//检查I2S输出是否可以播放波形文件if(!AudioOutI2S.canPlay(waveFile)){Serial.println(“无法使用I2S播放波形文件!”);while(1);//什么都不做}//开始播放Serial.println(“开始播放”);播放(波形);}void loop(){//如果(!AudioOutI2S.isPlaying()){//播放已停止Serial.println(“播放已停止”);while(1);//什么也不做}
如果已将DA7212配置为从模式,请您提供从Arduino MKRZERO发送的MCLK / BCLK / WS的频率吗?
I can find some sample code for you.
是的,我想要配置DA7212slave mode. Regarding the clock outputs from Arduino MKRZERO, there are only three outputs from MKRZERO namely BCLK, WS and DOUT with their respective frequency BCLK= 1.4112 MHz and WS=44.1KHz. MCLK is not output from MKRZERO.
BCLK = 44.1 kHz×16×2 = 1.4112 MHz
请参阅附加的代码。
非常感谢查尔斯
亲爱的Niradat,
抱歉迟到的回应。我的DA7212 DA7212似乎与您的差异有些不同。
你能把你的人发送给我来检查描述。我需要检查PLL时钟Soucrec来自MCLK或Blck。
非常感谢!
布尔
查尔斯
你好,
附近是我拥有的da7212的数据表。
Regards,
尼拉达特
嗨Niradat,
附件是一个新的。您可以参考“13.25时钟模式”部分作为参考。请注意PLL模式配置。
谢谢!
嗨查尔斯,
感谢您分享DA7212的更新数据表。使用数据表我已经在Arduino Mkrzero上写下了Follwing代码。在此代码中,MKRzero正在播放16位立体声WAV文件,我可以在我的ARD-Audio -Da7212音频屏蔽上聆听它。但似乎DA7212突然进入睡眠状态,音频停止。虽然mkrzero正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面帮助。
此致,
涅盘。
嗨Niradat,
如果已将DA7212配置为从模式,请您提供从Arduino MKRZERO发送的MCLK / BCLK / WS的频率吗?
I can find some sample code for you.
谢谢!
嗨查尔斯,
是的,我想要配置DA7212slave mode. Regarding the clock outputs from Arduino MKRZERO, there are only three outputs from MKRZERO namely BCLK, WS and DOUT with their respective frequency BCLK= 1.4112 MHz and WS=44.1KHz. MCLK is not output from MKRZERO.
BCLK = 44.1 kHz×16×2 = 1.4112 MHz
Regards,
尼拉达特。
嗨Niradat,
请参阅附加的代码。
谢谢!
非常感谢查尔斯