CH376使用STC單片機(jī)串口控制,按照例程修改,程序可以正常跑完,但無法在U盤中創(chuàng)建文件,ACT輸出低電平。
s = mInitCH376Host(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 初始化CH376 */
mStopIfError(s);
while (1)?
{
while (CH376DiskConnect()!= USB_INT_SUCCESS) ? ? ? /* 檢查U盤是否連接,等待U盤插入,對(duì)于SD卡,可以由單片機(jī)直接查詢SD卡座的插拔狀態(tài)引腳 */
{ ?
mDelaymS(100);
}
mDelaymS(200); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 延時(shí),可選操作,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */
for ( i = 0; i < 100; i ++ ) ? ? ? ? ? ? ? ? ? ? ? /* 最長(zhǎng)等待時(shí)間,100*50mS */
{ ?
mDelaymS(50);
s = CH376DiskMount(); ? ? ? ? ? ? ? ? ? ? ? ? /* 初始化磁盤并測(cè)試磁盤是否就緒 */
mDelaymS(5);
if ( s == USB_INT_SUCCESS ) ? ? ? ? ? ? ? ? ? ?/* 準(zhǔn)備好 */
break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
else if ( s == ERR_DISK_DISCON ) ? ? ? ? ? ? ? ? ? ? ? /* 檢測(cè)到斷開,重新檢測(cè)并計(jì)時(shí) */
break; ?
if ( CH376GetDiskStatus() >= DEF_DISK_MOUNTED && i >= 5 ) ? ? ? ? ?/* 有的U盤總是返回未準(zhǔn)備好,不過可以忽略,只要其建立連接MOUNTED且嘗試5*50mS */
? ?break; ? ? ? ? ??
}
if ( s == ERR_DISK_DISCON ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 檢測(cè)到斷開,重新檢測(cè)并計(jì)時(shí) */
{ ?
continue;
}
if ( CH376GetDiskStatus() < DEF_DISK_MOUNTED ) ? ? ? ? ? /* 未知USB設(shè)備,例如USB鍵盤、打印機(jī)等 */
{ ?
goto UnknownUsbDevice;
}
i = CH376ReadBlock(buf); ? ? ? ? ? ? ? ? /* 如果需要,可以讀取數(shù)據(jù)塊CH376_CMD_DATA.DiskMountInq,返回長(zhǎng)度 */
mDelaymS(5);
if ( i == sizeof(INQUIRY_DATA) ) ? ? ? ? /* U盤的廠商和產(chǎn)品信息 */
? ?{ ?
buf[i] = 0;
}
/******************************* 創(chuàng)建新文件 ***********************************/ ??
strcpy( TarName, "\\FILE1.TXT" );
s = CH376FileCreatePath( TarName ); ? ?/* 新建多級(jí)目錄下的文件,支持多級(jí)目錄路徑,輸入緩沖區(qū)必須在RAM中 */
mStopIfError( s );
strcpy( buf, "123456789\xd\n" );
s = CH376ByteWrite( buf, strlen(buf), NULL ); ? ? ? ? /* 以字節(jié)為單位向當(dāng)前位置寫入數(shù)據(jù)塊 */
mStopIfError( s );
s = CH376FileClose( TRUE ); ? ? ? ? ? ? ? ? ? ? ? ? ? /* 關(guān)閉文件,對(duì)于字節(jié)讀寫建議自動(dòng)更新文件長(zhǎng)度 */
mStopIfError( s );
//P54 = 1;
mDelaymS( 500 );
UnknownUsbDevice:/* 未知設(shè)備 */
? ??
while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 檢查U盤是否連接,等待U盤拔出 */
{ ?
mDelaymS( 100 );
}
mDelaymS( 200 );
}
請(qǐng)問是什么原因?謝謝