我用CH372做USB向上位機傳送數(shù)據(jù),為什么不能大批量的傳送!郁悶!!高手幫幫忙啊!![Emot]13[/Emot]
批量端點一次上傳數(shù)據(jù)的最大長度為64,要進行大批量傳送,你可以循環(huán)上傳才可以.
這個問題已經(jīng)解決了!1 現(xiàn)在的問題是在傳送外部存儲器中的數(shù)據(jù)傳到上位機的全是0A,和存儲器中的內(nèi)容更本沒關(guān)系,這是怎么一回事情?請高手幫忙!!
一次傳送多少數(shù)據(jù)?測試下外部RAM有沒有問題.
大批量的數(shù)據(jù),有上萬組數(shù)據(jù)!!外部存儲器我已經(jīng)測試過了,沒有問題.地址也沒有沖突!!就是簡單的從外部存儲器向上位機傳數(shù)據(jù)還是這樣的問題!!
你其實只需要在上一次上傳成功之后,先解鎖,再將緩沖區(qū)的數(shù)據(jù)送到372的上傳緩沖區(qū)即可。單次能正常上傳的話,循環(huán)多次上傳也肯定沒問題。大體也就是:
case USB_INT_EP2_IN: { /* 批量數(shù)據(jù)發(fā)送成功 */ CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); /* 釋放當(dāng)前USB緩沖區(qū) */ printf("EP2_IN \n"); if(up_data_length){ //上傳后續(xù)數(shù)據(jù) length=up_data_length>64?64:up_data_length; up_data_length=up_data_length-length; CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* 向USB端點2的發(fā)送緩沖區(qū)寫入數(shù)據(jù)塊 */ CH375_WR_DAT_PORT( length ); for ( i = 0; i < length; i ++ ) CH375_WR_DAT_PORT( DATA_BUF[ up_length+i ] ); up_length=up_length+length; } break; }