發(fā)送和上傳的數據長度都對,就是得到的數據都是0,是怎么回事呀?

我用Labview編寫的上位機軟件發(fā)送和收到的數據長度好像都是對 的,可是發(fā)送下去的數據是錯誤! CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 從當前USB中斷的端點緩沖區(qū)讀取數據塊,并釋放緩沖區(qū) */ length = CH375_RD_DAT_PORT( ); /* 首先讀取后續(xù)數據長度 */ for ( i = 0; i < length; i ++ ) buffer[ i ] = CH375_RD_DAT_PORT( ); /* 接收數據包 */ 上面的語句是貴公司提供的“CH372+CH451的評估板說明和USB設計參考”中的TEST里面的。 讀到的length 是正確的,可是buffer[ ]數組里面的數據是錯誤的。是不是取數組里面的數據有講究呀? 請多多指教?。? 謝謝 200843019185396.jpg

用bushound軟件抓一下數據包看看


需要設計參考資料(光盤資料可以參考FILELIST.TXT文檔,網上資料更新) 1、如果是在沒有單片機的情況下,進行簡單的I/O輸入輸出,那么可以參考CH341的資料,CH341不需要 單片機就能獨立工作,可以提供串口、并口、兼容IIC或I2C的2線接口、兼容SPI及JTAG的4線接口、 5線接口等,可以提供多個GPIO通用I/O,可以用于控制低速模數轉換AD、DA、數字I/O、I/O擴展等。 2、如果是單片機/DSP等與計算機相連接,也就是USB設備方式的應用,那么參考CH372的資料。可以下 載CH372+CH451評估板/演示板的資料CH372EVT.ZIP,有PDF文檔和例子程序,例如,評估板說明及USB 設備應用參考CH375451,參考電路和PCB,小數據量交互傳輸/應用層中斷演示的例子DEMO,含MCS51 單片機C程序和匯編程序,批量數據傳輸的例子BULK測試速度,USB外置固件的C和匯編例子XFIRM, VC/VB/BC/DELPHI的例子等。另外,可以下載CH37X在計算機WINDOWS下的簡單調試工具CH372DBG.ZIP, 其中有MCS51單片機上位機與下位機的C源程序,PC機程序可以通過USB對MCS51進行簡單仿真和控制, 其中的C程序稍作修改就可以用于其它單片機。調試工具DEBUG372可以用于調試和檢查下位機的程序。 3、如果是單片機/DSP等控制其它USB設備,也就是USB主機方式的應用,那么可以參考CH375的資料。 如果是讀寫U盤并且用量較少或者是系統(tǒng)集成,關心快速入門并且簡單易用,那么可以參考半成品U盤 文件讀寫模塊的說明CH375HM.ZIP;如果是做原始產品設計,關心成本,那么可以參考CH375評估板資 料CH375EVT.ZIP,其中有單片機讀寫U盤的例子和U盤文件級子程序庫的API說明;如果是單片機控制 USB打印機等,或者CH375與CH372等其它USB產品通訊,可以參考USB主機方式應用參考CH375HST.ZIP。 在設計USB-HOST電路和PCB之前,強烈建議參考CH375的設計注意事項README.PDF。 * 關于電源 優(yōu)先使用5V電源,CH37X在5V電源時的性能高于3.3V,可以作為工業(yè)級使用。 對于USB-HOST應用,建議參考CH375的設計注意事項README.PDF,要考慮USB帶電插拔的實際情況。 我們的樣板中的電阻R1(串在USB電源與本板電源之間)是為了便于雙電源供電,防止兩個電源電壓不同 沖突。如果儀器本身有電源,或者不需要計算機雙電源供電,那么可以去掉該電阻。 * 單片機無法與CH372或者CH375進行通訊,例如CMD_CHECK_EXIST不成功或者CMD_SET_USB_MODE返回錯誤 通常是硬件問題,例如: 1、CH375沒有時鐘,可能是晶體不良未振蕩,電容或者晶體漏電,CH375的時鐘必須是12MHz。 2、CH375沒有成功復位,可能是RSTI引腳沒有0.47uF上拉電容,也可以用單片機I/O口或者uP監(jiān)控電路為 其提供復位,注意CH375的RSTI引腳內部有下拉電阻。對于CH372應該確保電源完全放電后再通電。 3、CH375的片選地址譯碼錯誤,例如,與RAM地址范圍沖突 4、數據總線或者讀寫線連接錯誤等 5、用CMD_CHECK_EXIST命令測試硬件問題,該命令必然返回數據,如果返回數據不是0FFH,那么通常是 數據總線連接錯誤,這種問題容易處理,可以根據返回的值分析是哪個數據線有誤。 如果返回數據是0FFH,那么可能CH375不正常,例如,無時鐘、未復位、讀寫片選線有誤、工作于串 口方式等,如果復位期間CH375的TXD引腳是高電平,那么CH375工作于串口方式,當然并口操作無效 * 測量CH375的晶體振蕩時好象不振蕩 為了降低EMI,CH375的振蕩為接近正弦波,所以振蕩相對較弱,而一般單片機的振蕩接近方波,振蕩較 強但是電磁輻射大很多。當測量儀器接入CH375的引腳時,由于引入電容,在3.3V電源電壓時容易導致 CH375停振,當去掉測量儀器時通常會恢復。如果是在3.3V電源電壓下,建議使用有源晶振或者外部振 蕩,或者將XI引腳的電容換為10pF。振蕩后XO引腳的電壓在一半電源電壓附近。 * 連接到計算機沒有反應 當單片機控制CH37X執(zhí)行CMD_SET_USB_MODE命令,選擇模式2后,首次連接計算機,計算機就應該提示找 到新硬件,否則應該檢查CH37X是否正常工作(看前面的問題)。如果確認單片機端沒問題,那么可以 用萬用表測量CH37X的UD+和UD-引腳,也就是USB信號線,應該UD+為3V以上,UD-為0.4V以下,否則說明 CH375未工作或者未收到CMD_SET_USB_MODE命令,只有模式1和2會導致UD+上拉到3V電壓以上。 * 連接到計算機,無法安裝驅動,提示未知設備 1、CH375的GND以及單片機的GND必須與USB的GND可靠地連接,USB的VBUS/+5V可以不連接。 2、USB的D+和D-信號線接反,導致通訊失敗,USB線4個,分別是+5V,D-,D+,GND,順序不能錯。 3、USB信號線必須用標準的USB線,不能用普通排線等代替,D+和D-布線要平行,附近鋪地減少干擾。 4、由于CH37X內置了USB電阻,所以外部電路中D+和D-不需要串電阻,如果一定要串也不能大于5歐姆。 5、如果是5V工作電壓,CH37X的V3引腳必須與VCC斷開,如果是3.3V工作電壓,那么V3應該連接VCC。 6、建議調試初期不要設置USB-ID,也就是單片機不要執(zhí)行CMD_SET_USB_ID命令,等調通后再嘗試修改。 如果單片機執(zhí)行CMD_SET_USB_ID命令,那么必須在CMD_SET_USB_MODE之前執(zhí)行。如果單片機執(zhí)行 CMD_SET_USB_ID命令修改了USB-ID,那么必須同步修改驅動程序INF中的ID才能安裝驅動。 * 計算機成功安裝驅動程序,但是無法進行任何USB通訊 通常是單片機未收到或者未處理USB中斷,驅動的安裝與初始化是由CH372和CH375內置USB固件實現的, 不需要單片機的任何干預,而USB數據通訊需要由單片機收到USB中斷并由程序實現 * 在與計算機連接時,為什么不能對單片機進行程序單步調試 標準的USB傳輸都是時間限制,單步調試容易導致USB超時,尤其在外置固件模式下,更容易超時。 解決方法是,用CH375作為USB-HOST,代替計算機單步調試您的USB設備,CH375可以不超時。 * 如何用一個CH375實現USB-HOST和USB-DEVICE CH375的串口連接只支持USB-HOST,所以必須通過8位并口與單片機連接。由于CH375自身沒有主導權, 只能在單片機的控制下,切換為主機或者設備模式,所以單片機應該決定是主機還是設備,具體可以參 考USB電路及PCB設計注意事項README中的說明,在CH375評估板資料中,EXAM0是主從切換應用的例子。 * 關于應用層USB中斷服務的特點 CH372的動態(tài)錠接庫DLL提供了偽中斷服務,實際的中斷服務仍然是在驅動程序庫完成的,只是在完成后 向DLL發(fā)了個通知,由DLL再調用偽中斷服務子程序。由于涉及到系統(tǒng)層與應用層切換以及線程切換, 所以中斷頻率不能太高,如果太高,雖然驅動程序能夠收到中斷,但是等到通知到應用層,再調用客戶 的偽中斷服務程序,最慢可能需要10毫秒,從而在應用層丟失中斷。自己寫驅動可以提高響應速度。 * 關于USB傳輸速度 CH372/CH375與計算機通訊時,默認的CH37X驅動程序和DLL提供的API是同步I/O而非異步I/O,所以API 返回就說明該API執(zhí)行完成,由于WINDOWS要提前安排USB幀調度,所以兩次USB傳輸之間的間隔總是會大 于1mS,例如傳兩個64字節(jié)的包可能需要2mS,而傳一個256字節(jié)的包可能只需要1mS。這種情況可以通過 修改驅動程序在驅動程序層傳輸數據或者用異步I/O解決,注意異步I/O在API返回時不代表該API完成。 計算機單次收發(fā)的數據塊越大平均速度越快(單次最大4KB),CH372/CH375實測傳輸速度最高為400K字 節(jié)每秒(在10秒內連續(xù)測試的平均值),但是實際應用考慮到留些余量,考慮到應用程序在收發(fā)數據之 外還要分析處理數據,通常應該按200K計算。USB作為串行總線,采用包傳輸的方法,實時性不如PCI總 線,PCI能達到微秒級,而USB的響應時間只有幾百微秒到幾毫秒,在驅動程序中實現的性能要好些。 * 如何做WINDOWS驅動程序,WINDOWS DDK如何獲得 我們的驅動程序全部使用WINDOWS 98/2000/XP DDK編譯,同時支持WINDOWS 98/ME/2000/XP。DDK可以從 微軟官方網站免費下載(訂購芯片時如果需要我們也可以提供刻錄光盤),除此之外,只需VC 5.0或者 VC 6.0編譯器,完全不需要額外軟件支持。這樣做出的驅動程序代碼效率高并且文件短小,通常我們用 INF安裝信息文件而不是SETUP可執(zhí)行程序,可以算是綠色軟件。用戶如果希望有更友好或者更簡單的編 譯方法,那么可以使用第三方的驅動程序生成工具,當然,那些軟件通常都不便宜。 對于非WINDOWS驅動程序,可以參考其它USB設備的驅動源碼修改,大多數USB設備的枚舉、初始化過程都 是一樣的,區(qū)別僅在于端點/管道:CH372/CH375除端點0外有三個端點,地址分別是02H、82H、81H,依 次為主輸出BULK-OUT/64字節(jié),主輸入BULK-IN/64字節(jié),輔輸入INTERRUPT-IN/8字節(jié)/1mS,通常只用前兩 個主端點,一個從計算機輸出到CH375,一個從CH375輸入到計算機。 * 數據采集中,單片機如何設計USB程序 簡單的做法是,單片機開兩個64字節(jié)的緩沖區(qū),主程序定時采集數據,累加到第一個64字節(jié)緩沖區(qū)中, 當第一個緩沖區(qū)滿時,使用CMD_WR_USB_DATA7命令上傳64字節(jié),然后主程序切換到第二個緩沖區(qū)繼續(xù)采 集數據,當第二個緩沖區(qū)滿時,首先檢查上次的上傳是否成功(上傳成功會收到CH37X的中斷),如果成 功則繼續(xù)上傳64字節(jié),如果不成功,說明計算機應用程序沒有來取走數據(正忙或者未執(zhí)行采集程序), 那么可以忽略或者另行處理(提示計算機未連接)。該方法不使用中斷,但是需要計算機不斷地來讀取 數據,實際的計算機程序可以設置USB讀取超時,防止在單片機不上傳數據時計算機一直等待。 * 設計的計算機端應用程序在讀寫USB時有時會死機,而計算機的其它程序一切正常 1、這種死機實際上是計算機端程序以為下位機會收發(fā)數據,而實際下位機沒有,導致計算機一直等待。 一般情況下,在計算機與單片機的應用層應該有一定的約定:如何傳數據、傳多少、什么時候傳、 雙方如何同步,如果雙方沒有約定好,那


二樓的兄弟,你好! 我下了那個軟件,可就是不會用。 你看一下,我上傳的那個圖是怎么一回事呀? 謝謝!


問題終于解決了,原來是我上位機那邊的數據類型和下位機的類型不一致,因此才讀不到數據! 不過還是謝謝,上面幫助我的朋友!


只有登錄才能回復,可以選擇微信賬號登錄

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