專利名稱:一種can總線數(shù)據(jù)傳送方法
技術領域:
本發(fā)明屬于星上總線通信領域,涉及ー種基于流水線形式的CAN總線數(shù)據(jù)傳送方法。
背景技術:
CAN總線是Bosch公司于上世紀80年代推出的ー種多主網(wǎng)絡協(xié)議,90年代被國際標準化組織采用,成為唯一具有國際標準的現(xiàn)場總線。CAN總線具有以下特點可靠性高,其剰余錯誤概率為10_n量級;多主局部網(wǎng)絡結(jié)構(gòu),任何節(jié)點都可以主動發(fā)送,省去了主從結(jié)構(gòu)需要的查詢工作,提高了總線的利用效率,滿足系統(tǒng)的實時性要求,同時某節(jié)點的故障不會影響其余節(jié)點,且采用無損結(jié)構(gòu)的逐位仲裁,提高了系統(tǒng)的可靠性;傳輸速率最高可達 IMb/s,理論上網(wǎng)上節(jié)點個數(shù)不受限制,實際上由于總線驅(qū)動電路的能力限制,可達110個;CAN協(xié)議廢除了傳統(tǒng)的站地址編碼,采用對通信數(shù)據(jù)塊進行編碼的方式,最多可定義211或229個不同數(shù)據(jù)塊,借助接收濾波可使不同節(jié)點同時接收到相同數(shù)據(jù),能夠使星載計算機不被自身無關的數(shù)據(jù)干擾;CAN總線采用CRC檢驗方式,提供錯誤處理功能,保證數(shù)據(jù)通信的可靠性;價格相對便宜,開發(fā)簡単。目前CAN總線逐步走進世界航天技術領域,并得到了很大的發(fā)展。在星載電子領域,CAN總線主要作為ー種控制總線被廣泛應用,主要用于星內(nèi)指令分發(fā)和各設備信息的采集,以及在軌軟件注入、時間發(fā)布等。目前世界范圍內(nèi)使用的CAN總線技術規(guī)范主要是CAN 2. OA和CAN 2. 0B,其中星上普遍使用CAN 2. OA規(guī)范,并基于CAN2. OA定義應用層協(xié)議。為了保證數(shù)據(jù)傳輸?shù)膶崟r性需求,CAN 2. O技術規(guī)范規(guī)定CAN總線數(shù)據(jù)幀數(shù)據(jù)域長度不超過8個字節(jié)。由于各星載設備之間的數(shù)據(jù)交互需求經(jīng)常存在一次性傳輸?shù)臄?shù)據(jù)量遠遠超過8字節(jié)的情況,因此,有效數(shù)據(jù)的分割和多幀傳輸是ー種必然的選擇。在CAN總線通信軟件設計領域,通常采用兩種方法進行數(shù)據(jù)發(fā)送的設計,一種是采用輪詢發(fā)送方式,首先將從有效數(shù)據(jù)中拆分出一部分數(shù)據(jù)組成ー幀CAN數(shù)據(jù)幀,然后判斷CAN控制器發(fā)送緩沖區(qū)是否為空,當發(fā)送緩沖區(qū)為空吋,將數(shù)據(jù)幀填入發(fā)送緩沖區(qū),并啟動發(fā)送,再繼續(xù)后續(xù)數(shù)據(jù)的拆分與發(fā)送。輪詢發(fā)送的不足在于在發(fā)送過程中,處理器需要不斷查看是否能夠發(fā)送下ー幀數(shù)據(jù)。由于CAN總線最高碼速率為1Mbps,而實際應用時往往設為幾百kbps,屬于低速總線,采用輪詢發(fā)送時處理器大量的機時都浪費在等待數(shù)據(jù)幀傳輸?shù)倪^程中,處理器時間利用率低。另ー種常用的方式是中斷發(fā)送,即通過使能CAN總線控制器的發(fā)送中斷進行數(shù)據(jù)的發(fā)送。當ー幀數(shù)據(jù)發(fā)送完畢后,CAN總線控制器向處理器發(fā)出ー個中斷信號,計算機軟件進入中斷服務程序,發(fā)送下一幀數(shù)據(jù),直到全部數(shù)據(jù)發(fā)送完畢。中斷方式下不需要輪詢查看CAN總線控制器的發(fā)送狀態(tài),處理器利用率高,但數(shù)據(jù)組幀及CAN總線寄存器設置和CAN總線控制器發(fā)送過程是串行過程,一幀數(shù)據(jù)發(fā)送時間較長,對于星上常用的51系列單片機等低性能處理器可能存在響應時間過長,系統(tǒng)不滿足實時性要求等問題。中斷發(fā)送常用的軟件流程包括兩種,一種為發(fā)送前組完所有的數(shù)據(jù)幀,發(fā)送時將數(shù)據(jù)幀依次寫入CAN總線控制器發(fā)送緩沖區(qū),另ー種為每次發(fā)送前組當前發(fā)送的數(shù)據(jù)幀。前ー種方式存在數(shù)據(jù)發(fā)送前的預備時間較長的問題,后ー種方式存在數(shù)據(jù)幀間隔時間較長的問題,當實時性要求很高和處理器性能較低時,可能難以滿足應用需求。
發(fā)明內(nèi)容
本發(fā)明的技術解決問題是針對現(xiàn)有技術的不足,提供了ー種CAN總線數(shù)據(jù)傳送方法。采用本發(fā)明實現(xiàn)了處理器和CAN總線控制器的流水線式工作,滿足了對當前星上處理器的實時性要求。本發(fā)明的技術解決方案是ー種CAN總線數(shù)據(jù)傳送方法,用于在數(shù)據(jù)傳送過程中協(xié)調(diào)處理器和CAN總線控制器。在所述數(shù)據(jù)傳送過程中,處理器在數(shù)據(jù)傳送的一次中斷中,首先將第N個數(shù)據(jù)幀填入CAN總線控制器的緩沖區(qū);然后啟動控制器數(shù)據(jù)傳送流程;最后完成第N+1個數(shù)據(jù)幀的組幀;在處理器進行第N+1個數(shù)據(jù)幀的組幀時,CAN總線控制器在數(shù)、據(jù)傳送流程中將所述緩沖區(qū)中的當前數(shù)據(jù)幀發(fā)送到CAN總線;當CAN總線控制器將所述緩沖區(qū)內(nèi)的數(shù)據(jù)幀發(fā)送完成后,處理器進入下一次中斷。在啟動所述數(shù)據(jù)傳送過程前,CAN總線處理器對待傳輸數(shù)據(jù)塊的長度進行判斷若待傳輸數(shù)據(jù)塊的長度大于ー個數(shù)據(jù)幀的最大長度,則組成第I個數(shù)據(jù)幀并將第I個數(shù)據(jù)幀填入CAN總線控制器緩沖區(qū);啟動CAN總線控制器數(shù)據(jù)傳送流程;在CAN總線控制器傳送第I個數(shù)據(jù)幀的同吋,處理器并行完成對第2個數(shù)據(jù)幀的組幀,并進入數(shù)據(jù)傳送過程;若待傳輸數(shù)據(jù)塊的長度小于數(shù)據(jù)幀長度,則將待傳輸數(shù)據(jù)塊組成單個數(shù)據(jù)幀后填入CAN總線控制器緩沖區(qū);啟動控制器數(shù)據(jù)傳送流程;完成對待傳輸數(shù)據(jù)塊的處理。本發(fā)明與現(xiàn)有技術相比具有如下優(yōu)點本發(fā)明所述方法針對星上CAN總線數(shù)據(jù)發(fā)送,解決了數(shù)據(jù)發(fā)送的實時性要求與處理器時間利用率之間的矛盾?,F(xiàn)有技術在查詢方式下,數(shù)據(jù)傳送過程能夠具備較好的實時性,響應時間和數(shù)據(jù)幀間隔均比較小,但處理器時間浪費比較嚴重沖斷方式不存在浪費處理器時間的問題,但存在響應時間或幀間隔較長的問題。而在本發(fā)明中采用處理器與處理器和CAN總線控制器的流水線的方式,既能夠達到不浪費處理器時間的目的,響應時間和傳送時間性能也能夠接近查詢模式,能夠滿足星上信息傳送的實時性要求。本發(fā)明方法針對星上低性能處理器與CAN總線控制器的典型硬件配置,將處理器作為第一級流水的硬件載體,CAN總線控制器作為第二級流水的硬件載體,不需要額外的硬件電路,具有通用性好的優(yōu)點,能夠廣泛適用于各類星上計算機。
圖I為串打時序不意圖;圖2為流水時序不意圖;圖3為流水線填充流程圖;圖4為數(shù)據(jù)傳送過程流程圖。
具體實施例方式下面就結(jié)合附圖對本發(fā)明做進ー步介紹。本發(fā)明的CAN總線數(shù)據(jù)傳送方法對CAN總線現(xiàn)有的中斷發(fā)送(發(fā)送過程中組數(shù)據(jù)幀)方法進行改進,將圖I所示的串行時序改進為圖2所示的流水線時序,利用處理器和CAN總線控制器構(gòu)成兩級流水線對待傳送的數(shù)據(jù)進行傳送。從硬件電路原理上,數(shù)據(jù)組幀、數(shù)據(jù)寫入緩沖區(qū)和啟動發(fā)送只能由處理器完成,從CAN總線控制器發(fā)送緩沖區(qū)取數(shù)據(jù)并發(fā)到總線上的過程只能由CAN總線控制器完成。因此將處理器作為第一級流水,CAN總線控制器作為第二級流水。處理器為流水線第一級,用于實現(xiàn)對流水線的構(gòu)建和填充工作,按發(fā)生的時間先后順序可分為三部分工作(I)前ー個中斷周期中的數(shù)據(jù)幀寫入到CAN總線控制器發(fā)送緩沖區(qū);(2)設置CAN總線控制器的相關寄存器,啟動CAN總線控制器的數(shù)據(jù)傳送流程;(3)按照協(xié)議繼續(xù)對后續(xù)數(shù)據(jù)進行組幀,并進行校驗等其它相關的計算。CAN總線控制器為流水線第ニ級,用于在數(shù)據(jù)傳送流程完成對緩沖區(qū)中數(shù)據(jù)幀的發(fā)送工作。 如圖3為本發(fā)明所述方法流程圖,所示,具體過程如下在一個數(shù)據(jù)的傳送過程中,針對待傳輸?shù)臄?shù)據(jù),處理器首先按圖3所示過程進行流水線的填充。I、判斷數(shù)據(jù)塊長度,當數(shù)據(jù)塊能夠裝入ー個CAN數(shù)據(jù)幀時,轉(zhuǎn)第2步;當數(shù)據(jù)塊長度超出ー個CAN總線數(shù)據(jù)幀的數(shù)據(jù)段長度時,轉(zhuǎn)第6步;2、按照CAN總線應用層通信協(xié)議,將數(shù)據(jù)塊組成CAN數(shù)據(jù)幀單幀;3、將第2步組成的數(shù)據(jù)幀寫入CAN總線控制器發(fā)送緩沖區(qū);4、設置CAN總線控制器寄存器,啟動數(shù)據(jù)發(fā)送;5、設置發(fā)送完成標志為發(fā)送完成,結(jié)束;6、組數(shù)據(jù)塊第一幀;7、將長數(shù)據(jù)塊第一幀寫入CAN總線控制器發(fā)送緩沖區(qū);8、設置CAN總線控制器寄存器,啟動數(shù)據(jù)發(fā)送;9、組數(shù)據(jù)塊第二幀。在上述步驟中,針對I — 2 — 3 — 4 — 5的過程只需要處理器的一次中斷即可完成對待傳送數(shù)據(jù)的傳送。針對I — 2 — 6 — 7 — 8 — 9的過程則需要處理器首先利用第I個數(shù)據(jù)幀和第2個數(shù)據(jù)幀的組幀和傳送完成對流水線的填充。在完成第2個數(shù)據(jù)幀的組幀后,處理器將發(fā)送指針移到剰余數(shù)據(jù)首地址即可以開啟所述的數(shù)據(jù)傳送過程。如圖4所示,在數(shù)據(jù)傳送過程中,當?shù)谝粠瑪?shù)據(jù)發(fā)送完畢后,CAN總線控制器觸發(fā)處理器的發(fā)送中斷并且剩余數(shù)據(jù)量超過ー幀數(shù)據(jù)幀時,進入流水線循環(huán)階段;當剰余數(shù)據(jù)量不超過ー幀數(shù)據(jù)幀時,進入流水線排空階段。流水線循環(huán)和排空在發(fā)送中斷服務程序中完成,步驟如下I、判斷是否發(fā)送完成。如果是,直接返回;否則轉(zhuǎn)第2步;2、將第N幀數(shù)據(jù)寫入CAN總線控制器發(fā)送緩沖區(qū);3、設置CAN總線控制器寄存器,啟動數(shù)據(jù)發(fā)送;4、判斷發(fā)送指針是否為空。如果是,置發(fā)送完成標志,返回,否則轉(zhuǎn)第5步;5、判斷剰余數(shù)據(jù)的數(shù)據(jù)量是否超過ー幀。如果是,轉(zhuǎn)第6步;否則轉(zhuǎn)第8步;
6、組第 N+1 幀;7、將發(fā)送指針移到剰余數(shù)據(jù)首地址,結(jié)束;8、組數(shù)據(jù)幀最后ー幀;9、將發(fā)送指針設為空指針,結(jié)束。上述,步驟I — 2 — 3 — 4 — 5 — 6 — 7 —結(jié)束,為流水線的循環(huán)階段流程,步驟I —結(jié)束、步驟I — 2 — 3 — 4 —結(jié)束、步驟I — 2 — 3 — 4 — 5 — 8 — 9 —結(jié)束為流水線的排空過程。本發(fā)明在流水線的循環(huán)階段即可通過分別位于流水線第一級的處理器和第二 級的CAN總線控制器完成對待傳輸數(shù)據(jù)的傳送過程。本發(fā)明未詳細說明部分屬本領域技術人員公知常識。
權利要求
1.一種CAN總線數(shù)據(jù)傳送方法,用于在數(shù)據(jù)傳送過程中協(xié)調(diào)處理器和CAN總線控制器,其特征在于在所述數(shù)據(jù)傳送過程中,處理器在數(shù)據(jù)傳送的一次中斷中,首先將第N個數(shù)據(jù)幀填入CAN總線控制器的緩沖區(qū);然后啟動控制器數(shù)據(jù)傳送流程;最后完成第N+1個數(shù)據(jù)幀的組幀;在處理器進行第N+1個數(shù)據(jù)幀的組幀時,CAN總線控制器在數(shù)據(jù)傳送流程中將所述緩沖區(qū)中的當前數(shù)據(jù)幀發(fā)送到CAN總線;當CAN總線控制器將所述緩沖區(qū)內(nèi)的數(shù)據(jù)幀發(fā)送完成后,處理器進入下一次中斷。
2.如權利要求I所述的一種CAN總線數(shù)據(jù)傳送方法,其特征在于在啟動所述數(shù)據(jù)傳送過程前,CAN總線處理器對待傳輸數(shù)據(jù)塊的長度進行判斷 若待傳輸數(shù)據(jù)塊的長度大于一個數(shù)據(jù)幀的最大長度,則組成第I個數(shù)據(jù)幀并將第I個數(shù)據(jù)幀填入CAN總線控制器緩沖區(qū);啟動CAN總線控制器數(shù)據(jù)傳送流程;在CAN總線控制器傳送第I個數(shù)據(jù)幀的同時,處理器并行完成對第2個數(shù)據(jù)幀的組幀,并進入數(shù)據(jù)傳送過程; 若待傳輸數(shù)據(jù)塊的長度小于數(shù)據(jù)幀長度,則將待傳輸數(shù)據(jù)塊組成單個數(shù)據(jù)幀后填入CAN總線控制器緩沖區(qū);啟動控制器數(shù)據(jù)傳送流程;完成對待傳輸數(shù)據(jù)塊的處理。
全文摘要
本發(fā)明公開了一種CAN總線數(shù)據(jù)傳送方法,用于在數(shù)據(jù)傳送過程中協(xié)調(diào)處理器和CAN總線控制器。在所述數(shù)據(jù)傳送過程中,處理器在數(shù)據(jù)傳送的一次中斷中,首先將第N個數(shù)據(jù)幀填入CAN總線控制器的緩沖區(qū);然后啟動控制器數(shù)據(jù)傳送流程;最后完成第N+1個數(shù)據(jù)幀的組幀;在處理器進行第N+1個數(shù)據(jù)幀的組幀時,CAN總線控制器在數(shù)據(jù)傳送流程中將所述緩沖區(qū)中的當前數(shù)據(jù)幀發(fā)送到CAN總線;當CAN總線控制器將所述緩沖區(qū)內(nèi)的數(shù)據(jù)幀發(fā)送完成后,處理器進入下一次中斷。采用本發(fā)明實現(xiàn)了處理器和CAN總線控制器的流水線式工作,滿足了對當前星上處理器的實時性要求。
文檔編號H04L12/40GK102664779SQ20121009600
公開日2012年9月12日 申請日期2012年3月31日 優(yōu)先權日2012年3月31日
發(fā)明者劉思遠, 劉勝利, 楊志, 楊芳, 謝松 申請人:航天東方紅衛(wèi)星有限公司