我自己的Diamond不管怎么操作都正常,但是别人的"清华紫光128M"几乎大一点的文件,都不正常,ASUS出产的U盘也是操作基本上都正常,请问一下,有没有人用这几宽U盘,是不是CH375A不支持这两款U盘. 小文件还比较正常,大文件有时候又可以正常操作,调试了好几天,都是一样的结果,所以不知道是什么问题引起的! 另外这些U盘都可以正常的读出U盘的大小!
你是用总线还是用模拟I/O口的方式来操作U盘的??可以不可以看下你的三个读写子函数以及你的延时
void mDelay1_2uS(void) { INT32U i; for (i = 18; i != 0; i --);
}
void xWriteCH375Cmd(INT8U mCmd ) { mDelay1_2uS( ); mDelay1_2uS( ); CH375Cmd = mCmd; mDelay1_2uS( ); mDelay1_2uS( ); }
void xWriteCH375Data(INT8U mData ) { CH375Dat = mData ; mDelay1_2uS( ); }
INT8U xReadCH375Data(void) { INT8U mData;
mDelay1_2uS( ); mData = (INT8U)CH375Dat; return(mData); }
总线方式
#define CH375Cmd *(volatile INT8U *)(0x04000001) /*总线方式 BANK2--nGCS2*/ #define CH375Dat *(volatile INT8U *)(0x04000000)
相关程序和原理图已发到贵公司技术部的邮箱里面,请贵公司技术部人员能帮我看看,非常感谢!
操作哪部分出现了问题??返回的错误代码是多少??
在函数 void xQueryInterrupt( void ) /* 查询中断状态,等待硬件中断 */ { while ( CH375IntStatus == 0 ); /* 子程序库调用该子程序之前CH375IntStatus=0,硬件中断后,由中断服务程序置为非0的实际中断状态后返回 */ } 里面死循环
程序和原理图都发在贵公司的技术部邮箱里面了,能够帮我看看,是不是程序出了问题,非常感谢!
可能是ch375a本身读u盘就有些问题