你好,
根据DA7212第62页的数据表,当DA7212以从机模式与处理器接口时,不需要MCLK。我已经连接了ard-audio-da7212板和我的Arduino MKRZERO。Arduino MKRZERO能够生成所需的I2S信号,如BCLK、WCLK和DATOUT。我的问题是我是否必须从MKRZERO向ard-audio-da7212提供MCLK?
当做,
涅盘。
亲爱的Niradat,
很抱歉反应太晚了。我的DA7212数据表似乎和你的有些不同。
你能把你的给我看看描述吗。我需要检查一下PLL时钟源是从MCLK还是BLCK来的。
非常感谢!
比尔
查尔斯
随函附上我所拥有的DA7212的数据表。
涅盘
嗨Niradat,
附件是一个新的。您可以参考“13.25时钟模式”一节。请注意Pll模式的配置。
谢谢!
嗨,查尔斯,
感谢分享DA7212的最新数据表。使用数据表,我在Arduino MKRZERO上编写了以下代码。在这段代码中,MKRZERO正在播放一个16位立体声WAV文件,我可以在我的ARD-AUDIO-DA7212音频屏蔽上收听它。但似乎DA7212突然进入睡眠状态,音频停止。尽管MKRZERO正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面给予帮助。
致以最诚挚的问候,
#定义编解码器地址0x1A#include#include#include//要播放的wave文件的文件名const char filename[]=“音乐.WAV“;//表示波形文件SDWaveFile waveFile的变量;void setup(){//打开串行通信并等待端口打开:序列号.开始(9600);延迟(5000);//设置SD卡,根据你的突破板盾//你可能需要通过一个引脚号开始SS序列号.打印(“正在初始化SD卡…”);如果(!SD.开始()) { 序列号.println(“初始化失败!”);返回;}序列号.println(“初始化完成。”);//创建一个SDWaveFile waveFile=SDWaveFile(filename);//如果(!波形{序列号.println(“wave文件无效!”);while(1);//什么也不做}//打印一些信息。关于wave文件序列号.打印(“每采样位数=”);序列号.println(波形.位示例());长通道=波形通道(); 序列号.打印(“频道=”);序列号.println(通道);长采样器=波形采样器(); 序列号.打印(“采样率=”);序列号.打印(采样器);序列号.println(“Hz”);长持续时间=波形持续时间(); 序列号.打印(“持续时间=”);序列号.打印(持续时间);序列号.println(“秒”);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////电线。开始();//写入DA7212 0x92 0x00//将斜坡率设置为默认延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x92);连线。写入(0x00);线端传动();//写入DA7212 0x90 0x80//启用数字LDO延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x90);连线。写入(0x80);线端传动();//写入DA7212 0x29 0xC0//启用AIF 16位I2S模式延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x29);连线。写入(0xC0);线端传动();//写入DA7212 0x22 0x0A//将传入采样率设置为44.1kHz延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x22);连线。写入(0x0A);线端传动();//写入DA7212 0x94 0x02//将PC sync设置为resync default delay(100);电线.beginTransmission(编解码器地址);连线。写入(0x94);连线。写入(0x02);线端传动();//写入DA7212 0x27 0x04//PLL_CTRL PLL disabled delay(100);电线.beginTransmission(编解码器地址);连线。写入(0x27);连线。写入(0x04);线端传动();//写入DA7212 0x2A 0x32//路由DAI输出默认延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x2A);连线。写入(0x32);线端传动();//写入DA7212 0x4B 0x08//从DACL延迟(100)混合输出输入;电线.beginTransmission(编解码器地址);连线。写入(0x48);连线。写入(0x08);线端传动();//写入DA7212 0x4C 0x08//从DACR延迟(100)混出R输入;电线.beginTransmission(编解码器地址);连线。写入(0x4C);连线。写入(0x08);线端传动();//写入DA7212 0x47 0xCD//启用电荷泵、CP泳MOD mode、CPVDD/1和Boost CP delay(100);电线.beginTransmission(编解码器地址);连线。写入(0x47);连线。写入(0xCD);线端传动(); //写入DA7212 0x95 0x36//将CP threshold设置为0x36 delay(100);电线.beginTransmission(编解码器地址);连线。写入(0x95);连线。写入(0x36);线端传动();//写入DA7212 0x96 0xA5//设置CP Tau DELAY为64ms DELAY(100);电线.beginTransmission(编解码器地址);连线。写入(0x96);连线。写入(0xA5);线端传动(); //写入DA7212 0x48 0x2D//将音量设置为-12dB延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x48);连线。写入(0x2D);线端传动();//写入DA7212 0x49 0x2D//将音量设置为-12dB延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x49);连线。写入(0x2D);线端传动();//写入DA7212 0x51 0xF1//启用DAC、Mix和HP放大器延迟(100);电线.beginTransmission(编解码器地址);连线。写入(0x51);连线。写入(0xF1);线端传动();//写入DA7212 0xFD 0x01//将音调发生器增益设置为-18dBstem Active delay(100);电线.beginTransmission(编解码器地址);连线。写入(0xFD);连线。写入(0x01);线端传动(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////调整播放音量AudioOutI2S.volume(50);//如果(!AudioOutI2S.canPlay(波形)){序列号.println(“无法使用I2S播放波形文件!”);while(1);//不执行任何操作}//开始播放序列号.println(“开始播放”);AudioOutI2S.play(waveFile);}void loop(){//如果(!AudioOutI2S.isPlaying()){//播放已停止序列号.println(“播放停止”);while(1);//不执行任何操作}
如果您决定将DA7212配置为从模式,您能提供从Arduino MKRZERO发送的MCLK/BCLK/WS的频率吗?
我可以为您找到一些示例代码。
是的,我想在从属模式下配置DA7212。关于Arduino MKRZERO的时钟输出,MKRZERO只有三个输出,即BCLK、WS和DOUT,它们各自的频率BCLK=1.4112 MHz和WS=44.1KHz。MCLK不是从MKRZERO输出的。
BCLK=44.1千赫×16×2=1.4112兆赫
请参考所附代码。
非常感谢查尔斯
亲爱的Niradat,
很抱歉反应太晚了。我的DA7212数据表似乎和你的有些不同。
你能把你的给我看看描述吗。我需要检查一下PLL时钟源是从MCLK还是BLCK来的。
非常感谢!
比尔
查尔斯
你好,
随函附上我所拥有的DA7212的数据表。
当做,
涅盘
嗨Niradat,
附件是一个新的。您可以参考“13.25时钟模式”一节。请注意Pll模式的配置。
谢谢!
嗨,查尔斯,
感谢分享DA7212的最新数据表。使用数据表,我在Arduino MKRZERO上编写了以下代码。在这段代码中,MKRZERO正在播放一个16位立体声WAV文件,我可以在我的ARD-AUDIO-DA7212音频屏蔽上收听它。但似乎DA7212突然进入睡眠状态,音频停止。尽管MKRZERO正在播放音频。此外,来自DA7212模块的音频不是立体声。请在这方面给予帮助。
致以最诚挚的问候,
涅盘。
嗨Niradat,
如果您决定将DA7212配置为从模式,您能提供从Arduino MKRZERO发送的MCLK/BCLK/WS的频率吗?
我可以为您找到一些示例代码。
谢谢!
嗨,查尔斯,
是的,我想在从属模式下配置DA7212。关于Arduino MKRZERO的时钟输出,MKRZERO只有三个输出,即BCLK、WS和DOUT,它们各自的频率BCLK=1.4112 MHz和WS=44.1KHz。MCLK不是从MKRZERO输出的。
BCLK=44.1千赫×16×2=1.4112兆赫
当做,
涅盘。
嗨Niradat,
请参考所附代码。
谢谢!
非常感谢查尔斯