CH376S寫不進數據,麻煩幫忙分析下!

用的是PIC18F單片機,可建立TXT文件,放在電腦中也可以打開,但是寫不進去數據,CH376_WR_CMD_PORT( CMD_BYTE_WRITE );返回值為0x14,而非0x1E ,定義外部中斷中由全局變量sta獲取狀態(tài)值,如下:

void interrupt CH376HMInterrupt ()

{

? ? if(CCP3IF==1)

? ? {

? ? ? ? CH376_WR_CMD_PORT(CMD_GET_STATUS);

? ? ? ? delay_2us();

? ? ? ? sta=CH376_RD_DAT_PORT( );

? ? ? ? CCP3IF=0;

? ? }

} 不知道這樣寫對不對? ? 還有個問題:xEndCH376Cmd( );這個意思是CS=1嗎?這個,程序中我沒加,我是在結束后就令CS=1;

unsigned char Set_Mode(unsigned char mode)

{

? ? unsigned char temp;

? ? CH376_WR_CMD_PORT(CMD_SET_USB_MODE);

? ? CH376HM_DATA_WR(mode);

? ? temp=CH376_RD_DAT_PORT( );

? ? return temp;

}


voidCH376SetFileName( unsigned char *name ) ?/* 設置將要操作的文件的文件名 */

{

? ? UINT8c;

? ? CH376_WR_CMD_PORT( CMD10_SET_FILE_NAME );

? ? c = *name;

? ? CH376HM_DATA_WR( c );

? ? while ( c ) {

? ? ? ? name ++;

? ? ? ? c = *name;

? ? ? ? if ( c == DEF_SEPAR_CHAR1 || c == DEF_SEPAR_CHAR2 ) c = 0; ?/* 強行將文件名截止 */

? ? ? ? CH376HM_DATA_WR( c );

? ? }

}

void ? ?CH376FileOpen( unsigned char *name ) ?/* 在根目錄或者當前目錄下新建文件,如果文件已經存在那么先刪除 */

{

? ? if ( name ) CH376SetFileName( name ); ?/* 設置將要操作的文件的文件名 */

? ? CH376_WR_CMD_PORT( CMD_FILE_OPEN );

}

void ? ?CH376FileCreate( unsigned char *name ) ?/* 在根目錄或者當前目錄下新建文件,如果文件已經存在那么先刪除 */

{

? ? if ( name ) CH376SetFileName( name ); ?/* 設置將要操作的文件的文件名 */

? ? CH376_WR_CMD_PORT( CMD0H_FILE_CREATE );

}

unsigned char CH376WriteReqBlock( unsigned char *buf ) ?/* 向內部指定緩沖區(qū)寫入請求的數據塊,返回長度 */

{

? ? UINT8s, l;

? ? CH376_WR_CMD_PORT( CMD_WR_REQ_DATA );

? ? s = l = CH376_RD_DAT_PORT( ); ?/* 長度 */

? ? if ( l ) {

? ? ? ? do {

? ? ? ? ? ? CH376HM_DATA_WR( *buf );

? ? ? ? ? ? buf ++;

? ? ? ? } while ( -- l );

? ? }

? ? //xEndCH376Cmd( );

? ? return( s );

}

unsigned charCH376ByteWrite( unsigned char *buf, unsigned short ReqCount, unsigned short *RealCount ) ?/* 以字節(jié)為單位向當前位置寫入數據塊 */

{

? ? unsigned char s=0;

? ? CH376_WR_CMD_PORT( CMD_BYTE_WRITE );

? ? CH376HM_DATA_WR( (unsigned char)ReqCount );

? ? CH376HM_DATA_WR( (unsigned char)(ReqCount>>8) );

? ? //xEndCH376Cmd( );

? ? if ( RealCount ) *RealCount = 0;

? ? while ( 1 ) { ? ?//此處的sta是獲取反應的中斷狀態(tài)

? ? ? ? s=sta; ? ? ? //在中斷中獲取狀態(tài)賦予sta

? ? ? ? if ( s== USB_INT_DISK_WRITE) {

? ? ? ? ? ? ? ? s = CH376WriteReqBlock( buf ); ?/* 向內部指定緩沖區(qū)寫入請求的數據塊,返回長度 */

? ? ? ? ? ? ? ? CH376_WR_CMD_PORT( CMD_BYTE_WR_GO );

? ? ? ? ? ? ? ? //xEndCH376Cmd( );

? ? ? ? ? ? ? ? buf += s;

? ? ? ? ? ? ? ? if ( RealCount ) *RealCount += s;

? ? ? ? }

/*else if ( s == USB_INT_SUCCESS ) return( s );*/ ?/* 結束 */

? ? ? ? else return( s ); ?/* 錯誤 */

? ? }

}

void main() {

? ? unsigned char buff[]={0x12,0x14,0x15},s=0;

? ? init_ccp3();

? ? init_IO();

? ? mDelay100mS( ); ?/* 延時100毫秒,CH376模塊上電后需要100毫秒左右的復位時間 */

? ? mDelay100mS( );

? ? mDelay100mS( );

? ? mDelay100mS( );

? ? CH376_WR_CMD_PORT(CMD_RESET_ALL);

? ? mDelay100mS( );

? ? mDelay100mS( );

? ? mDelay100mS( );

? ? mDelay100mS( );

? ? mDelay100mS( );


? ? CH376HM_INT_EN=1; ? //開中斷

? ? Set_Mode(0x06); ? ?//設置模式

? ? while(sta!=USB_INT_CONNECT);

? ? CH376_WR_CMD_PORT(CMD_DISK_INIT); //初始化

? ? while(sta!=0x14);

? ? delay_2us();

? ? delay_2us();

? ? CH376FileCreate("/MY001.TXT\0");

? ? s=CH376ByteWrite( buff, 3, NULL ) ;

? ? CH376_WR_CMD_PORT(CMD1H_FILE_CLOSE); ? ?//CMD1H_FILE_CLOSE ?0x36

? ? delay_2us();

? ? delay_2us();

? ? while(1)

? ? {


? ? }

}




在線等,麻煩哪位朋友能夠幫忙解答下,謝謝!


你好,請問你是什么接口通訊的?


你好!并口的!


你好!我又一步一步在線調

unsigned charCH376ByteWrite( unsigned char *buf, unsigned short ReqCount, unsigned short *RealCount )?

?


這個函數在第二次進while(1)時中斷返回值為0X1E,第一次進while(1)返回值都是0x14的。


感覺你第一次讀到的0x14應該是前面的中斷返回,你需要檢查一下在進行ByteWrite這個操作前,有沒有取消前面的中斷狀態(tài),保證取消了再進行ByteWrite這個操作,發(fā)送CMD_BYTE_WRITE命令得到的第一個中斷返回應該是0x1E。


你好!全部移植了沁恒的程序,現(xiàn)在可以寫了,寫的也沒問題,但是讀的話,讀漢字是亂碼。這是是什么情況?程序如下:

?CH376FileOpen( "/ME01.TXT\0" );

? ? CH376ByteRead( buff1, ?strlen((const char *)buff), NULL);

? ? s = CH376FileClose( TRUE );

麻煩幫忙看下!謝謝!



你好:

如果讀取字符有沒有亂碼?你可以使用UltraEdit軟件轉換文本文件到16進制查看,看看讀取內容和實際有什么差別,讀取的字節(jié)個數是否正確?


你好!我最近也在用這款芯片,也是用的并口模式,但在測試程序時,寫入數據0x65,返回值總是為0,可以發(fā)你的程序給我參考下嗎??? 我的QQ郵箱是個人信息保護,已隱藏


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

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