为什么使用CH375读U盘扇区时只有从0扇区读的时候才有数据

为什么使用CH375读U盘扇区时只有从0扇区读的时候才有数据?

从10,100等开始读的时候,只显示0.

u8 CH375_ReadDisk(u8* buf, u32 iLbaStart, u8 iSectorCount )

{

unsigned char i=0,j;

unsigned char status,len;


CH375_Write_Cmd( CMD5H_DISK_READ );  /* 从USB存储器读扇区 */

CH375_Write_Data( (u8)iLbaStart );  /* LBA的最低8位 */

CH375_Write_Data( (u8)( (u16)iLbaStart >> 8 ) );

CH375_Write_Data( (u8)( iLbaStart >> 16 ) );

CH375_Write_Data( (u8)( iLbaStart >> 24 ) );  /* LBA的最高8位 */


CH375_Write_Data( iSectorCount );  /* 扇区数 */

//xEndCH375Cmd( );

for(i=0;i<8;i++)

{

status=Wait375Interrupt();//等待中断,返回中断状态码

if (status==USB_INT_DISK_READ)

{

 CH375_Write_Cmd( CMD01_RD_USB_DATA );  /* 继续执行USB存储器的读操作 */

 len=CH375_Read_Data();


 for(j=0;j

 {

 * buf= CH375_Read_Data();

 buf++;

 }


 CH375_Write_Cmd( CMD0H_DISK_RD_GO );  /* 继续执行USB存储器的读操作 */


}

else

{

return status;

}

}




status=Wait375Interrupt();//等待中断,返回中断状态码

if (status==USB_INT_SUCCESS)

{

return 0;

}

else

{

return status;

}


}


你好,你先确保LBA地址为10100开始的1个扇区内是非零十六进制数,可以使用winhex软件查看。



你好:

根据你前面描述应该是比较有规律的,首先你可以多是一些数据看看是否只有位7不能翻转,保证现象稳定。

第二,检查确认问题时,最好使用示波器观察在WR=0和RD=0时,位7真实状态,避免软件错误。

第三,都确认没有问题后还是不行,尝试换一片ch375试试或者使用串口通讯(可以用电脑测试)试试。



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