<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 基于車(chē)載CAN總線(xiàn)故障診斷儀設計方案

基于車(chē)載CAN總線(xiàn)故障診斷儀設計方案

作者: 時(shí)間:2010-08-10 來(lái)源:網(wǎng)絡(luò ) 收藏


3.1 發(fā)射端軟件設計

發(fā)射端流程如圖5所示。軟件設計主要實(shí)現兩項功能:第一是實(shí)現上數據的采集;第二是實(shí)現將采集后的數據通過(guò)射頻進(jìn)行發(fā)射。

本文引用地址:http://dyxdggzs.com/article/197645.htm





上電后,首先對模塊進(jìn)行初始化。然后初始化nRF2101,并與接收端建立連接。當發(fā)送完數據后沒(méi)有收到ACK信號時(shí),就跳頻;然后通知發(fā)送端準備接收重發(fā)的CAN數據,直到接收到ACK信號。

為了防止空中干擾,采用了自動(dòng)跳頻的空中協(xié)議,即無(wú)論是否接收到ACK信號都進(jìn)行跳頻,因此可以防止某個(gè)頻段的強干擾,進(jìn)而降低誤碼率。

3.2 接收端軟件設計

接收端軟件流程如圖6所示。軟件設計主要實(shí)現兩項功能:第一是實(shí)現枚舉;第二是實(shí)現將接收到的數據通過(guò)USB上傳到PC。上電后,首先完成對TMU3100 的配置,并與PC機枚舉;枚舉成功后就對nRF2401進(jìn)行配置,并與發(fā)射端建立連接。當接收到數據包后,首先判斷是CAN數據還是重傳數據命令。如果是 CAN數據包,則向發(fā)射端返回ACK信號并跳頻,然后將接收到的數據通過(guò)USB傳至PC;如果是重傳命令,則先跳頻,然后置重傳標志,表示下個(gè)數據包是重傳的數據包。

TMU3100被配置為標準HID類(lèi),這樣就不用為設備開(kāi)發(fā)驅動(dòng)程序,而是使用Windows提供的標準HID類(lèi)驅動(dòng)程序。

3.3 PC端軟件設計

PC端軟件由應用程序和設備驅動(dòng)程序組成。Windows為標準USB沒(méi)備提供了完善的內置驅動(dòng),本系統采用Windows自帶的HID類(lèi)驅動(dòng),只要將 TMU3100配置為HID類(lèi),即可完成與PC機的通信。這省去了開(kāi)發(fā)設備的驅動(dòng)程序,極大地簡(jiǎn)化了上位機軟件的開(kāi)發(fā)。

上位機的應用程序首要實(shí)現的功能是,要實(shí)現對TMU3100端點(diǎn)的讀寫(xiě),用VC++語(yǔ)言編寫(xiě),可以把USB設備當成文件來(lái)操作。用CreateFiile ()函數獲得USB句柄,為讀訪(fǎng)問(wèn)或寫(xiě)訪(fǎng)問(wèn)打開(kāi)指定端點(diǎn)。用DeviceControl()來(lái)進(jìn)行控制操作,用ReadFile()從指定端點(diǎn)讀取數據,用WriteFile()向端點(diǎn)寫(xiě)入數據。

當CAN上的數據被采集到PC后,就可以進(jìn)行故障診斷了。故障診斷代碼是依照KWP2000應用層規定的故障代碼設計的,是目前國際上通用的,現將其應用于CAN的應用層,將來(lái)可以用全新的CAN上層協(xié)議取代。故障診斷代碼定義在SSF14230中。SAE J1979中,由車(chē)輛制造商或系統供應者定義的服務(wù)標志符數值的不同范圍,如表1所列。

此表中以十六進(jìn)制數表示的服務(wù)標志符,同數據鏈路層中數據字節內的SID服務(wù)識別字節對應。不同的SID值代表不同的服務(wù)請求,故障診斷程序必須符合此應用層標準,才能識別不同的十六進(jìn)制代碼所代表的不同的故障信息。



4 結論

本文設計的2.4G無(wú)線(xiàn)CAN,由于采用了自動(dòng)跳頻的空中協(xié)議,所以誤碼率幾乎接近零,在14 m內仍能進(jìn)行可靠的工作。系統使用國際上通用的診斷代碼,使程序具有通用性和實(shí)用性;以PC作為硬件平臺,無(wú)需專(zhuān)門(mén)開(kāi)發(fā)硬件平臺,可大大降低開(kāi)發(fā)成本并且易于實(shí)現設備的升級和維護;使用USB接口和2.4G無(wú)線(xiàn)通信,具有即插即用、不受空間限制、數據傳輸實(shí)時(shí)性強的特點(diǎn)。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>