版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C8051F040中CAN控制器的應(yīng)用 C8051F040中CAN控制器的應(yīng)用摘要:介紹C8051F040單片機內(nèi)部CAN控制器的應(yīng)用。詳細敘述此控制器的構(gòu)成及其訪問方式,指出在使用時是如何配置控制器的相關(guān)控制寄存器,并且給出CAN控制器在應(yīng)用中的物理層硬件電路和應(yīng)用層軟件設(shè)計。關(guān)鍵詞:CAN控制器 寄存器 報文對象 C8051F040單片機與CAN總線連接的傳統(tǒng)方式是將CPU與總線控制器和總線收發(fā)器相連
2、后再接入總線網(wǎng)絡(luò),這樣使CPU外圍電路復(fù)雜化,整個系統(tǒng)受外部影響較大。為了解決這一問題,很多單片機廠商紛紛將CAN控制器集成在單片機芯片上。目前,單片機內(nèi)部集成的CAN控制器有Motorola公司的MC68HC912DG128A、Philips公司的P87C591、Atmel公司的AT89C51CC01和AT89C51CC02、Intel公司的TN87C196CA和TN87C196CB以及Cygnal公司的C8051F040等。不同單片機內(nèi)部CAN控制器的使用方法有所不同,但存在著很多相似之處。這里以C8051F040為列詳細介紹其內(nèi)部CAN控制器的使用方法,希望通過這篇文章能給初學(xué)帶來方便,
3、并能和廣大的單片機愛好者就這一問題做進一步的討論。1 C8051F040 CAN控制器構(gòu)成及訪問方式C8051F040單片機是美國Cygnal公司生產(chǎn)的完全集成的混合信號系統(tǒng)級芯SoC(System on Chip),具有與8051指令集完全兼容的CIP-51內(nèi)核。它在一塊芯片上集成了構(gòu)成一個單片機數(shù)據(jù)采樣或控制系統(tǒng)所需要的幾乎所有模擬和數(shù)字外設(shè)及其它功能部件。它具有64KB Flash、4352B RAM、CAN控制器2.0、2個串行接口、5個16位定時器、12位A/D轉(zhuǎn)換器、8位A/D轉(zhuǎn)換器及12位D/A轉(zhuǎn)換器等,它內(nèi)部還帶有JTAG接口,'' >C8051F040中
4、CAN控制器的應(yīng)用 使調(diào)試變得非常方便。C8051F040內(nèi)部集成的CAN控制器為Bosch CAN控制器。此CAN控制器有以下幾部分構(gòu)成:CAN內(nèi)核、報文RAM(與C8051 RAM相互獨立)、報文處理狀態(tài)機制和CAN控制寄存器。其結(jié)構(gòu)框圖如圖1所示。在CAN控制器里只有三個寄存器可通過CIP-51中的特殊功能寄存器直接訪問,其它的寄存器只能通過CAN0ADR、CAN0DATH和CAN0DATL寄存器以地址索引的方式間接訪問。在使用CAN控制器時,重點和難點是對CAN控制器的寄存器的使用,其內(nèi)部寄存器的分類及其主要功能如下:(1)CAN控制器協(xié)議寄存器該協(xié)議寄存器是用來配置CAN控制器,處理
5、各種中斷,監(jiān)控總線狀態(tài)以及置控制器為測試模式。CAN控制器協(xié)議寄存器可使用C8051 MCU特殊功能寄存器通過索引方式間接訪問,其中有些還可以很方便的通過C8051內(nèi)部特殊功能寄存器直接尋址來訪問。這部分的寄存器有:CAN控制寄存器(CAN0CN)、CAN狀態(tài)寄存器(CAN0STA)、CAN測試寄存器(CANTST)、錯誤計數(shù)寄存器、位定時寄存器和波特率預(yù)比列因子擴展寄存器。其中,CAN0CN、CAN0STA和CANTST可通過C8051 MCU特殊功能寄存器直接訪問,其它的只能通過間接訪問。(2)報文對象接口寄存器CAN控制器中有兩組報文對象接口寄存器,它們用來配置報文RAM中32個報文對象
6、是用來向CAN總線發(fā)送數(shù)據(jù),還是從CAN總線接收數(shù)據(jù)。當其中的一組被設(shè)置為向報文RAM中寫數(shù)據(jù),另一組則從報文RAM中讀取數(shù)據(jù)。利用此接口寄存器可以避免CPU訪問報文RAM與CAN報文接收和發(fā)送緩沖轉(zhuǎn)移之間的沖突。所有的報文對象都存儲在報文RAM里面,通過報文對象寄存器對其進行訪問和配置,這些寄存器要通過C8051的CAN0ADR和CAN0DAT寄存器,使用間接索引地址方式來訪問。這部分寄存器有:IFX命令請求寄存器、IFX命令屏蔽寄存器、IFX屏蔽寄存器1、IFX屏蔽寄存器2、IFX仲裁寄存器1、IFX仲裁寄存器2、IFX報文控制寄存器、IFX數(shù)據(jù)寄存器A1、IFX數(shù)據(jù)寄存器A2、IFX數(shù)據(jù)
7、寄存器B1和IFX數(shù)據(jù)寄存器B2。(3)報文處理寄存器所有的報文處理寄存器都是只讀寄存器。通過讀取它們的值可以實時地判斷相應(yīng)報文對象的狀態(tài),從而使CAN控制器能正確運行。它們的標識位由CAN0ADR、CAN0DATH和CAN0DATL通過索引方式間接來訪問。報文處理寄存器提供中斷、錯誤、發(fā)送/接收請求和新數(shù)據(jù)信息。這部分的寄存器包括:中斷寄存器、發(fā)送請求寄存器、新數(shù)據(jù)寄存器、中斷隊列寄存器和報文有效寄存器。那么,通過CAN0ADR、CAN0DATH和CAN0DATL寄存器以索引方式間接訪問CAN控制器中寄存器的過程會怎樣呢?因為每個CAN控制器寄存器都有一個索引號,如果要訪問某一CAN控制寄存
8、器,只需將此寄存器的索引號寫入CAN0ADR寄存器,而數(shù)據(jù)讀/寫操作通過CAN0DATH和CAN0DATL來完成。例如:如果需要對位定時寄存器重新配置時,只需向CAN0ADR寄存器中寫入0X03,將新配置的數(shù)據(jù)的低字節(jié)寫入CAN0DATL中,高字節(jié)寫入CAN0DATH中。2 CAN控制器應(yīng)用時寄存器配置下面就CAN控制器在應(yīng)用時,根據(jù)所要完成功能的不同而需要做的不同配置做具體描述。這包括報文對象初始化處理、發(fā)送對象配置、接收對象配置、中斷處理配置;另外,還有發(fā)送對象的更新、位定時寄存器等配置。2.1 報文對象初始化處理報文RAM中的報文對象(除MsgVal、NewDat、IntPnd和TxRq
9、st)配置不受芯片復(fù)位的影響。所有的報文對象在使用前必須由CPU來初始化為零或者被設(shè)置為無效。報文對象的配置是通過相應(yīng)的接口寄存器來設(shè)置其屏蔽碼、仲裁場、控制場和數(shù)據(jù)場值,而這一設(shè)置過程由相應(yīng)的IFX命令請求寄存器來完成。當CAN控制寄存器中的Init位置零,CAN內(nèi)核中的CAN協(xié)議控制器狀態(tài)機制和報文處理狀態(tài)機制將控制C_CAN的內(nèi)部數(shù)據(jù)流。接收到的報文通過接收濾波后都存放在報文RAM中,而得到傳輸請求的報文都要移入CAN內(nèi)核的移位寄存器中并通過CAN總線傳出。2.2 發(fā)送對象的配置當報文對象作為發(fā)送對象時,仲裁寄存器(ID28-0和Xtd位)將被應(yīng)用,它們定義了即將發(fā)送的報文識別符和類型,
10、如果使用11位識別符(標準幀),那么使用的是ID28ID18,而ID17ID0將被忽視。如果TxIE位被置位,則IntPnd位在此報文對象被成功發(fā)送后被置位;如果RmtEn位被置位,在接收到匹配的遠程幀將引起TxRqst位被置位。若數(shù)據(jù)寄存器(DLC3-0,Data0-7)將被使用,TxRqst和RmtEn在數(shù)據(jù)有效前不會被置位。屏蔽寄存器(Msk28-0、Umask、Mxtd和MDir位)可以用來(UMask=1)允許相同識別符的數(shù)據(jù)幀組被接收。2.4 中斷處理在所有中斷中,狀態(tài)中斷具有最高優(yōu)先級,報文對象的中斷優(yōu)先級隨著報文編號的增大而減小。如果有幾個中斷產(chǎn)生,那么CAN中斷寄存器將指向優(yōu)
11、先級最高的中斷,而不是按中斷先后順序排列。狀態(tài)中斷通過讀取狀態(tài)寄存器來清除,報文中斷通過清除報文對象的IntPnd位來清除。處于中 斷寄存器中的中斷識別符Intld能表明中斷的原因,如果這個寄存器的值為0,沒有中斷產(chǎn)生;否則,有中斷發(fā)生。CPU控制著狀態(tài)寄存器的改變是否可以引起中斷(CAN控制寄存器中的EIE和SIE位);當中斷寄存器的值不為0(CAN控制寄存器中的IE位)時中斷隊列是否有效。CPU有兩種方式判斷報文中斷源,每一種是判斷中斷寄存器中的Intld位;另一種是順序掃描中斷發(fā)生寄存器。圖23 CAN控制器的應(yīng)用CAN總線一般用在工業(yè)檢測和
12、控制現(xiàn)場,它將各功能模塊連接在一起組成一個現(xiàn)場級通信網(wǎng)絡(luò)。在本應(yīng)用中,CAN總線完成下位機各部分之間的通信以及各下位機與上位機之間的通信。下位機以單片機C8051F040為核心,上位機由PC機構(gòu)成。下位機的CAN通信物理層的電路在下面將做詳細說明,為了完成上位機與下位機的通信,需要外加一塊PC-CAN通信卡。3.1 CAN控制器外圍硬件電路實現(xiàn)由于Cygnal內(nèi)部的CAN控制器只是個協(xié)議控制器,不能提供物理層驅(qū)動,所以在使用時還需外加CAN總線收發(fā)器,常用的CAN總線收發(fā)器有Philips公司的PCA82C250收發(fā)器、高速TJA1050收發(fā)器等。這里使用的是PCA82C250收發(fā)器、高速TJ
13、A1050收發(fā)器等。這里使用的是PCA82C250收發(fā)器,它可提高總線的差動發(fā)送和接收能力。它與ISO11898標準完全兼容,有三種不同的工作方式,即高速、斜率控制和待機,可根據(jù)實際情況選擇。此通信物理層電路圖如圖2所示。為了進一步提竅'' >C8051F040中CAN控制器的應(yīng)用(3) 呦低車?/p> &
14、#160; 抗干擾能力,在CAN控制器引腳CANTX、CANRX和收發(fā)器PCA82C250之間并不是直接相連,而是通過由高速光耦6N137構(gòu)成的隔離電路后再與PCA82C250相連,這樣就可以很好的實現(xiàn)總線上各節(jié)點的電氣隔離。這部分增加了節(jié)點的復(fù)雜性,但它卻提高了節(jié)點的穩(wěn)定性和安全性。在PCA80C250與CAN總線接口部分也采用了一些安全和抗干擾措施。PCA82C250的CANH和CANL引腳各自通過一個5的電阻與CAN總線相連,電阻可起到一定的限流作用,從而保護PCA82C250免受過流的沖擊。在CANH和CANL與地之間各自接
15、一個30pF的小電容,可以起到濾除總線上的高頻干擾和防電磁輻射的能力。另外,在CANH和CANL之間并聯(lián)一個15V的瞬態(tài)電壓抑制二極管(TVS),可以保護PCA80C250在瞬間高電壓情況下而不受損壞。PCA82C250的RS腳上接有一個下拉電阻,電阻的大小可根據(jù)總線速率適當?shù)恼{(diào)整,其值一般在16k140k之間,圖2中選用47k。C8051F040供電電源為2.7V3.6V,其所有I/O口允許5V(極限值為5.8V)輸入,但是I/O輸出電平為VDD。而PCA82C250為5V系統(tǒng),為了能夠驅(qū)動其工作,在CANTX引腳上拉一上拉電阻,其值為4.7k。3.2 CAN通信軟件實現(xiàn)此下位機CAN通信部
16、分主要完成的任務(wù)是:將現(xiàn)場檢測到的數(shù)據(jù)傳送給上位機或其它的下位機節(jié)點;同時,上位機可以對下位機的相關(guān)參考進行設(shè)置,即下位機還須接收一定量的數(shù)據(jù)。由上可知,此節(jié)點的CAN通信主要包括系統(tǒng)初始化程序、發(fā)送程序、接收程序等。軟件部分設(shè)計的好壞將直接決定系統(tǒng)能否正常工作,對于初次接觸CAN總線系統(tǒng)的設(shè)計人員來說是一個難點,也是一個重點。在本例中,系統(tǒng)軟件采用結(jié)構(gòu)化程序設(shè)計方案,使其具有較好的模塊性和可移植性,對于不同的系統(tǒng)功能或不同的應(yīng)用環(huán)境,可以方便地進行編程重組。32 C8051F040中CAN控制器的應(yīng)用(4) 1 系統(tǒng)初始化初始化初始化程序主要完成對所有的報文對象進行初始化(一般將所有值置零)
17、,對CAN控制寄存器(CAN0CN)、位定時寄存器(BITREG)進行設(shè)置,還要對發(fā)送報文對象和接收報文對象分別進行初始化。其中,位定時寄存器的設(shè)置較為復(fù)雜,這里我們使用外部晶振為8MHz,CAN通信速率為500k/s,得到BITREG的初始值為0x2301。主程序中規(guī)定對象初始化、發(fā)送和接收初始化,最后才啟動CAN處理機制(對BITREG和CAN0CN初始化),下面為CAN啟動程序:void start_CAN(void)SFPRAGE=CAN0_PAGE;/*指向CAN0頁面*/CAN0CN|=0x41; /*將CCE和Init置“1”開始初始化*/CAN0ADR=BITREG;/*指向位
18、定時寄存器進行配置*/CAN0DAT=0x2301; /*位率為500k/s*/CAN0CN|=0x06;/*允許全局中斷,IE和SIE置位*/CAN0CN &=0x41; /*清楚CCE和INIT位,啟動CAN狀態(tài)機制*/3.2.2 發(fā)送程序CAN報文發(fā)送是由CAN控制器自動完成的,用戶只需根據(jù)接收到的遠程幀的識別符,將對應(yīng)的數(shù)據(jù)轉(zhuǎn)移到發(fā)送緩沖寄存器,然后將此報文對象的編碼寫入命令請求寄存器啟動發(fā)送即可,而發(fā)送由硬件來完成。這里,我們使用定時更新發(fā)送報文對象中的數(shù)據(jù),數(shù)據(jù)的發(fā)送有控制器自動完成,當其收到一個遠程幀時,就將具有相同識別符的數(shù)據(jù)幀發(fā)送出去。其發(fā)送程序結(jié)構(gòu)如下:Void t
19、ransmit_message(char MsgNum)SFRPAGE=CAN0_PAGE;/*指向CAN0頁面*/CAN0ADR=IF1CMDMSK;/*向IF1命令屏蔽寄存器寫入命令*/CAN0DAT=0X0083;CAN0ADR=IF1ARB2;/*指向IF1仲裁寄存器2*/CAN0DATH|=0x80;CAN0ADR=IF1DATA1;/*指向數(shù)據(jù)場的第一個字節(jié)*/for(i=0;i<4;i+)CAN0DAT=can_tempi;/*將4字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器*/CAN0ADR=IF1CMDRQST;CAN0DATL=MsgNum;/*將報文對象編號寫入,則數(shù)據(jù)發(fā)送到對應(yīng)的報文對
20、象中*/3.2.3 接收程序CAN報文的接收與發(fā)送一樣,是由CAN控制器自動完成的,接收程序只需從接收緩存器中讀取接收的數(shù)據(jù),再進行相應(yīng)的處理即可。其基本方法與發(fā)送程序一致,只是接收程序采用中斷方式。在此應(yīng)用中,接收程序主要接收上位機對下位機的參數(shù)設(shè)置數(shù)據(jù),只有當修改時才需要接收數(shù)據(jù),所以采用中斷方式處理比較合適。接收程序結(jié)構(gòu)如下:void ( C8051F040中CAN控制器的應(yīng)用(5) receive_data(void)SFRPAGE=CAN0_PAGE;/*指向CAN0頁面*/CAN0ADR=IF1CMDMSK;/*向IF1命令屏蔽寄存器寫入命令*/CAN0DAT=0X0083;CAN
21、0ADR=IF1ARB2;/*指向IF1仲裁寄存器2*/CAN0DATH|=0x80;CAN0ADR=IF1DATA1;/*指向數(shù)據(jù)場的第一個字節(jié)*/for(i=0;i<4;i+)CAN0DAT=can_tempi;/*將4字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器*/CAN0ADR=IF1CMDRQST;CAN0DATL=MsgNum;/*將報文對象編號寫入,則數(shù)據(jù)發(fā)送到對應(yīng)的報文對象中*/3.2.3 接收程序CAN報文的接收與發(fā)送一樣,是由CAN控制器自動完成的,接收程序只需從接收緩存器中讀取接收的數(shù)據(jù),再進行相應(yīng)的處理即可。其基本方法與發(fā)送程序一致,只是接收程序采用中斷方式。在此應(yīng)用中,接收程序主要接收上位機對下位機的參數(shù)設(shè)置數(shù)據(jù),只有當修改時才需要接收數(shù)據(jù),所以采用中斷方式處理比較合適。接收程序結(jié)構(gòu)如下:Void receive_data(void)SFPRAGE=CAN0_PAGE;/*指向CAN0頁 面*/CAN0ADR=I
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房產(chǎn)證權(quán)屬糾紛調(diào)解及和解合同3篇
- 2025年度城市綜合體場經(jīng)營承包管理服務(wù)合同4篇
- 2025年度汽車租賃與車輛租賃保險合同4篇
- 2025年度數(shù)據(jù)中心臨時技術(shù)支持服務(wù)合同4篇
- 二零二五年度塔吊設(shè)備進出口承包與清關(guān)合同4篇
- 2025年度美容院品牌形象設(shè)計與推廣合同書4篇
- 2025年度智能消防監(jiān)控系統(tǒng)建設(shè)與運營管理合同4篇
- 2025年度文化創(chuàng)意產(chǎn)業(yè)園區(qū)開發(fā)合同標的物設(shè)計與施工規(guī)范4篇
- 二零二五年度大門生產(chǎn)設(shè)備租賃與維護服務(wù)合同4篇
- 2025年度碼頭裝卸作業(yè)承包合同范本4篇
- 小學(xué)數(shù)學(xué)六年級解方程練習300題及答案
- 電抗器噪聲控制與減振技術(shù)
- 中醫(yī)健康宣教手冊
- 2024年江蘇揚州市高郵市國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 消費醫(yī)療行業(yè)報告
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 運輸行業(yè)員工崗前安全培訓(xùn)
- 公路工程安全風險辨識與防控手冊
- 幼兒園教師培訓(xùn):計數(shù)(數(shù)數(shù))的核心經(jīng)驗
- 如何撰寫和發(fā)表高水平的科研論文-good ppt
評論
0/150
提交評論