999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AT90CAN128的CAN總線節(jié)點(diǎn)設(shè)計(jì)與研究

2014-06-19 18:18:27金樹軍
現(xiàn)代電子技術(shù) 2014年9期
關(guān)鍵詞:單片機(jī)

金樹軍

摘 要: CAN總線在汽車電子、樓宇控制及其他工業(yè)控制領(lǐng)域中得到了廣泛應(yīng)用,AVR型單片機(jī)在儀表、工業(yè)控制領(lǐng)域也得到了廣泛應(yīng)用。主要介紹AVR型單片機(jī)AT90CAN128在CAN總線節(jié)點(diǎn)中的實(shí)現(xiàn)方案及具體技術(shù)路線,給出增強(qiáng)型CAN總線節(jié)點(diǎn)電路原理圖、主要程序設(shè)計(jì)方案,為開發(fā)人員快速應(yīng)用提供必要的技術(shù)基礎(chǔ)。

關(guān)鍵詞: CAN總線節(jié)點(diǎn); 單片機(jī); 程序設(shè)計(jì); 工業(yè)控制

中圖分類號: TN911.7?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2014)09?0093?04

0 引 言

CAN是控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)的簡稱,是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā),并最終成為國際標(biāo)準(zhǔn)(ISO 11898),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的J1939協(xié)議。

CAN總線目前已經(jīng)在車輛、船舶等運(yùn)輸業(yè)中;嵌入式機(jī)器控制、工廠自動(dòng)化、過程自動(dòng)化和發(fā)電等制造業(yè)中;電梯控制、嵌入式門控制、供暖控制、通風(fēng)控制、空調(diào)控制等樓宇自動(dòng)化中;醫(yī)療設(shè)備、重病監(jiān)護(hù)等衛(wèi)生保健中;分揀機(jī)、輸送機(jī)、加油站、自動(dòng)取款機(jī)等行業(yè)中;舞臺控制、照明控制等娛樂行業(yè)中;煤礦安全監(jiān)控系統(tǒng)等工業(yè)通信中得到廣泛應(yīng)用。

AVR單片機(jī)做為一款單周期指令的單片機(jī),具有簡單易學(xué)、費(fèi)用低廉、功能強(qiáng)大等優(yōu)點(diǎn)。目前已用于軍事、工業(yè)、家用電器、智能玩具、便攜式智能儀表和機(jī)器人制作等領(lǐng)域。廣泛用于空調(diào)控制板、打印機(jī)控制板、智能電表、智能手電筒、LED控制屏、醫(yī)療設(shè)備、GPS等領(lǐng)域或設(shè)備。AT90CAN128作為AVR單片機(jī)系列之一,不僅擁有AVR單片機(jī)本身的功能和資源,更兼具了CAN控制器功能。設(shè)計(jì)時(shí),只在其外圍增加高速光電轉(zhuǎn)換器和CAN收發(fā)器等器件即可。下面就基于AT90CAN128的CAN總線節(jié)點(diǎn)設(shè)計(jì)進(jìn)行詳細(xì)說明。

1 硬件設(shè)計(jì)

如圖1所示,CAN總線節(jié)點(diǎn)電路主要由光電耦合器HCPL0600、CAN收發(fā)器PCA82C251組成。兩個(gè)光電耦合器引出的CANTX、CANRX引腳分別與AT90CAN128單片機(jī)的TXCAN、RXCAN引腳連接。兩個(gè)光電耦合器起到不同節(jié)點(diǎn)之間電氣隔離的作用。需要特別說明的一點(diǎn)是光電耦合器部分電路所采用的兩個(gè)電源VCC和VDD必須也是完全隔離的,否則采用光電耦合器就失去了意義。電源的完全隔離可采用小功率電源隔離模塊或帶多5 V隔離輸出的開關(guān)電源模塊實(shí)現(xiàn)。這些電路雖然增加了節(jié)點(diǎn)的復(fù)雜性,但是卻提高了節(jié)點(diǎn)的穩(wěn)定性和安全性,在CAN總線節(jié)點(diǎn)設(shè)計(jì)中是非常必要的。

PCA82C251的CANH、CANL引腳與CAN總線的接口部分也采用了一定的安全和抗干擾措施。PCA82C251的CANH和CANL引腳各自通過一個(gè)0 Ω的電阻與CAN總線相連,電阻可起到一定的緩沖作用,保護(hù)PCA82C251免受電流的沖擊。CANH和CANL與地之間分別并聯(lián)了一個(gè)30 pF的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力。CANH和CANL與地之間分別接了一個(gè)瞬態(tài)抑制二極管,當(dāng)CAN總線受瞬間的高能量沖擊時(shí),它能以極高的速度(最高達(dá)1×10-12 s)使其阻抗驟然降低,同時(shí)吸收大電流,將其兩端間的電壓箝位在一個(gè)預(yù)定的數(shù)值上,從而確保后面的電路元件免受瞬態(tài)高能量的沖擊而損壞。CANH和CANL在連入總線之前,均通過一個(gè)可恢復(fù)保險(xiǎn)絲,當(dāng)總線上有大電流時(shí),大電流產(chǎn)生的熱量使可恢復(fù)保險(xiǎn)絲內(nèi)的高分子材料迅速膨脹,切斷鏈狀導(dǎo)電通道,元件由低阻抗瞬變?yōu)楦咦杩梗钄嚯娐罚Wo(hù)負(fù)載,在故障排除后,高分子材料自動(dòng)收縮,導(dǎo)電通道重新鏈接,元件又自行恢復(fù)至原始狀態(tài),從而實(shí)現(xiàn)“重復(fù)使用,無須更換,一勞永逸”之目的。CANH,CANL之間利用放電管,實(shí)現(xiàn)有限能量雷擊的防護(hù)。PCA82C251的Rs腳上接有一個(gè)斜率電阻,大小可根據(jù)總線通信速度適當(dāng)調(diào)整,一般在16~140 kΩ之間。

為了增強(qiáng)CAN總線的驅(qū)動(dòng)能力,當(dāng)波特率一定時(shí),延長CAN總線的通信距離,筆者根據(jù)實(shí)踐經(jīng)驗(yàn),設(shè)計(jì)了如圖2所示的CAN總線信號增強(qiáng)電路,其設(shè)計(jì)核心思想是增加CANTXD的信號強(qiáng)度。實(shí)踐證明,此電路能夠延長通信距離30%以上。

圖2 CAN總線信號增強(qiáng)電路原理圖

2 軟件設(shè)計(jì)

筆者在軟件設(shè)計(jì)過程中使用了ICCV7 for AVR和AVR Studio 4.14。ICCV7 for AVR用來建立工程、編寫代碼、編譯代碼;生成可供AVR Studio 4.14調(diào)用的鏡像文件,即COF文件;生成可供AVR Studio 4.14下載的目標(biāo)文件,即HEX文件。AVR Studio 4.14集成了匯編、編譯器以及調(diào)試器功能,筆者使用深圳微雪電子有限公司的USB AVR JTAG ICE XPII仿真器,結(jié)合AVR Studio 4.14進(jìn)行軟件調(diào)試。

CAN總線節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括CAN控制器的初始化程序、數(shù)據(jù)接收程序、數(shù)據(jù)發(fā)送程序。

本軟件設(shè)計(jì)是筆者在開發(fā)煤礦安全監(jiān)控系統(tǒng)礦用本安型分站中驗(yàn)證過的,讀者可根據(jù)本軟件設(shè)計(jì)進(jìn)行配置,即可實(shí)現(xiàn)通信。

2.1 CAN控制器初始化

筆者設(shè)計(jì)CAN控制器初始化軟件時(shí),硬件資源情況如下:AT90CAN128晶振頻率為7.372 8 MHz,CAN通信波特率為5 Kb/s,禁能屏蔽寄存器。

2.1.1 復(fù)位設(shè)計(jì)

CAN控制器的初始化工作流程如圖3所示。

只有在CAN控制器處于復(fù)位狀態(tài)時(shí),才能對它進(jìn)行相關(guān)配置。因此,初始化工作的第一步就是復(fù)位CAN控制器。可通過對CAN通用控制寄存器CANGCON賦值0x01使CAN此時(shí)判斷通用狀態(tài)寄存器CANGSTA的Enable/Standby模式位是否為Standby模式,若是,則繼續(xù)執(zhí)行初始化程序的其他代碼,若不是,則重新判斷,直到是為止。此段程序代碼可參考如下:

//等待CAN控制器進(jìn)入Standby模式

while(CANGSTA & 0x04);

設(shè)計(jì)人員可在此處做定時(shí)及判斷處理,以防止程序在此處死循環(huán),不能執(zhí)行其他程序。

圖3 CAN控制器初始化程序流程圖

復(fù)位郵箱的初始化工作包括對0~14個(gè)郵箱的標(biāo)識符寄存器、標(biāo)識符屏蔽寄存器、郵箱狀態(tài)寄存器、郵箱控制和數(shù)據(jù)長度寄存器以及數(shù)據(jù)存儲寄存器進(jìn)行清零等工作。此段代碼可參考如下:

unsigned char MobChannel;

unsigned char MobData;

for (MobChannel = 0 ; MobChannel < 15 ; MobChannel++)

{

CANPAGE = (MobChannel << 4);

CANIDT4 = 0;

CANIDT3 = 0;

CANIDT2 = 0;

CANIDT1 = 0;

CANIDM4 = 0;

CANIDM3 = 0;

CANIDM2 = 0;

CANIDM1 = 0;

CANSTMOB = 0;

CANCDMOB = 0;

for(MobData = 0; MobData < 8; MobData++)

{

CANMSG = 0;

}

}

2.1.2 位定時(shí)寄存器設(shè)計(jì)

位定時(shí)寄存器的初始化工作包括對CANBT1、CANBT2、CANBT3的這三個(gè)寄存器的配置。CANBT1可配置波特率預(yù)分頻器,CANBT2可配置同步跳轉(zhuǎn)寬度和傳輸時(shí)間段,CANBT3可配置相位段1、相位段2和采樣點(diǎn)。應(yīng)用中實(shí)際配置如下:

//波特率為5K

CANBT1 = 0x7e;

//同步跳轉(zhuǎn)寬度為32 μs

//傳輸時(shí)間段為64 μs

CANBT2 = 0x6e;

//相位段1為16 μs

//相位段2為64 μs

//采樣點(diǎn)為3,即總線采樣3次

CANBT3 = 0x7b;

此時(shí),可通過CAN定時(shí)器控制寄存器關(guān)閉CAN定時(shí)器,使其處于空閑狀態(tài)。

2.1.3 郵箱寄存器設(shè)計(jì)

郵箱寄存器設(shè)計(jì)包括接收數(shù)據(jù)郵箱寄存器設(shè)計(jì)和發(fā)送郵箱寄存器設(shè)計(jì)。接收數(shù)據(jù)郵箱寄存器的初始化工作包括郵箱地址寄存器配置、郵箱狀態(tài)寄存器配置、郵箱消息和DLC寄存器配置、標(biāo)識符寄存器配置以及標(biāo)識符屏蔽寄存器配置。

筆者在應(yīng)用中實(shí)際配置如下:

CANPAGE=0x00;

郵箱地址寄存器配置為0x00,即選擇郵箱地址為0,采用自動(dòng)增加索引指針方式,索引指針默認(rèn)為0。

選擇好郵箱地址后才能對郵箱的其他寄存器進(jìn)行配置。

CANSTMOB=0x00;

郵箱狀態(tài)寄存器配置為0x00。使郵箱數(shù)據(jù)長度在設(shè)定的DLC范圍內(nèi),處于未發(fā)送和未接收狀態(tài),位值監(jiān)測標(biāo)識、位填充標(biāo)識、CRC校驗(yàn)標(biāo)識、幀格式標(biāo)識以及應(yīng)答狀態(tài)均處于正常狀態(tài)。

CANCDMOB = 0x18;

郵箱消息和DLC寄存器配置為0x18。選擇CAN2.0B工作模式,數(shù)據(jù)長度為8,當(dāng)數(shù)據(jù)超過8時(shí),只有8個(gè)數(shù)據(jù)有效。

//CAN標(biāo)識符寄存器

CANIDT4 = 0x00;

CANIDT3 = 0x00;

CANIDT2 = 0x00;

CANIDT1 = 0x00;

//CAN標(biāo)識符屏蔽寄存器

CANIDM4 = 0x00;

CANIDM3 = 0x00;

CANIDM2 = 0x00;

CANIDM1 = 0x00;

如上,配置標(biāo)識符寄存器、標(biāo)識符屏蔽寄存器均為0x00,不對數(shù)據(jù)進(jìn)行濾波處理,接收數(shù)據(jù)后根據(jù)實(shí)際情況處理。設(shè)計(jì)人員可根據(jù)自身項(xiàng)目實(shí)際需要進(jìn)行濾波設(shè)計(jì)。

發(fā)送數(shù)據(jù)郵箱寄存器的初始化工作包括郵箱地址寄存器配置、郵箱狀態(tài)寄存器配置以及郵箱消息和DLC寄存器配置。

CANPAGE=(1<< 4);

郵箱地址寄存器配置為0x10,即選擇郵箱地址為1,采用自動(dòng)增加索引指針方式,索引指針默認(rèn)為0。

CANSTMOB = 0x40;

郵箱狀態(tài)寄存器配置為0x40。提前置位TXOK位,使郵箱處于數(shù)據(jù)發(fā)送完成狀態(tài)。

CANCDMOB = 0x18;

郵箱消息和DLC寄存器配置為0x18。選擇CAN2.0B工作模式,數(shù)據(jù)長度為8,當(dāng)數(shù)據(jù)超過8時(shí),只有8個(gè)數(shù)據(jù)有效。這樣配置使得CAN總線節(jié)點(diǎn)接收和發(fā)送的數(shù)據(jù)類型保持一致。

2.1.4 中斷寄存器設(shè)計(jì)

中斷寄存器的初始化工作包括中斷使用寄存器配置和郵箱使能寄存器配置。

筆者在應(yīng)用中實(shí)際配置如下:

CANGIE=0xef;

中斷使用寄存器配置為0xef。使能全局中斷、接收中斷、總線關(guān)閉中斷、郵箱錯(cuò)誤中斷、幀緩沖區(qū)中斷、通用錯(cuò)誤中斷、CAN定時(shí)器溢出中斷,禁能發(fā)送中斷。

CANIE1=0x00;

CANIE2=0x01;

使能地址為0的郵箱中斷,禁能地址為1~14的郵箱中斷。

2.1.5 結(jié)束設(shè)計(jì)

在這個(gè)設(shè)計(jì)里主要包括郵箱優(yōu)先級配置、郵箱接收使能配置、CAN控制啟動(dòng)配置。

CANHPMOB = 0x00;

CANPAGE = 0x00;

CANCDMOB |= 0x80;

如上配置,使地址為0的郵箱優(yōu)先級最高,同時(shí),使能地址為0的郵箱的接收功能。

CANGCON |=0x02;

通過配置CAN通用控制寄存器的Enable / Standby為1,并等待CANGSTA的ENFG狀態(tài)為1時(shí),使CAN控制器進(jìn)入正常工作模式。至此,CAN控制器初始化工作完成。

2.2 數(shù)據(jù)接收程序設(shè)計(jì)

數(shù)據(jù)接收程序負(fù)責(zé)每個(gè)CAN節(jié)點(diǎn)數(shù)據(jù)的接收以及簡單的數(shù)據(jù)處理。AT90CAN128的CAN控制器主要有兩種數(shù)據(jù)接收方式:中斷接收方式和查詢接收方式。筆者在應(yīng)用中使用的是中斷方式。

AT90CAN128的CANIT中斷段號是19,在定義函數(shù)時(shí),可采用如下方式:

#pragma interrupt_handler CanIsr:19

void CanIsr(void)

{

(此處略去接收數(shù)據(jù)程序代碼)

}

當(dāng)有總線上有數(shù)據(jù)發(fā)送,即可進(jìn)入這個(gè)中斷函數(shù)。

2.3 數(shù)據(jù)發(fā)送程序設(shè)計(jì)

數(shù)據(jù)發(fā)送程序負(fù)責(zé)CAN節(jié)點(diǎn)數(shù)據(jù)的發(fā)送。 首先將待發(fā)送的數(shù)據(jù)按特定格式送入發(fā)送緩存區(qū)中,然后啟動(dòng)發(fā)送,等待發(fā)送成功,清除發(fā)送完成標(biāo)志位即可。因該功能設(shè)計(jì)簡單,這里不做贅述。

3 結(jié) 語

本文通過CAN總線節(jié)點(diǎn)硬件電路設(shè)計(jì)及分析,為設(shè)計(jì)人員提供了實(shí)際可行的CAN總線電路原理,并通過各種保護(hù)電路的設(shè)計(jì),增強(qiáng)了CAN總線節(jié)點(diǎn)的抗干擾能力、抗高電壓能力、抗大電流能力,提高了CAN總線節(jié)點(diǎn)的整體性能。尤其是通過信號增強(qiáng)電路,提高了CAN總線節(jié)點(diǎn)的信號穩(wěn)定性、可靠性,大大延長了CAN總線節(jié)點(diǎn)的通信距離,使CAN總線節(jié)點(diǎn)因保護(hù)電路受到的損失得到彌補(bǔ)和提高。筆者應(yīng)用本電路原理在煤礦、金屬礦山監(jiān)控分站中已經(jīng)得到成功應(yīng)用。實(shí)踐證明,該電路性能穩(wěn)定、可靠,技術(shù)指標(biāo)完全滿足工業(yè)控制、通信領(lǐng)域要求。

本文通過AT90CAN128單片機(jī)CAN控制器驅(qū)動(dòng)程序設(shè)計(jì)、發(fā)送程序設(shè)計(jì)、郵箱清理程序設(shè)計(jì)、中斷接收程序設(shè)計(jì),為設(shè)計(jì)人員提供了實(shí)際可行的程序設(shè)計(jì)方案。設(shè)計(jì)人員可按照文中給出的晶振、波特率等參數(shù)進(jìn)行設(shè)計(jì),即可實(shí)現(xiàn)CAN總線節(jié)點(diǎn)之間的通信,大大節(jié)省了設(shè)計(jì)人員的開發(fā)時(shí)間。

本文設(shè)計(jì)和研究的CAN總線節(jié)點(diǎn)技術(shù)和AT90CAN128單片機(jī)的CAN控制器程序設(shè)計(jì)技術(shù)都是目前各領(lǐng)域常用的基本技術(shù),CAN總線的核心技術(shù),即多主通信技術(shù),是工業(yè)控制和通信領(lǐng)域解決關(guān)鍵問題的重點(diǎn)和難點(diǎn),限于篇幅,這里不作贅述。本文所作論述,難免存在疏漏和不足,有待以后的進(jìn)一步實(shí)踐和研究。

參考文獻(xiàn)

[1] 李真花,崔健.CAN總線輕松入門與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2010.

[2] 張培仁.CAN總線設(shè)計(jì)及分布式控制[M].北京:清華大學(xué)出版社,2012.

[3] 馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐[M].2版.北京:北京航空航天大學(xué)出版社,2012.

[4] 王衛(wèi)東.模擬電子技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2010.

[5] 許莉婭,段帥君,李傳南.基于Verilog HDL語言的CAN總線控制器設(shè)計(jì)及驗(yàn)證[J].現(xiàn)代電子技術(shù),2012,35(10):43?46.

[6] 張輝.基于C8051F040單片機(jī)的CAN總線測試模式研究[J].現(xiàn)代電子技術(shù),2012,35(6):43?44.

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計(jì)
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個(gè)全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計(jì)
主站蜘蛛池模板: 国产精女同一区二区三区久| 国产成人无码AV在线播放动漫 | 亚洲高清中文字幕| 免费无码网站| 久久久黄色片| 67194在线午夜亚洲| 成人在线视频一区| 国产精品中文免费福利| 亚洲自偷自拍另类小说| 91精品国产自产在线观看| www中文字幕在线观看| 国产黄网站在线观看| 精品国产女同疯狂摩擦2| 国产一在线| 手机精品福利在线观看| 1024国产在线| 亚洲成人动漫在线| 亚洲a级在线观看| 在线看AV天堂| 国产小视频a在线观看| 免费jizz在线播放| 国产欧美精品一区二区| 亚洲有无码中文网| 欧美成人第一页| 国产va在线| 久久精品人人做人人| 无码国产偷倩在线播放老年人| 狠狠色婷婷丁香综合久久韩国 | 欧美α片免费观看| 亚洲愉拍一区二区精品| 国产成人禁片在线观看| 国产福利小视频在线播放观看| 欧美另类第一页| 国产精品美女自慰喷水| 国产v精品成人免费视频71pao| 97成人在线视频| 国产白浆视频| 久草国产在线观看| 国产无码在线调教| 欧美成人看片一区二区三区| 国产成本人片免费a∨短片| 波多野结衣二区| 在线99视频| 成人午夜网址| 成人精品免费视频| 亚洲无码高清一区二区| 成人午夜精品一级毛片| 国产精品yjizz视频网一二区| 国产精品久久久久久搜索| 精品国产毛片| 日韩一级毛一欧美一国产| 91网在线| 黄色网站在线观看无码| 国产亚洲欧美日韩在线观看一区二区| 成人福利在线视频| 不卡色老大久久综合网| 91国内在线视频| 最新无码专区超级碰碰碰| 久久久噜噜噜| 亚洲日韩在线满18点击进入| 网友自拍视频精品区| 国产精品白浆在线播放| 中文字幕永久在线看| 亚洲成在线观看| YW尤物AV无码国产在线观看| 四虎综合网| 久久永久免费人妻精品| 亚洲中文字幕av无码区| 免费国产好深啊好涨好硬视频| 免费在线色| 亚洲免费毛片| 找国产毛片看| 国产精品成人一区二区不卡| 91av国产在线| 草逼视频国产| 国产九九精品视频| 中文字幕第1页在线播| 精品一区二区三区无码视频无码| 91久久天天躁狠狠躁夜夜| 亚洲中文字幕日产无码2021| 久久久久免费精品国产| 久久精品国产电影|