目前情況描述:
1:本人現(xiàn)在使用CH569的與PC實(shí)現(xiàn)BULK通訊,其中CH569參考官方代碼“CH372Device”和“CH569_BULK_HSPI_Lib”,PC代碼參考“USB3.0Demo”,且CH569添加了HSPI傳輸?shù)牟糠?,每?dāng)HSPI收到一個(gè)完整的包,則CH569向上位機(jī)傳輸一次數(shù)據(jù);HSPI每秒大概會(huì)產(chǎn)生1200個(gè)4k字節(jié)的數(shù)據(jù)包,所以PC每秒會(huì)向CH569進(jìn)行1200次BULK傳輸。
2:上位機(jī)使用的庫(kù)是“CH375DLL64.dll”和“CH375DLL64.lib”,軟件是QT4.9
,目前問題描述:
1:上位機(jī)在循環(huán)當(dāng)中一直使用CH375ReadEndP函數(shù)使用EP2向下位機(jī)請(qǐng)求數(shù)據(jù),運(yùn)行幾秒到幾十秒不等的時(shí)間后CH375ReadEndP()函數(shù)中的ioLength會(huì)返回0;在CH569的EP2_IN_Callback函數(shù)當(dāng)中添加Print函數(shù)打印運(yùn)行信息,發(fā)現(xiàn)當(dāng)ioLength返回0后,串口么沒有打印CH569的EP2_IN_Callback函數(shù)的運(yùn)行信息,證明CH569并未完成BULK傳輸。
2:使用BUSBound抓包CH569發(fā)現(xiàn)當(dāng)ioLength返回0的時(shí)候USTS先抓到一個(gè)C0000011的值,通過查詢資料的得知這個(gè)值的意思是“The device returned a transaction error (defined for backward compatibility with the USB 1.0).”隨后USTS抓到一個(gè)值C0010000,這個(gè)值的意思是“The USB stack reports this error whenever it completed a transfer because of an AbortPipe request from the client driver.”。
3:在貴司的技術(shù)社區(qū)上發(fā)現(xiàn)也有人碰到CH375ReadEndP,當(dāng)時(shí)評(píng)論說的是“打開設(shè)備的函數(shù)里 ,有沒有調(diào)用緩沖上傳模式,如果調(diào)用緩沖上傳模式,讀數(shù)據(jù)可能會(huì)返回0”。我在函數(shù)CH375OpenDevice當(dāng)中沒有找到開關(guān)緩沖上傳模式的參數(shù),于是我嘗試用函數(shù)CH375SetBufUpload和CH375SetBufDownload關(guān)閉上下傳緩沖區(qū),發(fā)現(xiàn)無法解決問題。
4:由于目前的CH375ReadEndP是在一個(gè)循環(huán)里面一直被調(diào)用的,我試著在循環(huán)當(dāng)中添加一個(gè)Sleep(1)的延遲,發(fā)現(xiàn)CH375ReadEndP函數(shù)的ioLength不會(huì)返回0且可以程序正常運(yùn)行,但是讀寫速度也被極大的降低了(達(dá)不到每秒讀取1200次),所以添加延遲的方案不太靠譜。
5:現(xiàn)在希望貴司能幫我看看如何解決CH375ReadEndP的ioLength返回0的情況。