SEED-DEC6713 MCASP和AIC23B的问题

2019-03-26 15:57发布

大家好,为什么我在连接AIC23B和6713时,设置AIC23B为Master,然后MCASP总是无法使能位时钟,总是停留在
MCASP_FSETS(GBLCTL1,XCLKRST,ACTIVE);
while(!MCASP_FGET(GBLCTL1,XCLKRST));
这一句
希望懂的人指点一下,多谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
fish001
1楼-- · 2019-03-26 18:01
< 为何要设置AIC23为主呢?应该是DSP为主的。
kooking
2楼-- · 2019-03-26 19:13
< 能不能多发些代码,看下前后关系
chhtx
3楼-- · 2019-03-26 19:32
MCASP_ConfigGbl configGbl =
        {

               0x00000000, /* PFUNC - All pins as McASP */
        //     0x1c000002, //AXR1 out,AFSX AHCLKX ACLKX out,others are inputs
               0x00000080, /* PDIR -  AXR1 out,others are inputs */
               0x00000000, /* DITCTL - DIT mode disable */
               0x00000003, /* DLBCTL - Loopback disabled */
               0x00000000 /* AMUTE - Never drive AMUTE */

        };

        MCASP_ConfigRcv configRcv =

        {

               0xffffffff, /* RMASK - Use all 32 bits */
               0x000180f0, //1-bit delay,MSB first, 32-bit slots, DAT bus,
               0x00000111, //AFSRCTL 2-slot word frame sync, ext FS,falling
        //     0x00000113, //AFSRCTL 2-slot word frame sync, in FS,falling
               0x00000000, /* ACLKRCTL - Sample on rising CLK, divide by 1, ext CLK */
        //     0x00000020, // ACLKRCTL - Sample on rising CLK, divide by 1, in CLK
               0x00000000, /* AHCLKRCTL - External HCLK */
        //     0x0000c031,  //AHCLKRCTL - in HCLK, falling AHCLK, divide by 50
               0x00000003, /* RTDM - Slots 0 1 are active */
               0x00000000, /* RINTCTL - No interrupts */
               0x00000000 /* RCLKCHK - Not used */
        };



        MCASP_ConfigXmt configXmt =

        {
               0xffffffff, /* XMASK - Use all 32 bits */
               0x000180f0, //1-bit delay,MSB first, 32-bit slots, DAT bus,
            //0x00000113, //AFSXCTL-2-slot word frame sync, in FS ,falling
               0x00000111, //AFSXCTL-2-slot word frame sync, ext FS ,falling
        //     0x000000e0, /* ACLKXCTL - Sample on falling CLK, async,divide by 1, in CLK */
               //0x000000c0, /* ACLKXCTL - Sample on falling CLK, async,divide by 1, ext CLK */
               0x00000080,  /* ACLKXCTL - Sample on falling CLK, sync,divide by 1, ext CLK */
        //     0x0000c031, /* AHCLKXCTL - in HCLK , falling , 50 divider*/
               0x00000000, /* AHCLKXCTL - External HCLK */
               0x00000003, /* XTDM - Slots 0 1 are active */
               0x00000000, /* XINTCTL - No interrupts */
               0x00000000 /* XCLKCHK - Not used */
        };



        MCASP_ConfigSrctl configSrctl =

        { //SRCTL,

               0x00000000, /* SRCTL0 - Inactive */
               0x00000000, /* SRCTL1 - Inactive*/
               0x00000000, /* SRCTL2 - Inactive */
               0x00000000, /* SRCTL3 - Inactive */
               0x00000000, /* SRCTL4 - Inactive */
               0x00000000, /* SRCTL5 - Inactive */
               0x0000000e, /* SRCTL6 - Receive, active high  */
               0x0000000d  /* SRCTL7 - Transmit, active high */
        };


            MCASP_configRcv(hMcASP, &configRcv);
            for(i=0;i<10;i++);
            MCASP_configXmt(hMcASP, &configXmt);
            for(i=0;i<10;i++);
            MCASP_configSrctl(hMcASP, &configSrctl);
            for(i=0;i<10;i++);
            MCASP_configGbl(hMcASP, &configGbl);
            for(i=0;i<10;i++);


            //启动高频时钟AHCLKX和AHCLKR
        MCASP_FSETS(GBLCTL1,XHCLKRST,ACTIVE);
        while(!MCASP_FGET(GBLCTL1,XHCLKRST));
        MCASP_FSETS(GBLCTL1,RHCLKRST,ACTIVE);
        while(!MCASP_FGET(GBLCTL1,RHCLKRST));

        //启动时钟ACLKX和ACLKR
        MCASP_FSETS(GBLCTL1,XCLKRST,ACTIVE);
   while(!MCASP_FGET(GBLCTL1,XCLKRST));
   MCASP_FSETS(GBLCTL1,RCLKRST,ACTIVE);
   while(!MCASP_FGET(GBLCTL1,RCLKRST));

        //启动串并转换器
    MCASP_RSET(XSTAT1,0xffff);
    MCASP_RSET(RSTAT1,0xffff);
    MCASP_FSETS(GBLCTL1,XSRCLR,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,XSRCLR));
    MCASP_FSETS(GBLCTL1,RSRCLR,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,RSRCLR));

    //使状态机退出复位状态
    MCASP_FSETS(GBLCTL1,XSMRST,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,XSMRST));
    MCASP_FSETS(GBLCTL1,RSMRST,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,RSMRST));

   // 将帧同步发生器退出复位状态
    MCASP_FSETS(GBLCTL1,XFRST,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,XFRST));
    MCASP_FSETS(GBLCTL1,RFRST,ACTIVE);
    while(!MCASP_FGET(GBLCTL1,RFRST));
chhtx
4楼-- · 2019-03-26 23:56
这些代码是我从网上复制过来的,后边的注释不一定对,我修改过代码了
chhtx
5楼-- · 2019-03-27 02:25
 精彩回答 2  元偷偷看……
游侠339
6楼-- · 2019-03-27 06:55
我也遇到了这个问题啊,但数据口只传送一次,觉得I2C有问题,希望讨论讨论

一周热门 更多>