U盘插上时,发送指令读取U盘扇区:
Ch375WriteCmd( CMD_DISK_READ ); // 从USB存储器读数据块 delay_us(2); addr = (CPU_INT08U)iLbaStart; Ch375WriteData(addr ); // LBA的最低8位 addr = (CPU_INT08U)( iLbaStart >> 8 ); Ch375WriteData(addr);
addr = (CPU_INT08U)( iLbaStart >> 16 ); Ch375WriteData( addr );
addr = (CPU_INT08U)(iLbaStart >> 24); Ch375WriteData(addr); // LBA的最高8位
Ch375WriteData( iSectorCount ); // 扇区数
当iLbaStart=0时,可以正常读取,发送上述指令后:
会产生8次状态为USB_INT_DISK_READ的中断,(每次返回64字节,刚好512字节) 和1次状态为USB_INT_SUCCESS 的中断
当iLbaStart=1、2、3、4时也都正常。
但是当iLbaStart=5时,所有代码都不变,但是发送上述指令后,却无法产生任何中断。。。。。
请问这种问题,是软件问题呢?还是硬件问题?
当iLbaStart=6时,产生8次状态为USB_INT_DISK_READ的中断后,并没有产生USB_INT_SUCCESS,而是产生了一个状态码为0xFB的中断,从而进入出错状态。。。
具体代码请参展这个帖子:
/bbs/View.asp?S=101&I=37048