This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

McASP发送数据问题



你好,

 C6748 McASP使用内部时钟通过I2S查询方式向外发送数据。

这样的话 AHCLKX / ACLKX / AFSX ,全部由AUXCLK分频而来并向外输出。初始化完成,各时钟输出正常,可以测到。

但发送数据时,先判断寄存器XSTAT的XDATA位是否为1,第一次调用发送函数XDATA位为1,之后一直XDATA位一直为0。

请问这大概是什么情况导致的呢?

另外,我的理解:McASP使用内部时钟时,I2S向外发送数据,即使DSP没有外接AD等设备,也是能在ACLKX、AXR等引脚测得波形的?求证这种理解是否正确。

  • XUNDRN置位了:underrun,表示没有及时给数,同时XDATA又不置1,是不是你使能了不只一条数据线,但只送了一次数据啊?

  • 感谢您的回答,

    只使能了一条数据线。

    又仔细调试,发现在执行发送函数前,即执行McASPTxEnable()中黄色语句后,XUNDRN置位1,如图:

    void McASPTxEnable(unsigned int baseAddr)
    {
    /* Release the Transmit State machine from reset*/
    HWREG(baseAddr + MCASP_GBLCTL) |= MCASP_GBLCTL_XSMRST;
    while((HWREG(baseAddr + MCASP_GBLCTL) & MCASP_GBLCTL_XSMRST)
    != MCASP_GBLCTL_XSMRST) ;

    /* Release the frame sync generator from reset*/
    HWREG(baseAddr + MCASP_GBLCTL) |= MCASP_GBLCTL_XFRST;
    while((HWREG(baseAddr + MCASP_GBLCTL) & MCASP_GBLCTL_XFRST)
    != MCASP_GBLCTL_XFRST) ;
    }