国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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

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

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