提問:CH375初始化不成功????

電路: STC89C52單片機 -----CH375 INTO(12腳) ----INT#(1腳) TXD(11腳) -----TXD(5腳) RXD(10腳)-------RXD(6腳),使用12M晶體,30P電容 CH375 ,9腳接0.01U電容,1-2腳接0.1U電容 5V供電.

main( ) { UINT8 i; LED_OUT_INIT( ); LED_OUT_ACT( ); /* 開機后LED亮一下以示工作 */ mDelaymS( 100 ); /* 延時100毫秒 */ LED_OUT_INACT( ); mInitSTDIO( ); /* 為了讓計算機通過串口監(jiān)控演示過程 */ printf( "Start\n" ); i = CH375LibInit( ); /* 初始化CH375程序庫和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */

初始化CH375出錯. P1,4 一直閃 請問什么問題啊!

你以串口進行通信的話,可以參考CH375LIB.ZIP\MCS51\FILELIB5\EXAM7下的例子程序,你最好先不用庫的初始化,先發(fā)測試命令測試你的硬件連線是否正常。 還有就是你用我們的子程序庫的話,大概需要10K左右的程序空間,你用STC89C52單片機,程序空間應(yīng)該不夠。


測試命令? 能給個例程 嗎 新手 求!


測試命令實際上就是通過命令端口寫一個0X06的命令下去,接著在通過數(shù)據(jù)端口寫一個數(shù)據(jù)下去,在通過數(shù)據(jù)端口將數(shù)據(jù)讀回來。


/* 2004.03.05 **************************************** ** Copyright (C) W.ch 1999-2004 ** ** Web: http://www.winchiphead.com ** **************************************** ** USB 1.1 Host Examples for CH375 ** ** KC7.0@MCS-51 ** **************************************** */ /* CH375作為USB主機接口的程序示例 */

/* MCS-51單片機C語言的示例程序, U盤數(shù)據(jù)讀寫 */

#include #include #include

/* 定義CH375命令代碼及返回狀態(tài) */ #include "CH375INC.H" /* CH375特性 */ #define CH375_BLOCK_SIZE 64 /* CH375 maximum data block size */ #define CH375_BLK_PER_SEC 8 /* CH375 block per sector, SECTOR_SIZE/CH375_BLOCK_SIZE */

/* 以下定義適用于MCS-51單片機,其它單片機參照修改,為了提供C語言的速度需要對本程序進行優(yōu)化 */ #include unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375數(shù)據(jù)端口的I/O地址 */ unsigned char xdata DATA_BUFFER[512] _at_ 0x0000; /* 外部RAM數(shù)據(jù)緩沖區(qū)的起始地址,長度不少于一次讀寫的數(shù)據(jù)長度 */ sbit CH375_INT_WIRE = 0xB0^2; /* P3.2, INT0, 連接CH375的INT#引腳,用于查詢中斷狀態(tài) */

/* 在P1.4連接一個LED用于監(jiān)控演示程序的進度,低電平LED亮,當(dāng)U盤插入后亮 */ sbit P1_4 = P1^4; sbit P1_5 = P1^5;

#define LED_OUT_ACT( ) { P1_4 = 0; } /* P1.4 低電平驅(qū)動LED顯示 */ #define LED_OUT_INACT( ) { P1_4 = 1; } /* P1.4 低電平驅(qū)動LED顯示 */ #define LED_DAT_CT( ) { P1_5 = 0; } /* P1.4 低電平驅(qū)動LED顯示 */

/* 延時2微秒,不精確 */ void delay2us( ) { unsigned char i; for ( i = 2; i != 0; i -- ); }

/* 延時1微秒,不精確 */ void delay1us( ) { unsigned char i; for ( i = 1; i != 0; i -- ); }

/* 延時100毫秒,不精確 */ void mDelay100mS( ) { unsigned char i, j, c; for ( i = 400; i != 0; i -- ) for ( j = 400; j != 0; j -- ) c+=3; }

/* 基本操作 */

void CH375_WR_CMD_PORT( unsigned char cmd ) { /* 向CH375的命令端口寫入命令,周期不小于4uS,如果單片機較快則延時 */ delay2us(); CH375_CMD_PORT=cmd; delay2us(); }

void CH375_WR_DAT_PORT( unsigned char dat ) { /* 向CH375的數(shù)據(jù)端口寫入數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ CH375_DAT_PORT=dat; delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ }

unsigned char CH375_RD_DAT_PORT() { /* 從CH375的數(shù)據(jù)端口讀出數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ return( CH375_DAT_PORT ); }

/* 等待CH375中斷并獲取狀態(tài) */ unsigned char mWaitInterrupt() { /* 主機端等待操作完成, 返回操作狀態(tài) */ while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ return( CH375_RD_DAT_PORT( ) ); /* c = CH375_RD_DAT_PORT( ); 返回中斷狀態(tài) */ /* if ( c == USB_INT_DISCONNECT ) ?; 檢測到USB設(shè)備斷開事件 */ /* else if ( c == USB_INT_CONNECT ) ?; 檢測到USB設(shè)備連接事件 */ }

/* 檢查操作狀態(tài),如果錯誤則顯示錯誤代碼并停機,應(yīng)該替換為實際的處理措施 */

/* 設(shè)置CH375為USB主機方式 */ unsigned char mCH375Init( ) { unsigned char i; LED_OUT_ACT( ); /* 開機后LED亮一下以示工作 */ mDelay100mS( ); /* 延時100毫秒 */ // LED_OUT_INACT( );

#ifdef TEST_CH375_PORT unsigned char c; CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 測試工作狀態(tài) */ CH375_WR_DAT_PORT( 0x55 ); /* 測試數(shù)據(jù) */ LED_OUT_INACT( ); /* 開機后LED亮一下以示工作 */ mDelay100mS( ); /* 延時100毫秒 */ //LED_OUT_ACT( ); c = CH375_RD_DAT_PORT( ); /* 返回數(shù)據(jù)應(yīng)該是測試數(shù)據(jù)取反 */ if ( c != 0xaa ) { /* CH375出錯 */ LED_DAT_CT( ); for ( i = 100; i != 0; i -- ) { /* 強制數(shù)據(jù)同步 */ CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* CH375執(zhí)行硬件復(fù)位 */ c = CH375_RD_DAT_PORT( ); /* 延時 */ } mDelay100mS( ); /* 延時至少30mS */ } #endif CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); /* 設(shè)置USB工作模式 */ CH375_WR_DAT_PORT( 6 ); /* 模式代碼,自動檢測USB設(shè)備連接 */ for ( i = 0xff; i != 0; i -- ) /* 等待操作成功,通常需要等待10uS-20uS */ if ( CH375_RD_DAT_PORT( ) == CMD_RET_SUCCESS ) break; /* 操作成功 */ if ( i != 0 ) return( 0 ); /* 操作成功 */ else return( 0xff ); /* CH375出錯,例如芯片型號錯或者處于串口方式或者不支持 */ }

main( ) { unsigned char c; LED_OUT_ACT( ); /* 開機后LED亮一下以示工作 */ mDelay100mS( ); /* 延時100毫秒 */ LED_OUT_INACT( ); LED_DAT_CT( ); mDelay100mS( ); P1_5=1; // mInitSTDIO( ); // printf( "Start\n" ); c = mCH375Init( ); /* 初始化CH375 */ while ( 1 ) { LED_OUT_ACT( ); /* LED閃爍 */ mDelay100mS( ); LED_OUT_INACT( ); mDelay100mS( ); } // printf( "Insert USB disk\n" ); // LED_OUT_ACT( ); }

看這段程序?qū)?> 還是不行啊。 電路如下!


電路圖 :UploadImages/20077261023993.rar20077261041094.jpg


急 急 在線等 QQ:54549122 歡迎交流啊



首先375必須用12MHZ的晶振,不能采用11.0592的;再著TXD、RXD與單片機的TXD、RXD交叉相連; 下面是串口通信的三個讀寫子程序:

/*CH375與單片機以串口相連接三個子程序*/ void CH375_PORT_INIT( ) { SCON = 0xD0; //設(shè)置串口為9位數(shù)據(jù) //設(shè)置波特率和其它串口參數(shù) } void xWriteCH375Cmd( unsigned char mCmd ) { TI = 0; TB8 = 1; SBUF = mCmd; while ( TI == 0 ); }

void xWriteCH375Data( unsigned char mData ) { TI = 0; TB8 = 0; SBUF = mData; while ( TI == 0 ); }

unsigned char xReadCH375Data( void ) { while ( RI == 0 ); RI = 0; return( SBUF ); }


老大 還是不行啊. 直接幫寫個例程吧! 單片機 12M INT0 ---INT# TXD--RXD RXD-TXD P1.4 P1.5 P1.6 做指示 急 謝謝了


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

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