基于USB-HID協(xié)議的FlexRay總線監(jiān)控方法
【專(zhuān)利摘要】本發(fā)明涉及一種FlexRay總線監(jiān)控系統(tǒng),它包括微控制器、至少兩個(gè)FlexRay控制器、一個(gè)USB模塊,其特點(diǎn)是,所述的FlexRay總線監(jiān)控系統(tǒng)可以同時(shí)與至少兩個(gè)FlexRay總線相連,在任何一根FlexRay總線上監(jiān)聽(tīng)到FlexRay報(bào)文或是錯(cuò)誤幀時(shí),系統(tǒng)能將監(jiān)聽(tīng)的數(shù)據(jù)存入本地內(nèi)存,并將內(nèi)存中的數(shù)據(jù)發(fā)送至USB模塊,USB模塊通過(guò)USB線連接至PC機(jī),在PC機(jī)上采用HID設(shè)備類(lèi)的方式打開(kāi)USB設(shè)備,并通過(guò)應(yīng)用程序調(diào)用HID設(shè)備類(lèi)相關(guān)的讀寫(xiě)API函數(shù)與下位機(jī)進(jìn)行數(shù)據(jù)交互,從而實(shí)現(xiàn)FlexRay總線的監(jiān)控,包括信號(hào)的顯示和報(bào)文的收發(fā)等等。
【專(zhuān)利說(shuō)明】基于USB-HI D協(xié)議的FI exRay總線監(jiān)控方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種針對(duì)FlexRay總線與USB總線之間的一個(gè)數(shù)據(jù)傳輸?shù)南到y(tǒng)。
【背景技術(shù)】
[0002]FlexRay是一種用于汽車(chē)的高速可確定性的,具備故障容錯(cuò)的總線系統(tǒng),F(xiàn)lexRay通過(guò)在確定的時(shí)間槽中傳遞信息,以及在兩個(gè)通道上的故障容錯(cuò)和冗余信息的傳送,滿足了新的x-byiire系統(tǒng)設(shè)計(jì)思想的對(duì)信息傳送速度尤其是故障容錯(cuò)與時(shí)間確定性的不斷增加的需求。FlexRay總線作為各個(gè)微控制器之間的通信接口,在應(yīng)用中一個(gè)重要的需求就是通過(guò)特定的硬件電路從FlexRay總線采集各個(gè)微控制器之間傳遞的信號(hào),并傳輸?shù)絇C機(jī),并在其上顯示,從而實(shí)現(xiàn)對(duì)FlexRay總線通信過(guò)程中的監(jiān)控。
[0003]將從FlexRay總線采集到的信號(hào)傳輸?shù)絇C機(jī),最常見(jiàn)的做法是使用USB總線,并在運(yùn)行Windows操作系統(tǒng)的PC端,針對(duì)特定的設(shè)備編寫(xiě)USB設(shè)備驅(qū)動(dòng)程序,設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)接收下位機(jī)的數(shù)據(jù),并將其傳輸給PC端的應(yīng)用程序。
[0004]針對(duì)特定的設(shè)備編寫(xiě)USB設(shè)備驅(qū)動(dòng)程序存在以下不足:1、設(shè)備驅(qū)動(dòng)程序制作復(fù)雜,需要考慮到USB電源管理,枚舉,數(shù)據(jù)通信等一系列問(wèn)題;2、設(shè)備驅(qū)動(dòng)程序調(diào)試?yán)щy;3、設(shè)備驅(qū)動(dòng)程序的微小故障將導(dǎo)致操作系統(tǒng)崩潰;4、低版本的設(shè)備驅(qū)動(dòng)程序無(wú)法兼容高版本的操作系統(tǒng),不適合PC機(jī)的升級(jí)
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的,就是為了克服USB專(zhuān)用的設(shè)備驅(qū)動(dòng)程序編制的缺陷,提供一種無(wú)需自行編寫(xiě)驅(qū)動(dòng)程序的,基于USB-HID協(xié)議的FlexRay總線監(jiān)控的解決方案和裝置。
[0006]本發(fā)明提供的具體技術(shù)方案如下:
[0007]基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),所述系統(tǒng)使用微控制器與至少兩個(gè)FlexRay控制器連接,所屬裝置在任何一根FlexRay總線上監(jiān)聽(tīng)到FlexRay報(bào)文或是錯(cuò)誤幀后,將監(jiān)聽(tīng)的數(shù)據(jù)讀入本地內(nèi)存,并將此內(nèi)存中的數(shù)據(jù)發(fā)送到USB模塊,USB模塊通過(guò)USB線連接至PC機(jī),在PC機(jī)采用HID設(shè)備類(lèi)的方式打開(kāi)USB設(shè)備,并通過(guò)應(yīng)用程序調(diào)用HID設(shè)備類(lèi)相關(guān)的讀寫(xiě)API函數(shù)與下位機(jī)進(jìn)行數(shù)據(jù)交互,從而實(shí)現(xiàn)FlexRay總線的監(jiān)控,包括信號(hào)的顯不和報(bào)文的收發(fā)等等。
[0008]基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),包括硬件電路,下位機(jī)程序和上位機(jī)程序。
[0009]基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng)中設(shè)計(jì)的硬件電路,由微控制器、至少兩個(gè)FlexRay控制器、USB模塊組成;微控制器與至少兩個(gè)FlexRay控制器連接,所屬裝置在任何一根FlexRay總線上監(jiān)聽(tīng)到FlexRay報(bào)文或是錯(cuò)誤幀后,將監(jiān)聽(tīng)的數(shù)據(jù)讀入本地內(nèi)存,并將此內(nèi)存中的數(shù)據(jù)發(fā)送到USB模塊。
[0010]基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng)中的USB模塊通過(guò)USB線連接至PC機(jī),在PC機(jī)采用HID設(shè)備類(lèi)的方式打開(kāi)USB設(shè)備,并通過(guò)應(yīng)用程序調(diào)用HID設(shè)備類(lèi)相關(guān)的讀寫(xiě)API函數(shù)與下位機(jī)進(jìn)行數(shù)據(jù)交互。
[0011]本發(fā)明實(shí)施例中,在硬件的USB模塊中以HID設(shè)備類(lèi)的方式進(jìn)行設(shè)備枚舉,枚舉成功后設(shè)備即可被PC機(jī)識(shí)別并自動(dòng)在Windows端由HID設(shè)備驅(qū)動(dòng)接管通信,只要打開(kāi)上位機(jī)軟件即可正常訪問(wèn)下位機(jī),通信效率高,通信質(zhì)量可靠,從而有效地提高了設(shè)備開(kāi)發(fā)效率,同時(shí)此系統(tǒng)使得在任何安裝有Windows并帶有USB接口的電腦上均可使用此設(shè)備,而不需要對(duì)此設(shè)計(jì)任何驅(qū)動(dòng)程序。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0012]圖1為本發(fā)明實(shí)施例中FlexRay總線監(jiān)控總體架構(gòu)圖
[0013]圖2為本發(fā)明實(shí)施系統(tǒng)中下位機(jī)的流程圖
[0014]圖3為本發(fā)明實(shí)施系統(tǒng)中上位機(jī)檢測(cè)HID設(shè)備流程圖
[0015]圖4為本發(fā)明實(shí)施系統(tǒng)中上位機(jī)的數(shù)據(jù)通信流程圖
[0016]圖1 中,微控制器(101),F(xiàn)lexRay 控制器(102),F(xiàn)lexRay 收發(fā)器(103),F(xiàn)lexRay總線 FlexRayH (104),F(xiàn)lexRay 總線 FlexRayL (105),USB 模塊(106),USB HID 驅(qū)動(dòng)程序
(107),上位機(jī)監(jiān)控程序(108),PC機(jī)(109),下位機(jī)硬件電路(110),USB線(111)
【具體實(shí)施方式】
[0017]在圖1中,微控制器(101)連接至少兩個(gè)FlexRay控制器(102),每個(gè)FlexRay控制器的TX引腳與RX引腳分別連接FlexRay收發(fā)器(103)的TX引腳和RX引腳,F(xiàn)lexRay收發(fā)器的 FlexRayH 連接至 FlexRay 總線 FlexRayH (104), FlexRay 收發(fā)器的 FlexRayL 連接至 FlexRay 總線的 FlexRayL (105)。
[0018]在圖1中,PC機(jī)(109)內(nèi)部包括Windows自帶的HID設(shè)備驅(qū)動(dòng)程序(107),監(jiān)控程序(108)通過(guò)HID驅(qū)動(dòng)程序連接至USB線(111),并連接至下位機(jī)硬件(110)的USB模塊(106)。
[0019]微控制器(101),內(nèi)部集成CPU和內(nèi)存,與一個(gè)或多個(gè)獨(dú)立的FlexRay控制器相連;或是內(nèi)部集成一個(gè)或多個(gè)FlexRay控制器;圖1顯示的是微控制器內(nèi)部集成兩個(gè)FlexRay控制器(102)的情形。
[0020]FlexRay控制器(102),作為FlexRay總線的協(xié)議轉(zhuǎn)換芯片,負(fù)責(zé)將FlexRay總線上的報(bào)文和錯(cuò)誤幀等信息反饋給微控制器,每一個(gè)FlexRay控制器都有與FlexRay收發(fā)器相連的TX和RX引腳。
[0021]下面結(jié)合附圖2-4對(duì)本發(fā)明的控制流程進(jìn)行詳細(xì)說(shuō)明。
[0022]參閱圖2所示,本發(fā)明實(shí)施中下位機(jī)監(jiān)控詳細(xì)流程如下:
[0023]步驟201 =FlexRay控制器報(bào)文接收中斷和錯(cuò)誤中斷。FlexRay控制器在監(jiān)控到總線上的報(bào)文或是錯(cuò)誤幀后,以中斷形式通知微控制器,微控制器同時(shí)會(huì)進(jìn)入中斷處理程序。
[0024]步驟202:讀取相應(yīng)的FlexRay控制器的監(jiān)控?cái)?shù)據(jù)。微控制器在中斷服務(wù)程序中讀取相應(yīng)的FlexRay控制器所獲取的監(jiān)控?cái)?shù)據(jù)至內(nèi)存。
[0025]步驟203:判斷本地緩沖區(qū)是否已滿。微控制器判斷當(dāng)前的FlexRay總線監(jiān)控緩沖區(qū)是否已被填滿,若被填滿則轉(zhuǎn)到步驟204,若沒(méi)有填滿則轉(zhuǎn)到步驟205。[0026]步驟204:錯(cuò)誤處理。在當(dāng)前FlexRay總線監(jiān)控緩沖區(qū)滿的情況下,內(nèi)存中的數(shù)據(jù)不能寫(xiě)入緩沖區(qū),當(dāng)前的內(nèi)存數(shù)據(jù)將被丟棄。
[0027]步驟205:數(shù)據(jù)保存至本地內(nèi)存。微控制器將內(nèi)存中的數(shù)據(jù)保存至本地的緩沖區(qū)內(nèi)。
[0028]步驟206:將本地內(nèi)存數(shù)據(jù)提交至USB模塊。微控制器將緩沖區(qū)內(nèi)的數(shù)據(jù)提交給與其相連的USB模塊。
[0029]步驟207 =USB模塊上傳數(shù)據(jù)。USB模塊中的HID設(shè)備自動(dòng)將其內(nèi)的數(shù)據(jù)上傳至PC端。
[0030]步驟208:完成一次HID數(shù)據(jù)傳輸。
[0031]參閱圖3所示,本發(fā)明實(shí)施中上位機(jī)在打開(kāi)HID設(shè)備的處理流程詳述如下:
[0032]步驟301:遍歷檢測(cè)HID設(shè)備。上位機(jī)的監(jiān)控程序啟動(dòng)后遍歷檢測(cè)電腦上所有的HID設(shè)備。
[0033]步驟302:判斷是否檢測(cè)到ID符合的設(shè)備。在檢測(cè)到符合USB廠商編號(hào)和設(shè)備編號(hào)的設(shè)備后,跳轉(zhuǎn)至步驟303,若未檢測(cè)到符合的設(shè)備,則跳轉(zhuǎn)到步驟304。
[0034]步驟303:打開(kāi)此HID設(shè)備。上位機(jī)的監(jiān)控程序嘗試打開(kāi)此HID設(shè)備。
[0035]步驟304:顯示設(shè)備連接狀態(tài)。顯示HID設(shè)備的打開(kāi)狀態(tài)。
[0036]參閱圖4所示,本發(fā)明實(shí)施中上位機(jī)通過(guò)HID設(shè)備類(lèi)進(jìn)行數(shù)據(jù)通信的流程詳述如下:
[0037]步驟401:檢測(cè)下位機(jī)是否有數(shù)據(jù)。若有需要上傳的數(shù)據(jù),則跳轉(zhuǎn)到步驟402,否則返回。
[0038]步驟402:向下位機(jī)請(qǐng)求讀取數(shù)據(jù)。向下位機(jī)發(fā)起讀請(qǐng)求,取得下位機(jī)內(nèi)部保存的數(shù)據(jù)。
[0039]步驟403:處理讀取的數(shù)據(jù)。在獲取下位機(jī)的數(shù)據(jù)后,提取FlexRay總線上監(jiān)控的報(bào)文和錯(cuò)誤幀。
[0040]步驟404:顯示監(jiān)控信息。在上位機(jī)的監(jiān)控界面上,顯示監(jiān)控到的信息。步驟405:完成一次數(shù)據(jù)顯示。
【權(quán)利要求】
1.基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),它包括微控制器,至少兩個(gè)FlexRay控制器,一個(gè)USB模塊,其特征在于,微控制器與至少兩個(gè)FlexRay控制器連接,FlexRay控制器在與其連接的FlexRay總線上監(jiān)聽(tīng)到FlexRay報(bào)文或是錯(cuò)誤幀后,微控制器將監(jiān)聽(tīng)的數(shù)據(jù)讀入本地內(nèi)存,并將此內(nèi)存中的數(shù)據(jù)發(fā)送到USB模塊,USB模塊通過(guò)USB線連接至PC機(jī),在PC機(jī)采用HID設(shè)備類(lèi)的方式打開(kāi)USB設(shè)備,并通過(guò)應(yīng)用程序調(diào)用HID設(shè)備類(lèi)相關(guān)的讀寫(xiě)API函數(shù)與下位機(jī)進(jìn)行數(shù)據(jù)交互,從而實(shí)現(xiàn)FlexRay總線的監(jiān)控,包括監(jiān)聽(tīng)數(shù)據(jù)的保存,信號(hào)的顯示和報(bào)文的收發(fā)功能。
2.根據(jù)權(quán)利要求1所述的基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),其特征在于,系統(tǒng)包括硬件電路,下位機(jī)程序和上位機(jī)程序。
3.根據(jù)權(quán)利要求2所述的基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),其特征在于,系統(tǒng)的硬件電路,由微控制器、至少兩個(gè)FlexRay控制器、USB模塊組成;微控制器與至少兩個(gè)FlexRay控制器連接,所屬裝置在任何一根FlexRay總線上監(jiān)聽(tīng)到FlexRay報(bào)文或是錯(cuò)誤幀后,將監(jiān)聽(tīng)的數(shù)據(jù)讀入本地內(nèi)存,并將此內(nèi)存中的數(shù)據(jù)發(fā)送到USB模塊。
4.根據(jù)權(quán)利要求3所述的基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),其特征在于,系統(tǒng)的USB模塊通過(guò)USB線連接至PC機(jī),在PC機(jī)采用HID設(shè)備類(lèi)的方式打開(kāi)USB設(shè)備,并通過(guò)應(yīng)用程序調(diào)用HID設(shè)備類(lèi)相關(guān)的讀寫(xiě)API函數(shù)與下位機(jī)進(jìn)行數(shù)據(jù)交互。
5.根據(jù)權(quán)利要求2所述的基于USB-HID協(xié)議的FlexRay總線監(jiān)控系統(tǒng),其特征在于,下位機(jī)程序在硬件的USB模塊中以HID設(shè)備類(lèi)的方式進(jìn)行設(shè)備枚舉,枚舉成功后設(shè)備即可被PC機(jī)識(shí)別并自動(dòng)在Windows端由HID設(shè)備驅(qū)動(dòng)接管通信;上位機(jī)程序通過(guò)打開(kāi)相應(yīng)的HID設(shè)備即可訪問(wèn)下位機(jī),同時(shí)此系統(tǒng)使得在任何安裝有Windows并帶有USB接口的電腦上均可使用此設(shè)備,而不需要對(duì)此設(shè)計(jì)任何驅(qū)動(dòng)程序。
【文檔編號(hào)】H04L12/26GK103441912SQ201310355062
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2013年8月14日 優(yōu)先權(quán)日:2013年8月14日
【發(fā)明者】劉矗, 莫莽, 吳寶紅 申請(qǐng)人:上海固泰科技有限公司