TI中文支持网
TI专业的中文技术问题搜集分享网站

aic3106芯片与emif ADC采集之间的冲突问题

   之前用AD8568采集外部模拟声音信号,然后在DSP里处理,现在想把处理后的声音数字信号通过MCASP外接音频芯片AIC3106播放出来听。但是发现在原来代码上加入以下代码后,调试器显示采集的信号变成了全0了;于是我对下面4行代码一行行的加入到原有代码中去,加前两行都没事,和原来一样采集到幅值不同的信号,但是加入第三行InitAIC31I2S()的时候采集到的信号就是全0了,或者说没有采集到信号(全局变量初始值就是0);请问在初始化 AIC31 音频芯片的时候会和EMIF或者AD8568冲突吗,怎么解决。
// I2C 模块引脚配置
    I2CPinMuxSetup(0);
    // McASP 引脚配置
    McASPPinMuxSetup();
    // 初始化 AIC31 音频芯片
    InitAIC31I2S();
    // 初始化 McASP 为查询方式
    InitMcaspPoll();
Shine:

请问用的是哪款DSP? 看一下数据手册里EMIF管脚, McASP管脚的复用情况。

qioa chen:

回复 Shine:

用的是TMSC6748

Shine:

回复 qioa chen:

EMIF和McASP管脚没有复用,应该不会影响。或者您可以先初始化mcasp,再去初始化AD8568看能否采集。

qioa chen:

回复 Shine:

先初始化ADC模块,调试器显示刚开始采集到数值不等的采样值,但是一直就是同样的值,不会改变。

qioa chen:

回复 qioa chen:

PSCInit();
// DSP 中断初始化InterruptInit();
//初始化LCDLcdInit();
// 触摸屏初始化TouchInit();
// AD8568 初始化 采样率510KAD8568Init(800);////先初始化ADC再只加上124条语句,会采集到初始值但是不会变,若是后初始ADC则采集到的全为0
I2CPinMuxSetup(0);
//McASP 引脚配置McASPPinMuxSetup();

// 初始化 AIC31 音频芯片InitAIC31I2S();
// 初始化 McASP 为查询方式//InitMcaspPoll();

qioa chen:

回复 Shine:

AIC31 音频芯片的初始化里面的每条语句都会导致采集不到数据,而初始化 McASP 为中断方式这条语句中只有一条语句导致采集不到数据。不知道该怎么该。而且当把AD8568的初始化放到他们前面去以后,可以采集到数据,但是数据不会变(只能采一次数据,然后就采集不到了)。另外怎样看音频芯片和AD8568芯片有没有管教复用。

I2CPinMuxSetup(0);
//McASP 引脚配置McASPPinMuxSetup();
// 初始化 AIC31 音频芯片//1,2,3//InitAIC31I2S();
// 初始化 McASP 为中断方式
InitMcaspIntr();

void InitMcaspIntr(void)
{// 初始化 McASP 为 I2S 模式McASPI2SConfigure(MCASP_TX_MODE, WORD_SIZE, SLOT_SIZE, I2S_SLOTS, MCASP_MODE_NON_DMA);
// 使能发送中断McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DATAREADY);
// 设置 McASP 发送中断McASPIntSetup(C674X_MASK_INT6, McASPIsr);
// 启动 McASP 发送I2SDataTxRxActivate(MCASP_TX_MODE);//加上这一句就采集不了,下面展开这个函数
}

void I2SDataTxRxActivate(unsigned char transmitMode)
{if(transmitMode & MCASP_TX_MODE){// 启动使用外部时钟McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_EXTERNAL);
// 启动串行器McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
// 使能状态机McASPTxEnable(SOC_MCASP_0_CTRL_REGS);//当注释掉这一句就可以采集到数据
// 发送数据0McASPTxBufWrite(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX, 0);}
}

qioa chen:

回复 Shine:

会不会和中断号有关。MCASP我换成了中断的工作方式。AD8568Init(Fs)初始化函数里面用到了 TimerInterruptInit(), 使用的是C674X_MASK_INT5。InitMcaspIntr()里面有一条语句是McASPIntSetup(C674X_MASK_INT6, McASPIsr);I2C初始化里面也用到了中断5// 初始化 I2C 接口地址为 AIC31 的地址I2CSetup(SOC_I2C_0_REGS, I2C_SLAVE_CODEC_AIC31);I2CIntRegister(C674X_MASK_INT5, SYS_INT_I2C0_INT);
会因为中断号冲突而产生AD8568采样不了吗

赞(0)
未经允许不得转载:TI中文支持网 » aic3106芯片与emif ADC采集之间的冲突问题
分享到: 更多 (0)