關(guān)于CH569使用CH372Device程序?qū)崿F(xiàn)BULK傳輸中上位機(jī)的CH375ReadEndP返回0的問題

目前情況描述:

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.”。

image.png

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的情況。

您好

您描述的問題還有更多細(xì)節(jié)需要確認(rèn)下

如:是在讀過程中偶爾有某一次lenth會(huì)等于0還是出現(xiàn)狀況之后一直都等于0?

您可以與將問題發(fā)送至我的郵箱:dxy@wch.cn或撥打我的電話:025-52635387與我聯(lián)系


只要在讀取的過程中出現(xiàn)一次lenth=0的情況,后續(xù)的讀取操作lenth一直都是0


可以試下調(diào)用這個(gè)CH375SetTimeout函數(shù)設(shè)置一下讀寫超時(shí),設(shè)置成1000試一下,正常讀寫速度不受影響,就是偶發(fā)硬件那邊上報(bào)的慢的話不會(huì)超時(shí)退出,這樣就不會(huì)出現(xiàn)CH375ReadEndP函數(shù)返回0的情況


我嘗試在上位機(jī)調(diào)用函數(shù)CH375SetTimeout,并且設(shè)定timeout時(shí)間是1000,CH375ReadEndP函數(shù)還是會(huì)返回0。


您好,可以通過郵箱或者電話聯(lián)系我哦


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

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