《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > STC15F2K60S2單片機(jī)與CAN總線接口的實(shí)現(xiàn)
STC15F2K60S2單片機(jī)與CAN總線接口的實(shí)現(xiàn)
2014年微型機(jī)與應(yīng)用第17期
胡家華1,付文廣1,郜事成1,李文靜1,曹永根1,周前1,朱清發(fā)2 呂永春2
1.哈爾濱理工大,黑龍江 哈爾濱 150080 2.黑龍江電器集團(tuán)有限公司,黑龍江 哈爾濱 150080
摘要: 分析了CAN總線通信的性能和技術(shù)特點(diǎn),介紹了CAN總線結(jié)構(gòu)的模式及應(yīng)用趨勢(shì)。針對(duì)采用單片機(jī)實(shí)現(xiàn)與CAN總線接口的問(wèn)題,詳細(xì)探討了用STC15F2K60S2單片機(jī)結(jié)合總線控制器SIA1000和總線收發(fā)器PCA82C250芯片構(gòu)成CAN總線接口電路的實(shí)現(xiàn),并介紹了接口驅(qū)動(dòng)軟件的編制流程。
Abstract:
Key words :

  摘 要: 分析了CAN總線通信的性能和技術(shù)特點(diǎn),介紹了CAN總線結(jié)構(gòu)的模式及應(yīng)用趨勢(shì)。針對(duì)采用單片機(jī)實(shí)現(xiàn)與CAN總線接口的問(wèn)題,詳細(xì)探討了用STC15F2K60S2單片機(jī)結(jié)合總線控制器SIA1000和總線收發(fā)器PCA82C250芯片構(gòu)成CAN總線接口電路的實(shí)現(xiàn),并介紹了接口驅(qū)動(dòng)軟件的編制流程。

  關(guān)鍵詞: CAN總線; 控制器;收發(fā)器;單片機(jī); 通信; 接口;

  控制器局域網(wǎng)絡(luò)CAN(Controller Area Network)是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國(guó)BOSCH公司開(kāi)發(fā)的,并最終成為國(guó)際標(biāo)準(zhǔn)(ISO11898),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的J1939協(xié)議。近年來(lái),由于該總線所具有的高可靠性和良好的錯(cuò)誤檢測(cè)能力受到重視,被廣泛應(yīng)用于汽車計(jì)算機(jī)控制系統(tǒng)和環(huán)境溫度惡劣、電磁輻射強(qiáng)和振動(dòng)大的工業(yè)環(huán)境。

1 CAN總線通訊原理

  CAN總線目前采用2.0規(guī)范。CAN 2.0規(guī)范分為CAN 2.0A與CAN 2.0B。CAN 2.0A 支持標(biāo)準(zhǔn)的11 位標(biāo)識(shí)符,CAN 2.0B同時(shí)支持標(biāo)準(zhǔn)的11位標(biāo)識(shí)符和擴(kuò)展的29位標(biāo)識(shí)符。

  CAN總線的物理層包括物理層信號(hào)(PLS)、媒體訪問(wèn)單元(PMA)和介質(zhì)相關(guān)接口(MDI)3部分,主要完成電氣連接、驅(qū)動(dòng)器/接收節(jié)點(diǎn)特性、位定時(shí)、同步、位編碼/解碼的描述。

  在國(guó)際標(biāo)準(zhǔn)ISO11898中,對(duì)基于雙絞線的CAN系統(tǒng)建議了電氣連接。為了抑制信號(hào)在端點(diǎn)的反射,CAN總線要求在兩個(gè)端點(diǎn)上安裝兩個(gè)120 Ω的終端電阻。CAN總線的驅(qū)動(dòng)可采用單線上拉、單線下拉和雙線驅(qū)動(dòng),如果所有節(jié)點(diǎn)的晶體管均處于關(guān)斷狀態(tài),則CAN總線上呈現(xiàn)隱性狀態(tài),如果CAN總線上至少有一個(gè)節(jié)點(diǎn)發(fā)送端的那對(duì)晶體管導(dǎo)通,產(chǎn)生的電流流過(guò)終端電阻,在CAN_H和CAN_L兩條線之間產(chǎn)生差分電壓,總線上就呈現(xiàn)出顯性狀態(tài)。CAN總線上的信號(hào)接收采用差分比較器,讀取差分電壓值。

  理想發(fā)送節(jié)點(diǎn)在沒(méi)有重同步的情況下每秒發(fā)送的位數(shù)量定義為標(biāo)稱位速率(Nominal Bit Rate)。標(biāo)稱位時(shí)間(Nominal Bit Time)定義為標(biāo)稱位速率的倒數(shù),即標(biāo)稱位時(shí)間 = 1/標(biāo)稱位速率。位時(shí)間指的是CAN總線通信時(shí)1 bit數(shù)據(jù)持續(xù)的時(shí)間,CAN總線工作時(shí)標(biāo)稱位速率是不變的,那么標(biāo)稱位時(shí)間也保持不變,即要求每個(gè)位在總線上的時(shí)間要保持一致。CAN總線的標(biāo)稱位時(shí)間可劃分為4個(gè)同步段(SYNC_SEG)、傳播段(PROP_SEG)、相位緩沖段1(PSEG1)和相位緩沖段2 (PSEG2)不重疊的時(shí)間段。

  CAN總線標(biāo)稱位時(shí)間中各個(gè)時(shí)間段都可以根據(jù)具體網(wǎng)絡(luò)情況而重新設(shè)置,均由CAN控制器的可編程位定時(shí)參數(shù)來(lái)實(shí)現(xiàn)。位時(shí)間內(nèi)時(shí)間段的設(shè)定能實(shí)現(xiàn)CAN總線節(jié)點(diǎn)同步、網(wǎng)絡(luò)發(fā)送延遲補(bǔ)償和采樣點(diǎn)定位等功能。

  CAN總線的同步使CAN總線系統(tǒng)的收發(fā)兩端在時(shí)間上保持步調(diào)一致。從位定時(shí)的同步方式考慮,CAN總線實(shí)質(zhì)上屬于異步通信協(xié)議,每傳輸一幀,以幀起始位開(kāi)始,而以幀結(jié)束及隨后的間歇場(chǎng)結(jié)束。這就要求收/發(fā)雙方從幀起始位開(kāi)始必須保持幀內(nèi)報(bào)文代碼中的每一位嚴(yán)格的同步。CAN 總線的位同步只有在節(jié)點(diǎn)檢測(cè)到“隱性位”到“顯性位”的跳變時(shí)才會(huì)產(chǎn)生,當(dāng)跳變沿不位于位周期的同步段之內(nèi)時(shí)將會(huì)產(chǎn)生相位誤差。該相位誤差就是跳變沿與同步段結(jié)束位置之間的距離。相位誤差源于節(jié)點(diǎn)的振蕩器漂移、網(wǎng)絡(luò)節(jié)點(diǎn)之間的傳播延遲以及噪聲干擾等。CAN 協(xié)議規(guī)定了硬同步和重同步兩種類型的同步。

  硬同步只在總線空閑時(shí)通過(guò)一個(gè)從“隱性位”到“顯性位”的跳變(幀起始)來(lái)完成,此時(shí)不管有沒(méi)有相位誤差,所有節(jié)點(diǎn)的位時(shí)間重新開(kāi)始。強(qiáng)迫引起硬同步的跳變沿位于重新開(kāi)始的位時(shí)間的同步段(SYNC_SEG)之內(nèi)。

  重同步在報(bào)文的隨后位中,每當(dāng)有從“隱性位”到“顯性位”的跳變,并且該跳變落在了同步段之外,就會(huì)引起一次重同步。重同步機(jī)制可以根據(jù)跳變沿加長(zhǎng)或者縮短位時(shí)間以調(diào)整采樣點(diǎn)的位置,保證正確采樣。

2 CAN總線的接口

  CAN總線的接口主要包括電源電路、復(fù)位電路、時(shí)鐘電路和STC15F2K60S2單片機(jī)與SJA1000接口電路、CAN總線收發(fā)器電路幾部分。

  2.1 CAN總線控制器SJA1000

  SJA1000是NXP公司研制的一款獨(dú)立CAN控制器,可以完成CAN總線標(biāo)準(zhǔn)中物理層和數(shù)據(jù)鏈路層的所有功能,在汽車制造和其他的工業(yè)領(lǐng)域得到了十分廣泛的應(yīng)用。SJA1000有BasicCAN 模式和PeliCAN模式兩種不同的協(xié)議模式。BasicCAN模式是復(fù)位時(shí)默認(rèn)模式,這種模式與早期產(chǎn)品PCA82C200兼容,只支持CAN 2.0A協(xié)議;PeliCAN模式是新增加的工作模式,支持CAN 2.0B協(xié)議的一些新特性。

001.jpg

  SJA1000的內(nèi)部功能結(jié)構(gòu)如圖1所示,主要包括接口管理邏輯、發(fā)送緩沖器、接收緩沖器、驗(yàn)收過(guò)濾器、位流處理器、位定時(shí)邏輯和錯(cuò)誤管理邏輯等功能單元。

  2.2 CAN總線收發(fā)器PCA82C250

  PCA82C250是NXP公司針對(duì)汽車中的高速應(yīng)用而生產(chǎn)的CAN總線收發(fā)器。CAN總線收發(fā)器是CAN控制器和物理總線的接口,用于對(duì)總線提供差動(dòng)發(fā)送能力和對(duì)CAN控制器提供差動(dòng)接收能力。PCA82C250是目前應(yīng)用最廣泛的CAN總線收發(fā)器。設(shè)計(jì)CAN總線接口時(shí),PCA82C250一般與CAN控制器(例如SJA1000)配合工作。

002.jpg

  PCA82C250的內(nèi)部功能結(jié)構(gòu)如圖2所示,主要包括基準(zhǔn)電壓、發(fā)送器、接收器、保護(hù)電路和工作模式控制電路等。

  PCA82C250的工作模式:通過(guò)斜率電阻輸入引腳(RS)的3種不同接法,可以設(shè)置PCA82C250的工作模式,如表1所示。

005.jpg

  ⑴高速模式。在高速工作模式下,發(fā)送器輸出級(jí)晶體管將以盡可能快的速度打開(kāi)和關(guān)閉,且不采用任何措施用于限制上升和下降的斜率。采用高速模式時(shí),最好使用屏蔽電纜以避免射頻干擾問(wèn)題。通過(guò)把斜率電阻輸入引腳(RS)接地選擇高速模式。

  ⑵斜率控制模式。對(duì)于較低速度或較短總線長(zhǎng)度的應(yīng)用場(chǎng)合,可使用非屏蔽雙絞線或平行線作為總線。此時(shí),為降低射頻干擾,應(yīng)對(duì)上升斜率和下降斜率進(jìn)行控制。上升斜率和下降斜率可通過(guò)由斜率電阻輸入引腳(RS)接至地的連接電阻進(jìn)行控制,斜率正比于斜率電阻輸入引腳(RS)的電流輸出。

  ⑶待機(jī)模式。通過(guò)斜率電阻輸入引腳(RS)接至高電平選擇低電流待機(jī)模式。在此模式下,發(fā)送器被關(guān)閉,而接收器轉(zhuǎn)至低電流。若在總線上檢測(cè)到顯性位,RXD將變?yōu)榈碗娖健N⒖刂破鲬?yīng)將PCA82C250轉(zhuǎn)回至正常工作狀態(tài),以對(duì)此信號(hào)作出響應(yīng)。注意:由于處在待機(jī)模式下,接收器是慢速的,因此,第一個(gè)報(bào)文將被丟失。

  2.3 STC15F2K60S2單片機(jī)

  STC15F2K60S2單片機(jī)是STC公司生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8~12倍。內(nèi)部集成高精度R/C時(shí)鐘,5 MHz~ 35 MHz范圍內(nèi)可設(shè)置,可省掉外部電路的晶振和外部的復(fù)位電路,芯片內(nèi)置2 KB容量的SRAM和60KB容量程序存儲(chǔ)器。工作電壓范圍為3.8 V~5.5 V,是寬電壓范圍。

  2.4 STC15F2K60S2單片機(jī)與SJA1000接口電路

  stc15f2k60s2單片機(jī)與SJA1000接口電路主要包括數(shù)據(jù)線、地址線和控制線的接線設(shè)計(jì),如圖2-3所示。SJA1000的MODE接高電平選擇Intel接口模式。STC15F2K60S2單片機(jī)的P0口接SJA1000的數(shù)據(jù)/地址總線,8位數(shù)據(jù)線用于單片機(jī)與SJA1000之間的數(shù)據(jù)傳遞,低8位地址線用于SJA1000內(nèi)部的CAN地址尋址。STC15F2K60S2單片機(jī)可采用線選法提供片選信號(hào),即SJA1000的片選線接P2口任意一個(gè)口線(高8位地址線)。圖3中P2.7作為SJA1000的片選線,則片選地址為7F00H,片選地址和CAN地址相加得到SJA1000內(nèi)部寄存器的地址。單片機(jī)和SJA1000的讀寫允許信號(hào)、地址鎖存信號(hào)控制線對(duì)應(yīng)連接即可。

003.jpg

  2.5 CAN總線收發(fā)器電路

  CAN總線收發(fā)器電路是指SJA1000與PCA82C250之間的電路,主要包括串行通信線和模式選擇兩部分。串行通信線包括串行數(shù)據(jù)發(fā)送線和串行數(shù)據(jù)接收線,如不采用光電隔離則SJA1000與PCA82C250對(duì)應(yīng)連接即可,如圖4所示。PCA82C250若需要使用待機(jī)模式時(shí),RS引腳可以連接微控制器的I/O線P2.0;若不使用待機(jī)模式時(shí),RS引腳可以經(jīng)電阻接地(斜率控制模式)。

004.jpg

3 CAN總線接口軟件設(shè)計(jì)

  CAN總線接口軟件設(shè)計(jì)主要分為初始化程序、發(fā)送子程序和接收子程序3部分。

  3.1 SJA1000初始化程序

  SJA1000要完成正常的CAN通信,需要進(jìn)行必要的初始化參數(shù)設(shè)置。這些初始化參數(shù)包括驗(yàn)收過(guò)濾器、總線定時(shí)寄存器、輸出驅(qū)動(dòng)方式和中斷系統(tǒng)等。這些設(shè)置實(shí)際上是對(duì)SJA1000內(nèi)部相關(guān)寄存器的寫操作。SJA1000初始化的程序流程如圖5所示。

006.jpg

  3.2 發(fā)送子程序

  發(fā)送子程序主要分為3個(gè)流程:⑴判斷SJA1000當(dāng)前的狀態(tài)是否允許報(bào)文發(fā)送;⑵將要發(fā)送的數(shù)據(jù)按照CAN協(xié)議規(guī)定的幀格式組成數(shù)據(jù)幀,存入SJA1000的發(fā)送緩沖器;⑶寫發(fā)送命令。發(fā)送子程序流程如圖6所示。發(fā)送前,一般檢查3個(gè)狀態(tài)位:一是接收狀態(tài),如果目前SJA1000正在接收?qǐng)?bào)文,則不能發(fā)送,至少等本次接收完成后才能申請(qǐng)發(fā)送;二是檢查發(fā)送完成狀態(tài),也即檢查 SJA1000是否正在發(fā)送報(bào)文。如果正在發(fā)送,要等本次發(fā)送完成,才能啟動(dòng)新的發(fā)送任務(wù);三是檢查發(fā)送緩沖器是否被鎖定,發(fā)送緩沖器處于不鎖定狀態(tài),才能發(fā)送報(bào)文。

007.jpg

  3.3 接收子程序

  接收子程序的處理比發(fā)送子程序要復(fù)雜些。在接收子程序中,不僅要對(duì)接收數(shù)據(jù)作出處理,還要對(duì)各種錯(cuò)誤、數(shù)據(jù)溢出等進(jìn)行判斷和處理,由于篇幅限制,本文只討論對(duì)接收數(shù)據(jù)作出處理。接收子程序主要分為3個(gè)流程:⑴判斷SJA1000是否有報(bào)文可以接收;⑵讀取SJA1000的接收緩沖器中的報(bào)文;⑶寫釋放接收緩沖器命令。接收數(shù)據(jù)處理有:查詢接收方式和中斷接收方式兩種。圖7為查詢方式接收子程序流程圖。

008.jpg

  本文介紹的采用STC15F2K60S2單片機(jī)結(jié)合SJA1000和PCA82C250芯片實(shí)現(xiàn)CAN總線的接口已經(jīng)在某鋼管廠無(wú)損探傷設(shè)備上得到了實(shí)際應(yīng)用,原系統(tǒng)采用的是RS-232串行總線的形式,不僅工程安裝復(fù)雜,成本高,而且數(shù)據(jù)傳輸速率低,實(shí)時(shí)更新慢,經(jīng)常出現(xiàn)檢查跟蹤滯后的情況。采用CAN總線后,系統(tǒng)的抗干擾能力明顯提高,特別是對(duì)微弱信號(hào)的分辨,較以前的系統(tǒng)有很大的改善,漏檢率明顯下降,保證了產(chǎn)品的合格率。

參考文獻(xiàn)

  [1] 曹小華,趙成. 基于現(xiàn)場(chǎng)總線CAN的實(shí)時(shí)監(jiān)控系統(tǒng)研究與設(shè)計(jì)[J]. 武漢理工大學(xué)學(xué)報(bào)(交通與工程版),2005(6): 910-912.

  [2] 李愛(ài)軍. 四種現(xiàn)場(chǎng)總線的技術(shù)特點(diǎn)比較[J]. 城市軌道交通研究,2009(4):67-70.

  [3] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,1996.

  [4] 孫兵,何瑾,陳廣廈.基于DSP的CAN總線與以太網(wǎng)互聯(lián)系統(tǒng)研制[J].儀器儀表學(xué)報(bào),2008,29(2):377—380.

  [5] 朱齊丹,汪瞳.CAN通信物理層建模與仿真口[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(36):11—15.

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


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 最好2018中文免费视频| 玩物无删减版180分钟| 国产无遮挡又黄又爽在线观看| a级毛片高清免费视频在线播放| 色欲国产麻豆一精品一AV一免费| 国产精品99无码一区二区| 中国美女一级毛片| 日本最大色倩网站www| 亚洲自偷精品视频自拍| 精品国产麻豆免费人成网站| 国产亚洲一区二区三区在线| 99久久国产综合精品五月天| 国产精品久久久久久亚洲小说| 97国产在线播放| 天天澡天天碰天天狠伊人五月| 一级一级人与动毛片| 成人欧美一区二区三区视频 | 亚洲色婷婷六月亚洲婷婷6月 | 五月天综合婷婷| 欧美乱妇狂野欧美在线视频| 免费精品久久久久久中文字幕| 麻豆久久婷婷综合五月国产| 国产精品对白刺激久久久| 一区二区日韩欧美| 成人精品一区久久久久 | 国产xxxx做受视频| 西西4444www大胆无码| 国产小视频网站| 国产4tube在线播放| 国产欧美精品一区二区三区四区 | 黄色网站在线免费观看| 天天摸日日摸人人看| 一区视频在线播放| 性欧美18~19sex高清播放| 中文国产日韩欧美视频| 无套进入30p| 亚欧在线精品免费观看一区| 欧美丰满大乳大屁股流白浆| 亚洲国产成人片在线观看| 欧美性色欧美a在线播放| 亚洲日本乱码一区二区在线二产线|