找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 5755|回复: 4

[ADK相关资料] ADK2.5.1 I2S输出时钟问题

[复制链接]

暂无签到数据

发表于 2014-6-17 16:28:01 | 显示全部楼层 |阅读模式

马上注册,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
ADK2.5.1  csr_i2s_audio_plugin.c 中:
Sink CsrI2SAudioOutputConnect(uint32 rate, bool stereo, Source left_port, Source right_port)
{
    /* obtain sink to I2S interface */
    Sink lSink_A = StreamAudioSink(AUDIO_HARDWARE_I2S, AUDIO_INSTANCE_0, AUDIO_CHANNEL_SLOT_1 );
    /* configure the I2S interface operating mode, run in master mode */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_MASTER_MODE, TRUE));
   
    /* set the sample rate of the dsp audio data */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_MASTER_CLOCK_RATE, (rate * MCLK_SCALING_FACTOR)));   //rate :48k, CLK_SCALING_FACTOR    默认256
    /* set the sample rate of the dsp audio data */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_SYNC_RATE, rate));  
              
    /* left justified i2s data */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_JSTFY_FORMAT, 0));
     
    /* MSB of data occurs on the second SCLK */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_LFT_JSTFY_DLY, 1));
    /* data is LEFT channel when word clock is high */   
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_CHNL_PLRTY, 0));
     
    /* number of data bits per sample, 16 */
    PanicFalse(SinkConfigure(lSink_A, STREAM_I2S_BITS_PER_SAMPLE, 16));
      
    /* if STEREO mode configured then connect the output channel B */
    if(stereo)
    {
        /* obtain sink for channel B I2S interface */
        Sink lSink_B = StreamAudioSink(AUDIO_HARDWARE_I2S, AUDIO_INSTANCE_0, AUDIO_CHANNEL_SLOT_0 );  
   
        /* configure the I2S interface operating mode, run in master mode */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_MASTER_MODE, TRUE));
        /* set the master clock rate of the dsp audio data, this is  */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_MASTER_CLOCK_RATE, (rate * MCLK_SCALING_FACTOR)));
        /* set the sample rate of the dsp audio data */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_SYNC_RATE, rate));   
        /* left justified i2s data */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_JSTFY_FORMAT, 0));  
        /* MSB of data occurs on the second SCLK */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_LFT_JSTFY_DLY, 1));
        /* data is LEFT channel when word clock is high */   
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_CHNL_PLRTY, 0));   
        /* number of data bits per sample, 16 */
        PanicFalse(SinkConfigure(lSink_B, STREAM_I2S_BITS_PER_SAMPLE, 16));
        
        /* synchronise both sinks for channels A & B */
        PanicFalse(SinkSynchronise(lSink_A, lSink_B));
        /* connect dsp ports to i2s interface */
        PanicFalse(StreamConnect(left_port, lSink_A));
        PanicFalse(StreamConnect(right_port, lSink_B));
    }
    /* mono operation, only connect left port */

修改目标:采样率-48k,双通道、16位, 位时钟:48k * 32

MCLK_SCALING_FACTOR 修改为256、128、64时,I2S还有数据输出,而设为32时,没有数据输出。有人知道什么问题吗?



楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:885天
签到总奖励:15306金币
发表于 2014-6-19 09:56:36 | 显示全部楼层
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:2天
签到总天数:243天
签到总奖励:1834金币
发表于 2014-6-19 13:17:33 | 显示全部楼层
本帖最后由 hazmo 于 2014-6-19 13:36 编辑

sorry, missed up
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:35天
签到总奖励:435金币
发表于 2014-7-26 21:41:05 | 显示全部楼层
通常MCLK=128*LRCK以上,最常见的是256倍,但绝不能等于位时钟。其实MCLK并非I2S必须,而是有的DAC需要用其进入睡眠或静音模式
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

暂无签到数据

发表于 2014-7-29 17:01:11 | 显示全部楼层
顶顶更健康,呵呵,小弟纯属灌水赚金币。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-27 18:52 , Processed in 0.235796 second(s), 20 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表