CH375B写扇区 未知错误

程序执行完全没有问题,没有产生什么错误中断,我测试只写一个扇区的数据再读出来,数据不对,我是向U盘里写的,写入的数据是1~512,读出的数据如下 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a17a 07d1e 0 0 0 0 0 0 2 0 0 0 1 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a1c18ed9bd 07c884e 28a5640b4 8 cd1373 5b9ffff8af166 fb6c64066 f 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a17732668b461c6683c0 cbb 080b9 1 0e82b 0e948 3a0fa7db47d8bf0ac 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a1663b46f8 f824a 0666a 06650 6 53666810 0 1 0807e 2 0 f8520 0b4 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a156408bf4cd13b0f9665866586658 6658eb2a6633d266 fb74e1866f7f1fe 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a154ff81c3 0 2664049 f8571ffc3 4e544c4452202020202020 0 0 0 0 0 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a1 0 0 0 0 0 0 0 0 0 0 d a5265 6d6f7665206469736b73206f72206f74 5553424382 0 0 0 0 2 0 0 0 0 c2a 0 0 03d28 0 0 1 0 0 0 0 0 0 0a1 0a179206b657920746f207265737461 7274 d a 0 0 0 0 0accbd8 0 055aa

不知道是哪里错了 我把代码贴出来 char Wr_Sector(unsigned long LBA_ADDR, char*DATA_BUF) { char status, i; unsigned int j;

Wr_CH375_CMD(DISK_WRITE); //U盘写命令 Wr_CH375_DATA( (char)LBA_ADDR );//写入逻辑地址 Wr_CH375_DATA( (char)(LBA_ADDR>>8) ); Wr_CH375_DATA( (char)(LBA_ADDR>>16) ); Wr_CH375_DATA( (char)(LBA_ADDR>>24) ); Wr_CH375_DATA( 1 );//写入扇区数目

for(j=0; j<512;) { while( (status = CH375_ISR()) == 0 ); if( status != USB_INT_DISK_WRITE )//出错,返回状态 return status ; Wr_CH375_CMD(WR_USB_DATA7); Wr_CH375_DATA(64); for(i=0; i<64; i++,j++) Wr_CH375_DATA(DATA_BUF[j]);

Wr_CH375_CMD(DISK_WR_GO);//CH375继续请求写U盘数据 } //判断最后一次的中断 while( (status = CH375_ISR()) == 0 ); if(status != USB_INT_SUCCESS)//出错,返回状态 return status ;

return 0xFF ;

我的这个处理器是8位的,谁知道这是什么情况啊

到网上下载一个WINHEX软件,用该软件查看U盘的物理扇区中的数据,确定之前的写操作有没有成功。


我看了 读取扇区读出来的数 跟在PC上用WinHex查看的一致,搞不清楚 是为什么写进去的不对,在每次Wr_CH375_DATA(DATA_BUF[j]);的时候 我用printf打印了要写进去的数据,完全正确,郁闷死我了


5553424382 0 0 0 0 2 0 0 0 0 c2a 这个数据明显是BULYONLY命令,还是你操作有问题 for(j=0; j<512;) { while( (status = CH375_ISR()) == 0 ); if( status != USB_INT_DISK_WRITE )//出错,返回状态 return status Wr_CH375_CMD(WR_USB_DATA7); Wr_CH375_DATA(64);

for(i=0; i<64; i++,j++) Wr_CH375_DATA(DATA_BUF[j]);

Wr_CH375_CMD(DISK_WR_GO);//CH375继续请求写U盘数据 }

你这种写法明显错误了。 建议参考CH375EVT.ZIP,里面有个文件CH375EV0.C 请按照我们的代码去写。


请问版主,我把配套的示例程序(个人没有修改过)下载到STC90C50AD中,串口提示为 Start&nbsp375&nbspdemo&nbsp..n Set&nbspUSB &nbspmode

Error:&nbsp81

请问这是初始化时的错误吗?是不是硬件上的错误?我用的程序没有针对我的芯片进行修改,是不是就是出错的原因?我应该对程序进行那些修改呢?硬件I/O接口子程序又是应该怎样修改,放到什么位置呢?请指教,谢谢!


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