就简单的新建一个TXT文件,然后写入两三行文字,都基本上很少一次就成功的!
错误的主要现象是,U盘的数据灯的在不停的闪,闪烁的亮度低,速度超快,通常闪了就不会停下来! 我用的MCU是AVR M16,使用库函数,字节方式,使用8M内部时钟,部分程序是这样的:
void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1uS( ); mDelay1uS( ); mDelay1uS( ); /* 至少延时1uS */ PORTD |= 0x17; PORTC = mCmd; /* 向CH375的并口输出数据 */ DDRC = 0xFF; /* 并口D0-D7输出 */ PORTD &=~(1< PORTD &=~(1< DDRC = 0xFF; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mDelay1uS( ); PORTD |= 0x17; /* 输出无效的控制信号, 完成操作CH375芯片, A0=1; CS=1; WR=1; RD=1; */ DDRC = 0x00; /* 禁止数据输出 */ //PORTD &= 0xFB; /* 输出A0=0; 可选操作 */ mDelay1uS( ); mDelay1uS( ); mDelay1uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { PORTC = mData; /* 向CH375的并口输出数据 */ DDRC = 0xFF; /* 并口D0-D7输出 */ PORTD |= 0x17; PORTD&=~(1< PORTD&=~(1< PORTD&=~(1< DDRC = 0xFF; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mDelay1uS( ); PORTD|= 0x17; /* 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; */ DDRC = 0x00; /* 禁止数据输出 */ //mDelay1uS( ); mDelay1uS( ); mDelay1uS( ); /* 至少延时1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; //mDelay1uS( ); mDelay1uS( ); mDelay1uS( ); /* 至少延时1.2uS */ PORTD |= 0x17; DDRC = 0x00; /* 数据输入 */ PORTD &=~(1< PORTD &=~(1< PORTD &=~(1< DDRC = 0x00; DDRC = 0x00; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mDelay1uS( ); mData = PINC; /* 从CH375的并口PA输入数据 */ PORTD |= 0x17; /* 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; */ mDelay1uS( ); return( mData ); }
主函数部分: CH375_PORT_INIT(); DELAYMS(1); CH375Reset(); DELAYMS(1); while(CH375LibInit()!=ERR_SUCCESS); while(CH375DiskConnect()!=ERR_SUCCESS){ DELAYMS(100); }
strcpy((char *)mCmdParam.Create.mPathName,"/ABC.TXT"); while(CH375FileCreate()!=ERR_SUCCESS); pCodeStr = (UINT8 *)"2009年4月8日 星期三XXXXXXXXXXXXXXXXXXXXXXXXXXX"; while( 1 ) { for ( i=0; i c = *pCodeStr; mCmdParam.ByteWrite.mByteBuffer[i] = c; if ( c == 0 ) break; pCodeStr++; } if ( i == 0 ) break; mCmdParam.ByteWrite.mByteCount = i; while(CH375ByteWrite( )!=ERR_SUCCESS); } mCmdParam.Close.mUpdateLen = 1; while(CH375FileClose()!=ERR_SUCCESS);
电路图按照REAME文档第三页2.4.2的参考图(上面那个)!!