亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種ttcan總線對時及發(fā)送數(shù)據(jù)的方法

文檔序號:6550543閱讀:356來源:國知局
一種ttcan總線對時及發(fā)送數(shù)據(jù)的方法
【專利摘要】本發(fā)明屬于信息通訊【技術領域】,具體涉及一種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法。本發(fā)明技術方案所提供的方法應用于TTCAN總線時間從節(jié)點接收時間主節(jié)點定時消息,并在矩陣周期內(nèi)定時發(fā)送消息的過程中,可合理分配系統(tǒng)工作時間,實現(xiàn)總線節(jié)點準確對時和在規(guī)定時間片內(nèi)周期發(fā)送總線數(shù)據(jù),在空閑時間片內(nèi)完成系統(tǒng)其它功能。本發(fā)明采用單片機或DSP內(nèi)部中斷優(yōu)先級較高的定時器T0中斷,因此在該中斷執(zhí)行時不會被其它低優(yōu)先級的中斷打斷而使總線定時時間產(chǎn)生誤差,并且僅在T0中斷過程中完成總線對時和按照矩陣周期發(fā)送總線數(shù)據(jù)功能,同時實現(xiàn)在空閑時間片內(nèi)完成系統(tǒng)的其它功能。減少中斷個數(shù),避免中斷嵌套較多而產(chǎn)生的系統(tǒng)邏輯混亂。
【專利說明】—種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法
【技術領域】
[0001]本發(fā)明屬于信息通訊【技術領域】,具體涉及一種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法。
【背景技術】
[0002]自20世紀80年代德國BOSCH公司發(fā)明CAN總線技術以來,CAN總線作為一種網(wǎng)絡通訊控制方式,廣泛應用在汽車、航空、工業(yè)控制、自動控制等領域。隨著分布在通信網(wǎng)絡中的節(jié)點逐漸增多,總線的優(yōu)先級仲裁機制導致的通信延遲時間增大,為解決總線通信的實時性要求,國際標準ISO 11898-4在CAN協(xié)議棧的會話層中提出了一種利用時間觸發(fā)的通信協(xié)議TTCAN。在TTCAN通信網(wǎng)絡中,時間主節(jié)點周期性的發(fā)送定時消息,其它時間從節(jié)點接收定時消息作為時鐘同步信號,使本地時鐘與時間主節(jié)點的時鐘同步,每個節(jié)點都有一個消息調(diào)度表稱為矩陣周期,該表指明了此節(jié)點發(fā)送或接收某個特定消息的時刻,矩陣周期又可分為多個基本周期,基本周期再由一系列最小固定時間片組成,總線上的消息交換就在這個時間片內(nèi)完成。因此相對傳統(tǒng)的CAN協(xié)議,TTCAN具有實時性高、可靠性好,數(shù)據(jù)量大,避免總線擁塞,大大提高網(wǎng)絡利用率等特點。
[0003]在工業(yè)領域,尤其是汽車行業(yè),TTCAN總線節(jié)點的硬件實現(xiàn)一般以單片機或DSP為核心,配合CAN總線控制器,設計雙冗余通道(A通道和B通道)完成。單片機和DSP都具有外部時鐘信號,內(nèi)部有定時器可產(chǎn)生精確的定時中斷,并且中斷優(yōu)先級較高。目前普遍采用的定時方式是在接收到主節(jié)點定時消息后,設置一個專用定時器時鐘產(chǎn)生定時中斷對時,而單片機或DSP除了處理對時和周期發(fā)送數(shù)據(jù),內(nèi)部還要處理接收數(shù)據(jù),準備發(fā)送數(shù)據(jù),以及其它計算,外部還會有其它接口的信號采集和發(fā)送等。若CAN總線的雙冗余通道A通道和B通道對時分別需要占用一個專用定時中斷,接收CAN總線數(shù)據(jù)也會產(chǎn)生中斷,加之程序中實現(xiàn)其他功能需要定時,則程序中產(chǎn)生的中斷較多,程序會在未知的情況被打斷,在多重中斷嵌套下會導致定時不準,嚴重會使程序邏輯混亂。

【發(fā)明內(nèi)容】

[0004](一 )要解決的技術問題
[0005]本發(fā)明要解決的技術問題是:如何避免TTCAN總線中斷嵌套較多而產(chǎn)生的系統(tǒng)邏輯混亂。
[0006]( 二 )技術方案
[0007]為解決上述技術問題,本發(fā)明提供一種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法,該方法基于TTCAN總線對時及發(fā)送數(shù)據(jù)系統(tǒng)來實施,該系統(tǒng)以單片機或DSP為核心,配合CAN總線通信模塊的嵌入式系統(tǒng),有外部時鐘信號,內(nèi)部可產(chǎn)生精確的定時中斷;該系統(tǒng)具體包括:中斷控制器、CAN總線收發(fā)器、定時器;
[0008]具體而言,上述方法具體包括如下步驟:
[0009]步驟S1:預設定CAN總線網(wǎng)絡的總線波特率,確定最小時間間隔,即一個時間片時間,由多個分別定義有序號的時間片構成一個基本周期,再由基本周期確定矩陣周期;同時,確定各個時間從節(jié)點各自發(fā)送時間所在的時間片序號或時間片序號組;
[0010]步驟S2:關閉所有中斷,配置時間從節(jié)點的中斷控制器、初始化時間從節(jié)點的CAN總線收發(fā)器;
[0011]步驟S3:定時器選用中斷優(yōu)先級最高的TO定時器,對TO定時器初始化,將TO定時周期T設定為TTCAN總線的一個時間片時間,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第一中斷計數(shù)值,將該第一中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器;
[0012]步驟S4:啟動CAN總線收發(fā)器,根據(jù)CAN總線的總線波特率和接收到的時間主節(jié)點定時數(shù)據(jù)幀長度來計算接收定時數(shù)據(jù)時間Tl,獲得接收定時數(shù)據(jù)時間Tl與TO定時器定時周期T之間的時間差T-T1,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第二中斷計數(shù)值;
[0013]步驟S5:計算完成一個矩陣周期內(nèi),需要進入TO定時器定時中斷的次數(shù)N ;其中,N=一個矩陣周期/一個時間片;
[0014]步驟S6:定義當前進入TO定時器的中斷累計次數(shù)為Ns,將其初始化為O ;定義成功接收時間主節(jié)點的定時消息的狀態(tài)值Rct,將其值定義為:成功接收信息時,其值設為1,未接收信息時,其值設為O ;將該狀態(tài)值Rct初始化為O ;
[0015]步驟S7:開啟中斷,中斷控制器啟動TO定時器;
[0016]步驟S8:判斷是否進入TO定時器中斷;若是,則轉入步驟S9 ;若否,則判斷是否接收到定時消息;當判斷為接收到定時消息時,將步驟S4的第二中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器;設置Ns = O ;設置Rct = 1,表示接收到定時消息,然后重新執(zhí)行步驟S8 ;當判斷為沒有接收到定時消息時,則重新執(zhí)行步驟S8 ;
[0017]步驟S9:每進入一次定時器TO中斷,中斷累計次數(shù)Ns數(shù)值加I ;
[0018]步驟SlO:根據(jù)中斷累計次數(shù)Ns的當前數(shù)值,判斷當前時間從節(jié)點發(fā)送數(shù)據(jù)的時間片序號是否與步驟Si中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號相一致,或屬于步驟Si中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號組;若判斷結果為相一致或屬于,則進入步驟Sll ;若判斷結果為不一致或不屬于,則進入步驟S12 ;
[0019]步驟Sll:判斷Rct是否為1,若為1,則發(fā)送總線數(shù)據(jù);不為1,則不處理,轉至步驟S13 ;
[0020]步驟S12:判斷當前時間片為空閑時間片,轉為執(zhí)行其它數(shù)據(jù)計算或處理其它接口數(shù)據(jù),然后轉至步驟S13;
[0021]步驟S13:判斷Ns值是否達到N,若是,則重置Ns = O, Rct = 0,一個矩陣周期結束,回到步驟S8 ;若否,則直接回到步驟S8。
[0022](三)有益效果
[0023]本發(fā)明技術方案所提供的方法應用于TTCAN總線時間從節(jié)點接收時間主節(jié)點定時消息,并在矩陣周期內(nèi)定時發(fā)送消息的過程中,可合理分配系統(tǒng)工作時間,實現(xiàn)總線節(jié)點準確對時和在規(guī)定時間片內(nèi)周期發(fā)送總線數(shù)據(jù),在空閑時間片內(nèi)完成系統(tǒng)其它功能。
[0024]本發(fā)明采用單片機或DSP內(nèi)部中斷優(yōu)先級較高的定時器TO中斷,因此在該中斷執(zhí)行時不會被其它低優(yōu)先級的中斷打斷而使總線定時時間產(chǎn)生誤差,并且僅在TO中斷過程中完成總線對時和按照矩陣周期發(fā)送總線數(shù)據(jù)功能,同時實現(xiàn)在空閑時間片內(nèi)完成系統(tǒng)的其它功能。減少中斷個數(shù),避免中斷嵌套較多而產(chǎn)生的系統(tǒng)邏輯混亂。【專利附圖】

【附圖說明】
[0025]圖1為本發(fā)明實施例的對時和發(fā)送數(shù)據(jù)方法流程圖。
[0026]圖2為某車輛TTCAN總線的矩陣周期圖。
【具體實施方式】
[0027]為使本發(fā)明的目的、內(nèi)容、和優(yōu)點更加清楚,下面結合附圖和實施例,對本發(fā)明的【具體實施方式】作進一步詳細描述。
[0028]本發(fā)明使用DSP或單片機中斷優(yōu)先級最高的定時器T0,根據(jù)TTCAN總線協(xié)議基本周期上的最小時間間隔,即一個時間片為定時器TO的初始定時周期T,在接收到總線時間主節(jié)點發(fā)送的定時消息后,根據(jù)波特率和數(shù)據(jù)幀長度計算接收主節(jié)點發(fā)送的對時數(shù)據(jù)幀產(chǎn)生的時間TI,T-TI為當前一次定時器TO產(chǎn)生中斷的時間,之后的TO定時器時間,恢復初始定時周期T。一個矩陣周期發(fā)送數(shù)據(jù)完成,只需要TO產(chǎn)生中斷次數(shù)N,N=(—個矩陣周期時間)/( 一個時間片時間)。這樣,循環(huán)TO產(chǎn)生的中斷N次,即可完成對時和一個矩陣周期內(nèi)數(shù)據(jù)的發(fā)送。同時在空閑時間片,還可以處理系統(tǒng)需要實現(xiàn)的其它功能。
[0029]具體而言,為解決現(xiàn)有技術的問題,本發(fā)明提供一種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法,參照圖1,該方法基于TTCAN總線對時及發(fā)送數(shù)據(jù)系統(tǒng)來實施,該系統(tǒng)以單片機或DSP為核心,配合CAN總線通信模塊的嵌入式系統(tǒng),有外部時鐘信號,內(nèi)部可產(chǎn)生精確的定時中斷;該系統(tǒng)具體包括:中斷控制器、CAN總線收發(fā)器、定時器;
[0030]具體而言,上述方法具體包括如下步驟:
[0031]步驟S1:預設定CAN總線網(wǎng)絡的總線波特率,確定最小時間間隔,即一個時間片時間,由多個分別定義有序號的時間片構成一個基本周期,再由基本周期確定矩陣周期;同時,確定各個時間從節(jié)點各自發(fā)送時間所在的時間片序號或時間片序號組;
[0032]步驟S2:關閉所有中斷,配置時間從節(jié)點的中斷控制器、初始化時間從節(jié)點的CAN總線收發(fā)器;
[0033]步驟S3:定時器選用中斷優(yōu)先級最高的TO定時器,對TO定時器初始化,將TO定時周期T設定為TTCAN總線的一個時間片時間,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第一中斷計數(shù)值,將該第一中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器;
[0034]步驟S4:啟動CAN總線收發(fā)器,根據(jù)CAN總線的總線波特率和接收到的時間主節(jié)點定時數(shù)據(jù)幀長度來計算接收定時數(shù)據(jù)時間Tl,獲得接收定時數(shù)據(jù)時間Tl與TO定時器定時周期T之間的時間差T-T1,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第二中斷計數(shù)值;
[0035]步驟S5:計算完成一個矩陣周期內(nèi),需要進入TO定時器定時中斷的次數(shù)N ;其中,N=一個矩陣周期/一個時間片;
[0036]步驟S6:定義當前進入TO定時器的中斷累計次數(shù)為Ns,將其初始化為O ;定義成功接收時間主節(jié)點的定時消息的狀態(tài)值Rct,將其值定義為:成功接收信息時,其值設為1,未接收信息時,其值設為O ;將該狀態(tài)值Rct初始化為O ;
[0037]步驟S7:開啟中斷,中斷控制器啟動TO定時器;
[0038]步驟S8:判斷是否進入TO定時器中斷;若是,則轉入步驟S9 ;若否,則判斷是否接收到定時消息;當判斷為接收到定時消息時,將步驟S4的第二中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器;設置Ns = O ;設置Rct = 1,表示接收到定時消息,然后重新執(zhí)行步驟S8 ;當判斷為沒有接收到定時消息時,則重新執(zhí)行步驟S8 ;
[0039]步驟S9:每進入一次定時器TO中斷,中斷累計次數(shù)Ns數(shù)值加I ;
[0040]步驟SlO:根據(jù)中斷累計次數(shù)Ns的當前數(shù)值,判斷當前時間從節(jié)點發(fā)送數(shù)據(jù)的時間片序號是否與步驟Si中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號相一致,或屬于步驟Si中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號組;若判斷結果為相一致或屬于,則進入步驟Sll ;若判斷結果為不一致或不屬于,則進入步驟S12 ;
[0041]步驟Sll:判斷Rct是否為1,若為1,則發(fā)送總線數(shù)據(jù);不為1,則不處理,轉至步驟S13 ;
[0042]步驟S12:判斷當前時間片為空閑時間片,轉為執(zhí)行其它數(shù)據(jù)計算或處理其它接口數(shù)據(jù),然后轉至步驟S13;
[0043]步驟S13:判斷Ns值是否達到N,若是,則重置Ns = O, Rct = 0,一個矩陣周期結束,回到步驟S8 ;若否,則直接回到步驟S8。
[0044]下面結合具體實施例來詳細描述。
[0045]實施例
[0046]本實施例提供一種應用在某車輛上的TTCAN總線的矩陣周期如圖2所示,CAN總線的波特率為1M,6字節(jié)的標準幀數(shù)據(jù)格式。一個時間片占用175us,一個基本周期由8個時間片組成,一個矩陣周期由5個基本周期組成,則一個矩陣周期占用的時間為7ms。時間主節(jié)點為E⑶1,當前時間從節(jié)點為E⑶2。該節(jié)點的控制核心為DSPTMS320LF28335,內(nèi)部時鐘150M。TO寄存器初始化定時周期為T = 175us。計算接收時間主節(jié)點E⑶I的對時消息需要占用 Tl = IlOus 的時間。則 T-T1 = 65us, N = 7ms/175us = 40。
[0047]如圖1所示,本實施例的工作過程如下:
[0048]1、初始化DSP系統(tǒng)控制;
[0049]2、關閉所有中斷;
[0050]3、配置DSP中斷TO和Receive_can ;按照TTCAN總線協(xié)議初始化CAN控制器;
[0051]4、初始化TO定時器,將175us設定為TO定時器的初始定時周期;
[0052]5、初始化程序變量,其中進入TO中斷次數(shù)隊=0,成功接收定時消息變量Receive_Can_T imer = O ;
[0053]6、打開中斷;
[0054]7、若接收到ECUl的定時消息,將65us設定為當前一次定時器TO的定時周期,其它次定時器TO的定時周期仍為初始定時周期;設置Ns = O ;設置Receive_Can_Timer = 1,表示接收到定時消息;
[0055]8、每次進入定時器TO中斷,Ns加I ;
[0056]9、ECU2發(fā)送數(shù)據(jù)的時刻分別為Ns = 2,10,18,26,34時。
[0057]10、若為發(fā)送數(shù)據(jù)時刻,判斷Receive_Can_Timer是否為1,若為1,則發(fā)送ECU2數(shù)據(jù);不為1,則不處理;
[0058]11、若不是發(fā)送數(shù)據(jù)時刻,在其它的剩余時間片內(nèi),處理程序需要完成的其它功倉泛。
[0059]12、判斷當Ns等于40時,則Ns = O,Receive_Can_Timer = O, 一個矩陣周期結束。[0060]其中,系統(tǒng)中如果需要其它定時時間Tt,可計算Nt = Ττ/Τ,再由每次進入TO中斷后Nt加I來計算。
[0061]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發(fā)明技術原理的前提下,還可以做出若干改進和變形,這些改進和變形也應視為本發(fā)明的保護范圍。
【權利要求】
1.一種TTCAN總線對時及發(fā)送數(shù)據(jù)的方法,其特征在于,該方法基于TTCAN總線對時及發(fā)送數(shù)據(jù)系統(tǒng)來實施,該系統(tǒng)以單片機或DSP為核心,配合CAN總線通信模塊的嵌入式系統(tǒng),有外部時鐘信號,內(nèi)部可產(chǎn)生精確的定時中斷;該系統(tǒng)具體包括:中斷控制器、CAN總線收發(fā)器、定時器; 具體而言,上述方法具體包括如下步驟: 步驟S1:預設定CAN總線網(wǎng)絡的總線波特率,確定最小時間間隔,即一個時間片時間,由多個分別定義有序號的時間片構成一個基本周期,再由基本周期確定矩陣周期;同時,確定各個時間從節(jié)點各自發(fā)送時間所在的時間片序號或時間片序號組; 步驟S2:關閉所有中斷,配置時間從節(jié)點的中斷控制器、初始化時間從節(jié)點的CAN總線收發(fā)器; 步驟S3:定時器選用中斷優(yōu)先級最高的TO定時器,對TO定時器初始化,將TO定時周期T設定為TTCAN總線的一個時間片時間,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第一中斷計數(shù)值,將該第一中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器; 步驟S4:啟動CAN總線收發(fā)器,根據(jù)CAN總線的總線波特率和接收到的時間主節(jié)點定時數(shù)據(jù)幀長度來計算接收定時數(shù)據(jù)時間Tl,獲得接收定時數(shù)據(jù)時間Tl與TO定時器定時周期T之間的時間差T-T1,根據(jù)外部時鐘頻率及內(nèi)部分頻方式計算第二中斷計數(shù)值; 步驟S5:計算完成一個矩陣周期內(nèi),需要進入TO定時器定時中斷的次數(shù)N ;其中,N =一個矩陣周期/一個時間片; 步驟S6:定義當前進入TO定時器的中斷累計次數(shù)為Ns,將其初始化為O ;定義成功接收時間主節(jié)點的定時消息的狀態(tài)值Rct,將其值定義為:成功接收信息時,其值設為1,未接收信息時,其值設為O ;將該狀態(tài)值Rct初始化為O ; 步驟S7:開啟中斷,中斷控制器啟動TO定時器; 步驟S8:判斷是否進入TO定時器中斷;若是,則轉入步驟S9 ;若否,則判斷是否接收到定時消息;當判斷為接收到定時消息時,將步驟S4的第二中斷計數(shù)值裝載到TO定時器的計數(shù)寄存器;設置Ns = O ;設置Rct = 1,表示接收到定時消息,然后重新執(zhí)行步驟S8 ;當判斷為沒有接收到定時消息時,則重新執(zhí)行步驟S8 ; 步驟S9:每進入一次定時器TO中斷,中斷累計次數(shù)Ns數(shù)值加I ; 步驟SlO:根據(jù)中斷累計次數(shù)Ns的當前數(shù)值,判斷當前時間從節(jié)點發(fā)送數(shù)據(jù)的時間片序號是否與步驟SI中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號相一致,或屬于步驟SI中確定的該時間從節(jié)點發(fā)送時間所在的時間片序號組;若判斷結果為相一致或屬于,則進入步驟Sll ;若判斷結果為不一致或不屬于,則進入步驟S12 ; 步驟Sll:判斷Rct是否為1,若為I,則發(fā)送總線數(shù)據(jù);不為1,則不處理,轉至步驟S13 ;步驟S12:判斷當前時間片為空閑時間片,轉為執(zhí)行其它數(shù)據(jù)計算或處理其它接口數(shù)據(jù),然后轉至步驟S13; 步驟S13:判斷Ns值是否達到N,若是,則重置Ns = 0,Rct = 0,一個矩陣周期結束,回到步驟S8 ;若否,則直接回到步驟S8。
【文檔編號】G06F13/38GK104035901SQ201410283192
【公開日】2014年9月10日 申請日期:2014年6月23日 優(yōu)先權日:2014年6月23日
【發(fā)明者】劉嬌娜, 門義雙, 劉樹林, 蔣明軍, 侯毅, 王雪濤, 劉斌, 高云琨, 苗秋實, 周婧, 郭亮, 王光輝, 徐靜 申請人:中國北方車輛研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1