ISD 1760处于忙状态,RDY一直为0

2019-07-21 06:41发布

本帖最后由 XNY 于 2018-12-17 20:13 编辑

/*这是初始化函数*/
void ISD_Init(void)

{
ISD_Reset();
do
{
  ISD_PU(); /
  RdStatus();
}
while((SR0_L&0x01)||(!(SR1&0x01)));

ClrInt();
ISD_WR_APC2();
RdAPC();   
}


/*这是跳到下一处地址函数*/
void ISD_FWD(void)
{
   do
{
  RdStatus();
}
while((SR0_L&0x01)||(!(SR1&0x01)));  //if(SR0_L^0==1){system Err}<CMD_Err==1>

ClrInt();  
nSS_0;
SPISendData(FWD);  
SPISendData(0x00);
nSS_1;
Delay(10);  

do
{
  RdStatus();
}
while((SR0_L&0x01)||((SR1&0x04)));
}

/*这是读状态函数*/
void RdStatus(void)
{
nSS_0;
SPISendData(RD_STATUS);   
SPISendData(0x00);            
SPISendData(0x00);
nSS_1;
Delay(10);        //10ms
nSS_0;      
SR0_L  =SPISendData(RD_STATUS);
SR0_H  =SPISendData(0x00);
SR1  =SPISendData(0x00);
nSS_1;
Delay(10);
}

/*这是播放指定音频函数*/
void PLAY_NUM(u8 i)
{
  i = i+2;
while(i)
{ ISD_FWD();  
  delay_ms(100);
  i--;
}
ISD_PLAY();  
delay_ms(100);
ISD_Reset();   

Delay(10);

do
{
  ISD_PU();
    delay_ms(50);
  RdStatus();  
}
while((SR0_L&0x01)||((SR1&0x04)));
}


使用按键芯片可以正常工作,SPI模式时,芯片也可正常初始化,但调用PLAY_NUM中调用的ISD_FWD时,会卡在循环里面,即跳不出  while((SR0_L&0x01)||(!(SR1&0x01)))  这个循环,希望前辈们可以指点一下。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
XNY
1楼-- · 2019-07-21 06:58
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-21 11:43
帮顶,貌似这个芯片没什么人用
高山仰止
3楼-- · 2019-07-21 15:53
帮顶,没用过这个芯片

一周热门 更多>