基于CAN總線的控制系統_第1頁
基于CAN總線的控制系統_第2頁
基于CAN總線的控制系統_第3頁
基于CAN總線的控制系統_第4頁
基于CAN總線的控制系統_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上 微機應用課程設計報告題 目:基于單片機的16*16點陣系統設計專 業: 班 級: 姓 名: 學 號: 地 點: 時 間: 指導老師: 專心-專注-專業摘 要八位智力競賽搶答器是一個可供八個參賽組進行智力競賽的電氣裝置,該裝置由主體電路與擴展電路組成。優先編碼電路、鎖存器、譯碼電路將參賽組的輸入信號在顯示器上輸出;用控制電路的主持人開關啟動報警電路,以上兩部分組成主體電路、通過定時電路和譯碼電路將秒脈沖產生的信號在顯示器上輸出實現計時功能,構成擴展電路。本文詳細介紹了搶答器的設計方案、功能、及在設計過程中所做的改進。關鍵字:搶答電器;定時電器;報警電器;時序電器目 錄

2、 4 1 緒 論本設計是以八路搶答器為基本理念。考慮到需設定限時回答的功能 利用89C51單片機及外接口實現的搶答器系統,利用單片機的定時器計時器實現定時和計數的功能,將軟硬件結合起來,使得系統能正常的進行計時,同時使數碼管能夠正確的顯示時間。用開關鍵盤輸出,揚聲器發聲提示。同時系統能夠實現:在槍答中只有開始后搶答才有效,如果在開始搶答前搶答無效;滿時后系統計時自動復位,主控強制復位,按鍵鎖定,在這種狀態下,按鍵無效。1.1 搶答器的需求分析1. 在搶答器中,只有開始后搶答才有效,如果在開始搶答前搶答為無效。2搶答限定時間和回答問題的時間可是在1-99秒設定3可以顯示是哪位選手有效搶答,正確按

3、鍵后有蜂鳴器鳴叫提示。4搶答時間和回答問題時間倒計時顯示,時間完后系統自動復位。5按鍵鎖定,在有效狀態下,按鍵無效非法。 1.2 CAN總線的優勢CAN是一種有效支持分布式控制或實時控制的串行通信網絡。和目前許多RS-485基于R線構建的分布式控制系統而言,基于CAN總線的分布式控制系統在以下方面具有明顯的優越性:1.2.1 網絡各節點之間的數據通信實時性強首先,CAN控制器工作于多種方式,網絡中的各節點都可根據總線訪問優先權(取決于報文標識符)采用無損結構的逐位仲裁的方式競爭向總線發送數據,且CAN協議廢除了站地址編碼,而代之以通信數據進行編碼,這可使不同的節點同時接收到相同的數據,這些特點

4、使得CAN總線構成的網絡各節點之間的數據通信實時性強,并且容易構成冗余結構,提高系統的可靠性和系統的靈活性,而利用RS-485只能構成主從結構系統,通信方式也只能以主站輪詢的方式進行,系統的實時性、可靠性較差。1.2.2 縮短了開發周期CAN總線通過CAN接收器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態只能是高電平或懸浮狀態,CANL端只能是低電平或懸浮狀態。這就保證不會在出現在RS-485網絡中的現象,即當系統有錯誤,出現多節點同時向總線發送數據時,導致總線呈現短路,從而損壞某些節點的現象,而且CAN節點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總

5、線上其他節點的操作不受影響,從而保證不會出現顯現在網絡中,因個別節點出現問題,使得總線出于“鎖死”狀態,而且,CAN具有的完善的通信協議可由CAN控制器芯片及其接口芯片來實現,從而大大降低系統開發難度,縮短了開發周期,這些都是僅有電氣協議的RS-485所無法比擬的。1.2.3 已形成國際標準的現場總線另外,于其他現場總線相比較,CAN總線是具有通信速率高、容易實現、且性價比高等諸多特點的一種已形成國際標準的現場總線,這些也是目前CAN總線應用于眾多領域,具有強勁的市場競爭力的重要原因。1.2.4 最有前途的現場總線之一CAN即控制器局域網絡,屬于工業現場總線的范疇,于一般的通信總線相比,CAN

6、總線的數據通信具有突出的可靠性、實時性和靈活性。由于其良好的性能及獨特設計,CAN總線越來越受到人們的重視。它在汽車領域上的應用是最廣泛的,世界上一些著名的汽車制造廠商,如BENZ、PORSCHE、ROLLS-ROYCE等都采用了CAN總線來實現汽車內部控制系統與各檢測和執行機構間的數據通信,同時,由于CAN總線本身的特點,其應用范圍目前已不再局限于汽車行業,而向自動控制、航空航天、過程控制、機械工業、農用機械、數控機床、醫療器械及傳感器等領域發展,CAN已經形成國際標準,并已被公認為幾種最有前途的現場總線之一,其典型的應用協議有:SAEJ1939/ISO11783、CANOpen、CANae

7、rospace、DeviceNet、NMEA 2000等。2 硬件電路設計此控制系統主要有三個主要的模塊組成,第一步分為單片機模塊,第二部分為CAN總線控制器模塊,第三部分為通信和外圍接口,其主要分為輸出和輸入接口,使系統構成一個閉環系統,從而實現所需要的控制功能。系統功能結構圖如圖1示圖1 系統結構示意圖2.1 單片機模塊圖2為系統單片機模塊的電路圖圖2 單片機模塊電路圖本系統單片機選擇的是STC89C52,是雙列直插式40引腳,其芯片引腳圖如圖2-4。STC89C52RC單片機是宏晶科技推出的新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統8051單片機,12時鐘/機器周期和6

8、時鐘/機器周期可以任意選擇。圖3 STC89C52的芯片引腳圖2.1.1 STC89C52主要特性如下: 1. 增強型 8051 單片機,6時鐘/機器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統8051。2. 工作電壓:5.5V3.3V(5V單片機)/3.8V2.0V(3V單片機)。3. 工作頻率范圍:040MHz,相當于普通8051的080MHz,實際工作頻率可達48MHz。4. 用戶應用程序空間為8K字節 。5. 片上集成512字節RAM。6. 通用I/O口(32個)復位后為,P1/P2/P3/P4是準雙向口/弱上拉,P0 口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,

9、作為I/O口用時,需加上 拉電阻。 7. ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數秒即可完成一片。8.具有EEPROM功能。 9.具有看門狗功能。10.共3個16位定時器/計數器,即定時器T0、T1、T2。11.外部中斷4路,下降沿中斷或低電平觸發電路,Power Down模式可由外部中斷低電平觸發中斷方式喚醒。12.通用異步串行口(UART),還可用定時器軟件實現多個UART。 13.工作溫度范圍:-40+85(工業級)/075(商業級)。 14. PDIP封裝。 2.1.2 STC8

10、9C52RC單片機的工作模式掉電模式:典型功耗<0.1A,可由外部中斷喚醒,中斷返回后,繼續執行原程序。空閑模式:典型功耗2mA典型功耗。 正常工作模式:典型功耗4mA7mA典型功耗。 掉電模式可由外部中斷喚醒,適用于水表、氣表等電池供電系統及便攜設備。 STC89C52RC引腳功能說明:VCC(40引腳):電源電壓;VSS(20引腳):接地。 P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅動8個TTL負載,對端口P0寫入每個引腳能驅動寫入“1”時,可以作為高阻抗輸入。 P1端口(P1.0P1.7,18引腳):P1口是一個帶

11、內部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這是可用作輸入口。 P2端口(P2.0P2.7,2128引腳):P2口是一個帶內部上拉電阻的8位雙向I/O 端口。對端口寫入1時,通過內部的上拉電阻把端口拉到高電平,這時可用作輸入口。 P2 作為輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會 輸出一個電流。 P3 端口(P3.0P3.7,1017 引腳) :P3 是一個帶內部上拉電阻的 8 位雙向I/O端口。P3的輸出緩沖器可驅動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,

12、通過內部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流。 RST(9引腳):復位輸入。當輸入連續兩個機器周期以上高電平時為有效,用來完成單片機的復位初始化操作。 ALE/ROG(30引腳)地址鎖存控制信號:(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳(ROG)也用作編程輸入脈沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數據存儲器時,ALE脈沖將會跳過。如果需要,通過將地址位8EH的SFR的第0位置“

13、1”,ALE操作將無效。 外部程序存儲器選通信號(SEN)是外部程序存儲器選SEN(29引腳):當 AT89C51RC從外部程序存儲器執行外部代碼時,SEN在每個機器周期被激活兩次,而訪問外部數據存儲器時,SEN將不被激活。A/VPP(31引腳)訪問外部程序存儲器控制信號:為使能從0000H到FFFFH的外部程序存儲器讀取指令,A必須接 GND。注意加密方式1時,A將內部鎖定位RESET。為了執行內部程序指令,A應該接VCC。在 Flash編程期間,A也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內部時鐘發生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。2

14、.2 CAN總線控制器模塊CAN總線控制部分的電路圖如下所示:圖4 CAN總線部分電路圖2.2.1 SJA1000簡介本系統選擇的CAN控制芯片是SJA1000,它是Philips半導體公司PCA82C200 CAN 控制(BasicCAN)的替代產品,而且它增加了一種新的操作模式PeliCAN,這種模式支持具有很多新特性的CAN 2.0B協議。其引腳圖及內部功能塊圖分別如圖5和圖6。管腳定義見表1。圖5 SJA1000芯片引腳圖圖6 SJA1000芯片內部引腳圖表1管腳定義符號引腳說明AD7-AD02,1,28-23多路地址、數據總線ALE/AS3ALE輸入信號(Intel模式)AS輸入信號

15、(Motorola模式)/CS4片選輸入,低電平允許訪問SJA1000(/RD)/E5微控制器的/RD信號(Intel模式)或E使能信號(Motorola模式)/WR6微控制器的/WR信號(Intel模式)或/RD(/WR)信號(Motorola模式)CLKOUT7SJA1000產生的提供給微控制器的時鐘輸出信號,時鐘信號來源與內部振蕩器且通過編程驅動;時鐘控制器寄存器的時鐘關閉位可禁止該引腳Vss18接地XTAL1 9輸入到振蕩器放大電路;外部振蕩信號由此輸入XTAL210振蕩放大電路輸出;使用外部振蕩信號左開路輸出MODE11模式選擇輸入1=Intel模式 0=Motorola模式VDD3

16、12輸出驅動的5V電壓源TX013從CAN輸出驅動器0輸出到物理線路上TX114從CAN輸出驅動器1輸出到物理線路上Vss315輸出驅動器接地/INT16中斷輸出,用于中斷微控制器:/INT在內部中斷寄存器各位都被置位時低電平有效;/INT是開漏輸出,且與系統中的其他/INT是線或的;此引腳上的低電平可以把IC從睡眠模式中激活/RST17復位輸入,用于復位CAN接口(地低電平有效);把/RST引腳通過電容 連到Vss,通過電阻連到VDD可自動上電復位VDD218輸入比較器的5V電壓源RX0RX119,20從物理的CAN總線輸入到SJA1000的輸入到SJA1000的輸入比較器;支配(控制)電平

17、將會喚醒SJA1000的睡眠模式;如果RX1比RX0的電平高,就讀支配(控制)電平,反之讀弱勢電平;如果時鐘分頻寄存器的CBP位被置位,就旁路CAN輸入比較器以減少內部延時;這種情況下只有RX0是激活的,弱勢電平被認為是高而支配電平被認為是低Vss221輸入比較器的接地端VDD122邏輯電路的5V電壓源SJA1000控制器中的各個控制塊的功能主要有:1.接口管理邏輯(IML)接口管理邏輯解釋來自CPU的命令,控制CAN寄存器的尋址,向主控制器提供中斷信息和狀態信息。2.發送緩沖器(TXB)發送緩沖器是CPU和位流處理器BSP之間的接口,能夠存儲發送到CAN網絡上的完整信息,緩沖器長13個字節,

18、由CPU寫入BSP讀出。3.接收緩沖器(RXB,RXFIFO)解釋緩沖器是驗收濾波器和CPU之間的接口,用來存儲從CAN總線上接收到的信息,接收緩沖器(RXB13個字節)作為接收FIFO(RXFIFO長64字節)的一個窗口可被CPU訪問,CPU在此FIFO的支持下可以再處理信息的時候接收其他信息。4.驗收濾波器(ACF)驗收濾波器把它其中的數據和接收的識別碼的內容相比較,以決定是否接收信息,在純粹的接收測試中所有的信息都保存在RXFIFO。5.位流處理器(BSP)位流處理器是一個在發送緩沖器(RXFIFO)和CAN總線之間控制數據的程序裝置,它還在CAN總線上執行錯誤檢測仲裁填充和錯誤處理。6

19、.位時序邏輯(BTL)位時序邏輯監視串口的CAN總線和處理與總線有關的位時序,它在信息開頭“弱勢-支配”的總線傳輸同步CAN總線位流(硬同步),接收信息時再次同步下一次傳送(軟同步)。BTL還提供可編程的時間段來補償傳播延遲時間、相位轉換和定義采樣點和一位時間內的采樣次數。7.錯誤管理邏輯(EML)EML負責傳送模塊的錯誤管制。它接收BSP的出錯報告通知BSP和IML進行錯誤統計。2.2.2 PCA82C250簡介 PCA82C50是CAN協議控制器和物理總線間的接口,它主要是為汽車中高速通訊(高達1Mbps)應用而設計。該器件對總線提供差動發送能力,對CAN控制器提供差動接收能力,完全符合“

20、ISO11898”標準。2.2.2.1 PCA82C250的特性l 完全符合“ISO11898”標準l 高速率(最高達1Mbps)l 具有抗汽車環境中的瞬間干擾,保護總線能力l 斜率控制,降低射頻干擾(RFI)l 差分接收器,抗寬范圍的共模干擾,抗電磁干擾(EMI)l 熱保護l 防止電池和地之間的發送短路l 低電流待機模式l 未上電的節點對總線無影響l 可連接110個節點PCA82C50的內部結構方框圖如圖7示。圖7 PCA82C50內部結構圖PCA82C250的封裝形式及引腳配置如圖8示,封裝形式為DIP8,表中列出了其各引腳的功能。表2 PAC82C250引腳功能符號管腳功能描述TXD1發

21、送數據輸入GND2地VCC3電源電壓RXD4接收數據輸出Vref5參考電壓輸出CANL6低電平CAN電壓輸入/輸出CANH7高電平CAN電壓輸入/輸出Rs8斜率電阻輸入圖8 PCA82C250芯片引腳PCA82C250的主要功能有:首先,82C250驅動電路內部具有限流電路,可以防止輸出級對電源、地或負載短路,雖然在這種故障條件出現時功耗增加,但不致使輸出級破壞。其次,82C250采用雙線差動驅動,有助于抑制惡劣環境下的瞬變干擾。引腳Rs可用于選擇三種不同的工作方式:高速、斜率控制和待機。在高速工作方式下,發送器輸出晶體管以盡可能快的速度啟閉。在這種方式下,不采用任何措施限制上升和下降斜率,此

22、時,建議使用屏蔽電纜以避免射頻干擾問題。通過將引腳8接地可選擇高速方式,對于較低速度或較短總線長度,可用非屏蔽雙絞線或平行線作總線。為降低射頻干擾,應限制上升和下降斜率,上升和下降斜率可通過由引腳8至地連接的電阻進行控制,斜率正比于引腳8上的電流輸出,若腳8接高電平,則電路進入低電平待機方式,在這種方式下,發送器被關閉,而接收器轉至低電流,若檢測到顯性位,RXD將轉至低電平,位控制器應通過引腳8將發送器變為正常方式作為對此條件作出的反應,由于在待機方式下,接收器是慢速的,因此第一個報文將被丟失。對于CAN控制器及帶有CAN總線接口的器件,82C250并不是必須使用的器件,因為多數CAN控制器均

23、具有配置靈魂的收發器件,并允許總線故障,只是驅動能力只允許20-30個節點連接在一條總線上,而82C250支持多達110個節點,并能以1Mbps的速率工作于惡劣電氣環境下,利用82C250還可方便地在CAN控制器與收發之間建立光電隔離,以實現總線上各個節點之間的電氣隔離。CAN節點的硬件電路設計主要是CAN總線通信控制器與微處理器之間的接口電路,以及CAN總線收發器與物流總線之間的接口電路設計。CAN通信控制器是接口電路的核心,它主要完成CAN總線的通信協議,而CAN總線收發器的功能則是增大通信距離,保護系統不受干擾。2.2.2.2 CAN總線設計需要注意的幾點1.物理總線兩端的終端電阻RT要

24、匹配,否則CAN總線數據通信的抗干擾性及可靠性會大大的降低;2. PCA82C250為CAN總線通信控制器與物理總線之間的接口,它可以提供向總線的差動發送能力和CAN控制器的差動接收能力,TXD和RXD引腳分別發送經過驅動后的發送和接收信號,引腳8(RS)可以選擇2種不同的工作方式:當與地相連,則系統將處于高速工作方式,在這種方式下,為避免干擾,最好使用屏蔽電纜作為總線,而在低波特率且總線較短時,一般采用斜率控制方式,上升及下降的斜率取決于RS的阻值,而RS的取值一般在1K140K較為理想,在這種方式下可以采用雙絞線作為總線的物理介質。本系統采用的就是這種方式,RS采用的是47K的電阻。3.

25、SJA1000的TX1腳懸空,RX1引腳的電平必須維持在約0.5VCC以上,否則不能形成CAN協議要求的電平邏輯。4.把STC89C52的X2引腳接SJA1000的外部振蕩輸入引腳XTAL1,這樣就解決時鐘同步的問題。將SJA1000的/INT與STC89C52的INT0相連,這樣STC89C52和SJA1000就通過中斷方式來進行通信。在實際的應用中,CAN總線大都用在如汽車和工業現場控制等的環境中,環境對電路的影響很大,所以為減少這些干擾,在設計CAN總線的節點時,通常在電路中使用高速光藕,如6N137等,使SJA1000的TX0與RX0不直接與82C520的TXD和RXD相連,而是通過高

26、速光耦與82C520相連,這樣就能很好地實現總線上各CAN節點間的電氣隔離。同時還必須指出的是,光耦部分所采用的兩個電源VCC和VDD必須完全隔離,否則光耦就失去了意義,即無法達到隔離的目的。2.3 通信模塊和外圍接口2.3.1 通信模塊系統通信模塊主要是采用串行通信,所用的芯片是MAX232,圖2-9系統通信模塊的電路圖圖9通信模塊電路圖MAX232芯片是美信公司專門RS-232標準串口設計的單電源電平轉換芯片,使用+5V單電源供電。它一共有16個引腳,主要分為三個部分:第一部分是電荷泵電路。有1、2、3、4、5、6腳和4個電容構成,功能是產生+12V和-12V兩個電源,提供RS-232串口

27、電平的需要;第二部分是數據轉換通道,由7、8、9、10、11、12、13、14腳構成兩個數據通道,其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道,8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。TTL/CMOS數據從T1IN、T2IN輸入轉換成RS-232數據從T1OUT、T2OUT送到電腦DB9插頭,DB9插頭的RS-232數據從R1IN、R2IN輸入轉換成TTL/CMOS數據后從R1OUT、R2OUT輸出;第三部分是供電,15腳(GND)、16腳(VCC)。2.3.2 外圍接口整個系統要實現各

28、種功能就必須要和外圍的各種傳感器、控制器連接,而要實現這個功能就需要系統上的這個外圍接口單元,圖10統的外圍接口單元:圖10 外圍接口單元圖2-11中的JX為系統的輸出接口,連接系統外的傳感器,主要是用來輸出數據,而KZ是輸入接口,當連接好外圍的設備時,就可以構成一個閉環系統,從而來實現所希望控制的東西。就拿路燈控制來說,當光照很弱時,通過一個傳感器把這個信號有KZ傳到單片機內,由單片機原先寫好的軟件來分析,從而產生一個輸出信號有JX傳到路燈上的控制器中使路燈亮或滅,從而實現路燈控制的功能。3 CAN總線控制系統軟件設計CAN節點的初始化程序的主要任務是對總線通信控制器SJA1000進行合適的

29、配置,以滿足系統的運行要求。SJA1000有兩種工作模式:Basic-CAN 和Peli-CAN,SJA1000 上電后首先進入的是Basic-CAN模式,而Peli-CAN支持CAN-2.0B規范。3.1 初始化程序對SJA1000的初始化程序的流程圖如下圖所示,SJA1000的初始化主要是對時鐘分頻器、中斷使能寄存器、驗收代碼寄存器和接收屏蔽寄存器、總線定時器輸出控制器等進行配置,它關系著能否成功進行通信的問題,如果配置不當的話,很可能CAN總線不能正常運行。圖11初始化流程圖初始化程序如下:void SJA1000_init(void)CS=0; /片選SJA1000EA=0; /關閉中

30、斷while (ModeCountReg&RM_RR_Bit)=ClrByte)ModeControlReg-0x01;ClockDivideReg=0xc8;InterruptEnReg-0x03;AcceptCode0Reg=#;AccepCode1Reg=#;AccepCode2Reg=#;AccepCode3Reg=#;AcceptMask0Reg=#;AcceptMask1Reg=#;AccepyMask2Reg=#;AcceptMask3Reg=#;BusTiming0Reg=#;BusTiming1Reg=#;OutControlReg=#;RxBufstartAdr=0

31、;do(modeControlReg=0x08)while(ModeControlReg&0x01)!=0x00);EA=1;各個寄存器的值則可以根據實際需要作合理的配置,需要指出的是,CAN總線上節點的波特率設置都必須相同,否則將引起通信失敗。系統節點通信波特率是由總線定時寄存器0、總線定時寄存器1和系統的晶振頻率所決定的,其計算方法如下:總線定時寄存器0決定了波特率預設值(BRP)和同步跳轉寬度(SJW)值,它各個位的功能如下表所示:表3 SJA1000總線定時寄存器各位的功能BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SJW.1SJW.0BRP.5BRP.4B

32、RP.3BRP.2BRP.1BRP.0總線定時寄存器1則定義了每個位周期的長度、采樣點的位置和在每個采樣點的采樣數目,總線定時寄存器1各位的功能如下表所示表4 SJA1000總線定時寄存器各位的功能BIT7BIT6BIT5BIT4BIT3BIT2BIT1BITSAMTESG2.2TESG2.1TESG2.0TESG1.3TESG1.2TESG1.1TESG1.0CAN總線比特率的確定方法見附錄一。3.2 數據的接收和發送功能完成對CAN節點的初始化后,便可通過CAN的通信控制器SJA1000向物理總線發送和接收數據。這一過程微處理器和總線通信控制器SJA1000之間的通訊是通過中斷方式來實現的

33、,也就是說,當SJA1000把前面寫入緩沖區的數據發送完以后,亦會通過中斷方式告知CPU數據已經發送完,發送緩沖器已空,可以寫入其他的數據,CPU就是通過中斷服務程序對SJA1000的中斷請求作出相應的響應的。3.2.1 發送數據本文中CAN總線節點所采用的通信控制器是SJA1000,因此有必要對SJA1000發送和接收報文的格式作一些介紹。SJA1000的發送緩沖器的幀格式如圖所示: 表5 標準幀格式 表6 擴展幀格式16TX幀信息17TX識別碼118TX識別碼219TX識別碼320TX識別碼421TX數據字節122TX數據字節223TX數據字節324TX數據字節425TX數據字節526TX

34、數據字節627TX數據字節728TX數據字節816TX幀信息17TX識別碼118TX識別碼219TX數據字節120TX數據字節2 21TX數據字節322TX數據字節423TX數據字節524TX數據字節625TX數據字節726TX數據字節827未使用28未使用由此可見,發送緩沖器被分成描述符區和數據區,描述符區的第一個字節是幀信息字節,它說明了幀格式(標準幀或擴展幀)、遠程或數據幀和數據長度。本設計中幀格式采用的是擴展幀格式(EFF),因為SJA1000的工作模式我們采用的是PeliCAN工作模式,擴展幀與標準幀的主要區別是,擴展幀使用4個字節作為數據的識別碼,而標準幀則只用2個字節。擴展幀對應

35、的發送緩沖器中的描述符區的位的配置如下表所示,描述符的值越小,則該幀的優先級越高。表7 TX幀信息(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0FFRTRXXDLC.3DLC.2DLC.1DLC.0表8 TX識別碼1(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.28ID.27ID.26ID.25ID.24ID.23ID.22ID.21表9 TX識別碼2(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.20ID.19ID.18ID.17ID.16ID.15ID.14ID.13表10 TX識別碼3(EFF)

36、BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.12ID.11ID.10ID.9ID.8ID.7ID.6ID.5表11 TX識別碼4(EFF)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ID.4ID.4ID.3ID.2ID.1ID.0XX在發送幀的幀信息中,幀格式(FF)和遠程幀發送請求位(RTR)的值如下表所示,而DLC則代表了數據字節的長度,其范圍為0-8表12 幀格式請求位值定義發送數據時用戶只需將要發送的數據按照CAN控制器SJA1000所規定的格式組合成一幀報文,送入控制器的發送緩沖區,然后啟動SJA1000發送就可以實現,但在將報文發送到緩

37、沖區之前,應作一些判斷,下圖給出了發送子程序的程序流程:圖12 程序流程圖發送子程序:void SJA1000_SendMessage(unsigned char *Msg_ptr,int length)int i;while(statusreg&0x01);while(StatusReg&0x08)=0x00);if(statusreg&0x04)=0x00);elsefor(i=0;i<length;i+)XBYTE0x7010+i=*msg_ptr;msg_ptr+; commandreg=0x01;3.2.2 接收數據接收數據較之發送數據要復雜一些,因為在處理接收報文的過程中,要對如總線脫離、錯誤報警等情況作出處理。SJA1000對于報文的接收可采用兩種方式,即中斷接收方式和查詢接收方式。接收數據的程序流程圖如圖13所示:接收子程序:temp_status=statusreg;if(temp_status&0xc3)=0x00) break; else if(temp_status&0x80)=0x00) if(temp_int&0x80)=0x00) while(statusreg&0x01) temp=XBYTE0x7010;if(temp&0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論