SDI 块大小寄存器(SDIBSize)这个寄存器,赋值0x200,之后向发SDI 数据寄存器(SDIDAT)这个里边写入32字节的数据,循环写入128次,应该就能发512字节了吧。可是为何我发送后它一直处于数据处理的状态。而当我循环512次的话。就不会有这情况了呢?
代码是这样的:
SDIBSIZE = 0x200; //传输数据块大小为512字节(128字)
/*设置数据控制寄存器:字传输,块数据传输,4bit 数据传输,开始数据传输,
数据发送模//式,共写1个块 */
SDIDCON=(2<<22)|(1<<20)|(1<<17)|(1<<16)|(1<<14)|(3<<12)|(1<<0);
//CMD24
SDICARG = addr;
SDICCON=(0x1<<9)|(0x1<<8)|0x58; //sht_resp, wait_resp, dat, start, CMD24
if(!Chk_CMDend(24, 1)) //-- Check end of CMD24
return 0;
SDICSTA=0xa00; // Clear cmd_end(with rsp)
while (wt_cnt < 128)
{
status=SDIFSTA;
if ((status&0x2000)==0x2000)
{
temp = (*buffer++)<<24;
temp |= (*buffer++)<<16;
temp |= (*buffer++)<<8;
temp |= *buffer++;
SDIDAT = temp;
wt_cnt++;
}
}
if(!Chk_DATend())
return 0;
这样的话当到达if(!Chk_DATend())这行代码的时候。会死循环在里边。因为数据一直处于处理的状态。。
哪位大虾来帮帮忙下。