I2CPinMuxSetup(0);
McASPPinMuxSetup();
InitAIC31I2S();
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采样不了吗