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.

[参考译文] RTOS/AM5728:McASP 中断问题

Guru**** 2563740 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/614144/rtos-am5728-mcasp-interrupt-issue

器件型号:AM5728
Thread 中讨论的其他器件:SysConfig

工具/软件:TI-RTOS

您好!

我正在配置 McASP2 AXR0、以通过外部 帧同步帧(8kHz)和时钟(4.096MHz)传输插槽尺寸为16位(LSB 优先)的32通道 TDM。

我只启用了帧起始中断、因此希望产生@8kHz 的中断、但我得到的速率为@4kHz 的一半。

下面是 McASP2配置代码片段:

// MCASP 引脚配置
mcasp2Ptr->pfunc = 0x0000FFFC; // CLK、AXR0和 AXR1 McASP 引脚
mcasp2Ptr->Pdir = 0x00000001;   // AXR0作为输出,REST 为输入


//将 CH0串行器配置为 TX
mcasp2SerControlReg ->ch0 = 0x0000000D;
//将 CH1串行器配置为 RX,以供将来使用
mcasp2SerControlReg ->CH1 = 0x0000000E;


// RX REST
mcaspGblCtl->mcaspGblControlBits.rclkrst = 0;
mcaspGblCtl->mcaspGblControlBits.rfrst = 0;
mcaspGblCtl->mcaspGblControlBits.rhclkrst=0;
mcaspGblCtl->mcaspGblControlBits.rsmrst = 0;
mcaspGblCtl->mcaspGblControlBits.rsrclr = 0;
// TX 复位
mcaspGblCtl->mcaspGblControlBits.xclkrst = 0;
mcaspGblCtl->mcaspGblControlBits.xfrst = 0;
mcaspGblCtl->mcaspGblControlBits.xhclkrst = 0;
mcaspGblCtl->mcaspGblControlBits.xsmrst = 0;
mcaspGblCtl->mcaspGblControlBits.xsrclr = 0;

//轮询直到复位结束
while (((mcasp2Ptr -> gblctl & GBLCTRL_bits_all)!= 0x00000000);
//空闲模式
mcasp2Ptr ->SysConfig = 0x01;

mcasp2Ptr ->txmask = 0x0000FFFF;
mcasp2Ptr ->txfmt = 0x00000078;
mcasp2Ptr ->txtdm = 0xFFFFFFFF;
mcasp2Ptr ->xevtctl = 0x00000001;
mcasp2Ptr ->txfmctl = 0x00001000;
mcasp2Ptr ->txclkchk = 0x00F02000;
mcasp2Ptr ->aclkxctl = 0x00000000;
mcasp2Ptr ->ahclkxctl = 0x00008000;

//打开 CLK 和帧同步
mcaspGblCtl->mcaspGblControlBits.xclkrst = 1;
mcaspGblCtl->mcaspGblControlBits.xhclkrst = 1;

//等待位未置位
while (!mcaspGblCtl->mcaspGblControlBits.xhclkrst ||!mcaspGblCtl->mcaspGblControlBits.xclkrst);

//因为预计会出现第一个时钟误差
while (mcaspTxState->mcaspStateBits.clkfail)

mcaspTxState->mcaspStateBits.clkFAIL = 1;
AppDelay (10);

//清除暂挂中断
mcasp2Ptr ->txstat = 0xFF;
//启用中断
mcasp2Ptr ->evtctlx = 0x00000080;

//释放 TX 状态机
mcaspGblCtl->mcaspGblControlBits.xsmrst = 1;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     在我之前的查询之外、今天我注意到    、在向相应位写入1时、MCASP_GBLCTL 寄存器的 XFRST、XSMRST 和 XSRCLR 字段没有被置位。

    之前发生过什么情况、限制设置这些位的条件是什么?