我在做一塊板子,框圖如下: 單片機 《------》 CH375 《------》 USB 串口 U盤
在寫程序的時候,我看了PCM給我的介紹的CH375EVT\PUB\MCS51C\MISCELL\CH375EV1.C參考程序.里面的一些子程序我不知道是干嘛用的,也不知道我要[b]實現(xiàn)單片機讀U盤內(nèi)容[/b]是否需要到這些函數(shù),可以解析一下嗎?不明白的子程序如下:
/* 對目標USB設(shè)備執(zhí)行控制傳輸: 獲取USB描述符 */ void mCtrlGetDescr( unsigned char type ) { mIntStatus = 0; /* 清中斷狀態(tài) */ CH375_WR_CMD_PORT( CMD_GET_DESCR ); /* 控制傳輸-獲取描述符 */ CH375_WR_DAT_PORT( type ); /* 0:設(shè)備描述符, 1:配置描述符 */ while ( mIntStatus == 0 ); /* 等待操作完成 */ }
/* 對目標USB設(shè)備執(zhí)行控制傳輸: 設(shè)置USB地址 */ void mCtrlSetAddress( unsigned char addr ) { mIntStatus = 0; /* 清中斷狀態(tài) */ CH375_WR_CMD_PORT( CMD_SET_ADDRESS ); /* 控制傳輸-設(shè)置USB地址 */ CH375_WR_DAT_PORT( addr ); /* 1 - 7eh */ while ( mIntStatus == 0 ); /* 等待操作完成 */ if ( mIntStatus != USB_INT_SUCCESS ) return; /* 操作失敗 */ /* 當目標USB設(shè)備的地址成功修改后,應該同步修改CH375的USB地址,否則CH375將無法與目標設(shè)備通訊 */ CH375_WR_CMD_PORT( CMD_SET_USB_ADDR ); /* 設(shè)置CH375的USB地址 */ CH375_WR_DAT_PORT( addr ); /* 修改CH375的USB設(shè)備能夠立即完成,不會產(chǎn)生中斷通知 */ }
/* 對目標USB設(shè)備執(zhí)行控制傳輸: 設(shè)置配置值 */ void mCtrlSetConfig( unsigned char value ) { mIntStatus = 0; /* 清中斷狀態(tài) */ CH375_WR_CMD_PORT( CMD_SET_CONFIG ); /* 控制傳輸-設(shè)置USB配置 */ CH375_WR_DAT_PORT( value ); while ( mIntStatus == 0 ); /* 等待操作完成 */ }
/* 設(shè)置接收的數(shù)據(jù)同步觸發(fā)位 DATA0/DATA1 */ void mSetRecvDataTog( unsigned char tog ) /* tog值: 0:清0, 1:置1 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP6 ); /* 設(shè)置主機端點的接收器 */ CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 ); delay2us( ); }
/* 設(shè)置發(fā)送的數(shù)據(jù)同步觸發(fā)位 DATA0/DATA1 */ void mSetSendDataTog( unsigned char tog ) /* tog值: 0:清0, 1:置1 */ { CH375_WR_CMD_PORT( CMD_SET_ENDP7 ); /* 設(shè)置主機端點的發(fā)送器 */ CH375_WR_DAT_PORT( tog ? 0xC0 : 0x80 ); delay2us( ); }
/* 發(fā)出令牌,執(zhí)行USB事務(wù) */ void mIssueToken( unsigned char endp, unsigned char token ) { mIntStatus = 0; /* 清中斷狀態(tài) */ CH375_WR_CMD_PORT( CMD_ISSUE_TOKEN ); /* 發(fā)出令牌,執(zhí)行事務(wù) */ CH375_WR_DAT_PORT( endp << 4 | token ); /* 高4位是端點號,低4位是令牌PID */ while ( mIntStatus == 0 ); /* 等待操作完成 */ }