[求助]CH375發(fā)送數(shù)據(jù)給ARM主板的USB device口

用單片機(jī)STC89C52和CH375做了個(gè)數(shù)據(jù)采集器,把串口傳來的數(shù)據(jù)(大概120K/s bit) 轉(zhuǎn)換成USB數(shù)據(jù)發(fā)給ARM(S3C2440)板的USB device口,或通過它發(fā)送指令給下位機(jī), 現(xiàn)在對(duì)USB和CH375不太了解,望高手幫忙! 單片機(jī)程序采用查詢INT#處理收發(fā)數(shù)據(jù):

/*采用查詢方式*/ unsigned char wait_interrupt(void) { CH375_INT_WIRE = 1; while( CH375_INT_WIRE ) /* INT#位高電平,等待 */ { if( RI==1 ) /* 如果串口收到數(shù)據(jù),退出等待*/ { CH375_WR_CMD_PORT( CMD_ABORT_NAK );/*放棄當(dāng)前操作*/ return( 0xFF ); //0xFF代表放棄 } } CH375_WR_CMD_PORT( CMD_GET_STATUS ); return( CH375_RD_DAT_PORT() ); }

現(xiàn)在發(fā)現(xiàn)當(dāng)串口數(shù)據(jù)量大時(shí),程序就會(huì)死,對(duì)于CMD_ABORT_NAK 這條命令不太了解。 1. 當(dāng)單片機(jī)正在發(fā)數(shù)據(jù)給USB device時(shí)(等待發(fā)送狀態(tài)時(shí)),如果串口接收到數(shù)據(jù),那這條發(fā)送的數(shù)據(jù)會(huì)(因?yàn)閳?zhí)行CMD_ABORT_NAK而)被取消嗎?

2. 單片機(jī)主程序不停的發(fā)送"IN令牌"來查詢是否有來自USB device數(shù)據(jù),那發(fā)送了很都條IN事物令牌后,只要執(zhí)行一條CMD_ABORT_NAK 就可以放棄之前所有發(fā)送的IN事物嗎?

3. CH375處理U盤時(shí)有USB_INT_DISK_READ,USB_INT_DISK_WRITE中斷狀態(tài)可以查詢,但與其他USB device通訊時(shí)就不能用這兩個(gè)狀態(tài)來判斷, 請問有其他的可以用嗎,不知道CH374有沒有這方面的優(yōu)勢?

4. 我把中斷程序從查詢方式改為中斷方式時(shí),只單向把數(shù)據(jù)傳給usb device時(shí)可以傳大量數(shù)據(jù),但收發(fā)數(shù)據(jù)時(shí),如果中斷狀態(tài)是USB_INT_SUCCESS,程序不好控制是有數(shù)據(jù)IN, 還是發(fā)送數(shù)據(jù)成功?

搞的有點(diǎn)郁悶,只能請教高手了!

NAK是放棄NAK重試。否則CH375收到NAK后會(huì)一直自己重試。 發(fā)送一條IN,USB DEVICE一般會(huì)收到兩種類型的包,NAK或者是數(shù)據(jù)。如果收到NAK,一般來說表示設(shè)備沒有準(zhǔn)備好數(shù)據(jù)。如果收到數(shù)據(jù),則CH375把數(shù)據(jù)收到緩沖區(qū)中,然后退出發(fā)送IN。


感謝紅桃六, 現(xiàn)在覺得我所有發(fā)送和接受都用這個(gè)中斷查詢函數(shù),好像有點(diǎn)亂,想重新寫一個(gè),哪位有類似代碼可以介紹下,哪怕是思路也行,不勝感激!


你現(xiàn)在不用著急重新寫代碼,先把這個(gè)代碼調(diào)通后,在根據(jù)自己的需要來去修改。否則問題出在什么地方不好查


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

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