最近看到資料,CH375做主機和372通訊時不需要以下操作: get_descr(); set_addr(); get_descr(); set_config(); 為什么不需要上述操作?分配地址,配置怎么辦?
和計算機進行通信的時候,375是做設備的,你如果用內置固件的話是不需要上傳任何東西。
不是的,我已經說了是375和 372通訊 ,如下程序 #ifdef DEVICE_NOT_CH37X /* 如果設備端是CH37X,那么以下步驟是可選的, 如果是其它USB芯片,那么需要執(zhí)行以下步驟,并且要分析配置描述符的數(shù)據(jù)獲得配置值以及端點號,并修改本程序中的端點號, 關于如何分析配置描述符請參考CH375PRT.C文件 */ #define USB_RESET_FIRST 1 /* USB規(guī)范中未要求在USB設備插入后必須復位該設備,但是計算機的WINDOWS總是這樣做,所以有些USB設備也要求在插入后必須先復位才能工作 */ #ifdef USB_RESET_FIRST printf("There is no ch37X\n"); set_usb_mode( 7 ); /* 復位USB設備,CH375向USB信號線的D+和D-輸出低電平 */ /* 如果單片機對CH375的INT#引腳采用中斷方式而不是查詢方式,那么應該在復制USB設備期間禁止CH375中斷,在USB設備復位完成后清除CH375中斷標志再允許中斷 */ for ( i=0; i<250; i++ ) { delay2us(); delay2us(); delay2us(); delay2us(); } /* 復位時間不少于1mS,建議為10mS */ set_usb_mode( 6 ); /* 結束復位 */ while ( wait_interrupt()!=USB_INT_CONNECT ); /* 等待復位之后的設備端再次連接上來 */ for ( i=0; i<250; i++ ) delay2us(); /* 有些USB設備要求延時數(shù)百毫秒后才能工作 */ P16=0; #endif get_descr(1); /* 獲取USB設備的設備描述符 */ set_addr(5); /* 設置USB設備的地址,因為只有一個USB設備,所以可以分配1到126之間的任意值 */ get_descr(2); /* 獲取USB設備的配置描述符 */ set_config(1); /* 設置USB配置值,該數(shù)值來自USB設備的配置描述符 */ #endif
如果是375操作372的話,獲取設備描述符之類的是不需要的,可以直接進行通信
可是我想知道的是為什么不需要?不知道能不能解答一下,謝謝!
實際在我們375芯片內部,只要插上去是CH37X芯片的話,我們的375芯片就將CH37X芯片給自動的枚舉了,對于單片機端就可以不需要枚舉了,只需要往相應的端點發(fā)送數(shù)據(jù)就可以了。