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

USB_BULK传输音频文件后,无法用MCASP播放

因为课题需要,想实现USB_bulk传输接受到音频数据文件后,然后将用查询的方式将数据播放出来,但是实际操作发现,一直卡在MCASP的发送上了,不知道该怎么解决,我的主函数如下:

int main(void)
{
    unsigned int i,status;
    g_bUSBConfigured = false;

    for(i=0;i<229396/2;i++)
    {
        toneRaw = (toneRaw1[i*2]) | toneRaw1[i*2+1]<<8;
     }

    // I2C 模块引脚配置
    I2CPinMuxSetup(0);

    // McASP 引脚配置
    McASPPinMuxSetup();

    // DSP 中断初始化
    InterruptInit();

    // USB的中断是可屏蔽中断4,优先级最高
    ConfigureDSPINTCIntUSB();

    // Enable Clocking to the USB controller.
    // 使能对USB控制器的计时
    PSCModuleControl(SOC_PSC_1_REGS,HW_PSC_USB0, 0, PSC_MDCTL_NEXT_ENABLE);
    // USB PHY ON 指USB的物理接口,Chip Configuration 2 Register (CFGCHIP2) Field Descriptions
    // 见OMAP-L138 C6000 DSP+ARM Processor Technical Reference Manual (Rev.A)芯片手册P295页
    HWREG(SOC_USB_0_PHY_REGS) = 0x09F2;

    // 初始化 I2C 接口地址为 AIC31 的地址
    I2CSetup(SOC_I2C_0_REGS, I2C_SLAVE_CODEC_AIC31);
    I2CIntRegister(C674X_MASK_INT5, SYS_INT_I2C0_INT);

     // 初始化 AIC31 音频芯片
      InitAIC31I2S();

     //Delay timer setup
     DelayTimerSetup();

     // Initialize the transmit and receive buffers.
     // 初始化USB BLIK接收和发送数据缓冲区
     USBBufferInit((tUSBBuffer *)&g_sTxBuffer);
     USBBufferInit((tUSBBuffer *)&g_sRxBuffer);

    // Pass our device information to the USB library and place the device
    // on the bus.
    // tUSBDBulkDevice定义的是批量设备的操作参数
    // 包括供应商ID,PID,设备功耗,字符串描述符等
    USBDBulkInit(0, (tUSBDBulkDevice *)&g_sBulkDevice);

    // 初始化 McASP 为查询方式
    InitMcaspPoll();

    // Clear our local byte counters.
    //
    ulRxCount = 0;
    ulTxCount = 0;

    i = 0;
    while(1)
    {
        //数据接收完毕
        if (KeyFlag==10000)
        {
                TestFlag = 22;
                while( !(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY));
                status = McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS);
                if(status & MCASP_TX_STAT_CURRSLOT_EVEN)
                {
                        // 输出右声道数据
                        OutputSample(toneRaw);
                }
                else
                {
                        // 输出左声道数据
                        OutputSample(toneRaw);
                }
                i++;
                if(i >= 229396/2)
                        i = 0;

        }
    }
}

发现程序一直卡在红色部份所示的while循环中,同时如果屏蔽掉USB的设备信息发送函数(已红色标注),那么程序是可以走通的,确实搞不懂原因,希望论坛的工程师能帮忙解答一下,哪怕提供一些调试思路也非常感谢。

Shine:

同时用usb和mcasp0接口的话,需要注意USB_REFCLKIN和AHCLKX是管脚复用的。

赞(0)
未经允许不得转载:TI中文支持网 » USB_BULK传输音频文件后,无法用MCASP播放
分享到: 更多 (0)