CH565W,同时使用以太网和eMMC

系统先初始化emmc,再初始化以太网。emmc初始化完成之后可以正确的读写emmc,但是在初始化以太网完成后在次读写emmc时,程序就死在了EMMCCardWriteMulSec()函数中的

while(1)

    {

        if(R16_EMMC_INT_FG & RB_EMMC_IF_BKGAP)

        {

            R32_EMMC_RESPONSE3 = 0;

            R16_EMMC_INT_FG = RB_EMMC_IF_BKGAP;

        }

        else if(R16_EMMC_INT_FG & RB_EMMC_IF_TRANDONE)

        {

            R16_EMMC_INT_FG = RB_EMMC_IF_CMDDONE;

            //cmd12

            cmd_arg_val = 0;

            cmd_set_val = RB_EMMC_CKIDX |

                          RB_EMMC_CKCRC |

                          RESP_TYPE_R1b |

                          EMMC_CMD12;

            EMMCSendCmd(cmd_arg_val, cmd_set_val);

            break;

        }

        if( pEMMCPara->EMMCOpErr )      return CMD_FAILED;


    }

这个while1循环中,请问这两个同时使用有什么冲突吗?    

您好,

可以先确认下该循环退不出时,卡在什么位置,通过上面函数来看,应该是卡在了第一个IF里面或者其他状态,可能性是一直处在单块传输或者当前某个单块传输一直未结束的状态。可以再检测下EMMC的状态。


这个程序进入了这个while(1)循环,但是哪一个if都没有进


这个地方理论不会卡住,可以检查下是否其他程序中断打断,或者检查下缓冲区地址是否严格16字节对齐


只有登录才能回复,可以选择微信账号登录