376使用,打開不存在的文件返回0x13

使用dspic30f6014a通過串口與376通訊,能夠判斷u盤連接,和初始化,但打開一個不存在的文件時 返回0x14

程序如下


voidxWriteCH376Cmd( UINT8 mCmd ) ?/* 向CH376寫命令 */

{

WriteUART2(SER_SYNC_CODE1);

sleepm(0);

WriteUART2(SER_SYNC_CODE2);

sleepm(0);

WriteUART2(mCmd);

sleepm(0);

}


voidxWriteCH376Data( UINT8 data ) ?/* 向CH376寫數(shù)據(jù) */

{

while(!U2STAbits.TRMT);

? ? if(U2MODEbits.PDSEL == 3)

? ? ? ? U2TXREG = data;

? ? else

? ? ? ? U2TXREG = data & 0xFF;

? ? while(!U2STAbits.TRMT); ? ??

}


UINT8xReadCH376Data( void ) ?/* 從CH376讀數(shù)據(jù) */

{

while(!U2STAbits.URXDA);

? ? if(U2MODEbits.PDSEL == 3)

? ? ? ? return (U2RXREG);

? ? else

? ? ? ? return (U2RXREG & 0xFF);

}


/* 查詢CH376中斷(INT#低電平) */

UINT8Query376Interrupt( void )

{

//#ifdefCH376_INT_WIRE

//return( CH376_INT_WIRE ? FALSE : TRUE ); ?/* 如果連接了CH376的中斷引腳則直接查詢中斷引腳 */

//#else

if ( PORTFbits.RF7 !=1 ) { ?/* 如果未連接CH376的中斷引腳則查詢串口中斷狀態(tài)碼 */

//RI = 0;

return( TRUE );

}

else return( FALSE );

//#endif

}


UINT8mInitCH376Host( void ) ?/* 初始化CH376 */

{

UINT8res;

sleepm(50);

//CH376_PORT_INIT( ); ?/* 接口硬件初始化 */

InitUART2();

xWriteCH376Cmd(CMD00_RESET_ALL);

sleepm(400);

xWriteCH376Cmd( CMD11_CHECK_EXIST ); ?/* 測試單片機與CH376之間的通訊接口 */

xWriteCH376Data( 0x65 );

res = xReadCH376Data( );

if ( res != 0x9A ) return( ERR_USB_UNKNOWN ); ?/* 通訊接口不正常,可能原因有:接口連接異常,其它設備影響(片選不唯一),串口波特率,一直在復位,晶振不工作 */


xWriteCH376Cmd( CMD21_SET_BAUDRATE ); ?/* 設置串口通訊波特率 */


xWriteCH376Data( 0x02 );

xWriteCH376Data( 0xb2 );

res = xReadCH376Data( );

if ( res != CMD_RET_SUCCESS ) return( ERR_USB_UNKNOWN ); ?/* 通訊波特率切換失敗,建議通過硬件復位CH376后重試 */

? ? ? xWriteCH376Cmd( CMD11_SET_USB_MODE ); ?/* 設備USB工作模式 */

xWriteCH376Data( 0x06 );

sleepm(0);

res = xReadCH376Data( );

if ( res == CMD_RET_SUCCESS ) return( USB_INT_SUCCESS );

else return( ERR_USB_UNKNOWN ); ?/* 設置模式錯誤 */

}



UINT8Wait376Interrupt( void ) ?/* 等待CH376中斷(INT#低電平),返回中斷狀態(tài)碼, 超時則返回ERR_USB_UNKNOWN */

{

UINT8 ?i;

//#ifdefDEF_INT_TIMEOUT

//#ifDEF_INT_TIMEOUT < 1

//while ( Query376Interrupt( ) == FALSE ); ?/* 一直等中斷 */

while( PORTFbits.RF7==1);

return( CH376GetIntStatus( ) ); ?/* 檢測到中斷 */

? ? ? i=0;

}


//////////////////////////////////////////////////////////////////////////////////

?mInitCH376Host( ?);

??

? while(s != USB_INT_SUCCESS ) { ?/* 檢查U盤是否連接,等待U盤插入,對于SD卡,可以由單片機直接查詢SD卡座的插拔狀態(tài)引腳 */

U2STAbits.OERR=0;//清接收緩存

s= CH376DiskConnect( );

k=s;

sleepm( 100 );

}

sleepm( 200 ); ?/* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */


/* 對于檢測到USB設備的,最多等待10*50mS */

for ( s = 0; s < 10; s ++ ) { ?/* 最長等待時間,10*50mS */

sleepm( 50 );

//printf( "Ready ?\n" );

U2STAbits.OERR=0;

s=CH376DiskMount( );

if ( ?s== USB_INT_SUCCESS ) break; ?/* 初始化磁盤并測試磁盤是否就緒 */

? ? ? ? ? ??

}

sleepm( 200 ); ?/* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */

U2STAbits.OERR=0;

s = CH376FileOpen("/MYADC.TXT\0"); ?/* 打開文件,該文件不存在 */

if ( s == USB_INT_SUCCESS ) { ?/* s ? = ?0x14 */

//printf( "File size = %ld\n", CH376GetFileSize( ) ); ?/* 讀取當前文件長度 */

//printf( "Locate tail\n" );

s = CH376ByteLocate( 0xFFFFFFFF ); ?/* 移到文件的尾部 */

//mStopIfError( s );

}

else if ( s == ERR_MISS_FILE ) { ?/* 沒有找到文件,必須新建文件 */

//printf( "Create\n" );

s = CH376FileCreate( NULL ); ?/* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建,不必再提供文件名,剛才已經(jīng)提供給CH376FileOpen */

//mStopIfError( s );

}



你有沒有換個U盤或者將次U盤格式化一下試試。


換過u盤,也格式化試了,還一樣,聽說有376的調(diào)試工具呀,給我發(fā)一個,我想試試是376或u盤有問題。

我的郵箱個人信息保護,已隱藏


測試軟件已發(fā)。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频