《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于RealView MDK的CAN總線仿真研究
基于RealView MDK的CAN總線仿真研究
曲阜師范大學(xué) 邵長彬 李洪亮
摘要: RealView MDK是ARM公司的產(chǎn)品,被全球超過10萬的嵌入式開發(fā)工程師驗(yàn)證和使用,,是ARM公司目前最新推出的針對(duì)各種嵌入式處理器的軟件開發(fā)工具,。 RealView MDK集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),包括μVision3集成開發(fā)環(huán)境與RealView編譯器,。支持ARM7,、ARM9和最新的Cortex-M3核處理器,自動(dòng)配置啟動(dòng)代碼,,集成FLASH燒寫模塊,,強(qiáng)大的SimulaTIon設(shè)備模擬、性能分析等功能,。
Abstract:
Key words :

     RealView MDK具有強(qiáng)大的仿真功能,,能仿真很多ARM芯片內(nèi)部外設(shè)。文章以RealView MDK為開發(fā)環(huán)境,,敘述了CAN總線的軟件開發(fā)過程,,并給出了仿真結(jié)果。

  RealView MDK是ARM公司的產(chǎn)品,,被全球超過10萬的嵌入式開發(fā)工程師驗(yàn)證和使用,,是ARM公司目前最新推出的針對(duì)各種嵌入式處理器的軟件開發(fā)工具RealView MDK集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),,包括μVision3集成開發(fā)環(huán)境與RealView編譯器,。支持ARM7、ARM9和最新的Cortex-M3核處理器,,自動(dòng)配置啟動(dòng)代碼,,集成FLASH燒寫模塊,強(qiáng)大的SimulaTIon設(shè)備模擬,、性能分析等功能,。
  當(dāng)前多數(shù)基于ARM的開發(fā)工具都有仿真功能,但是僅僅局限于對(duì)內(nèi)核指令集的仿真,。而RealView MDK的設(shè)備模擬器可以仿真整個(gè)目標(biāo)硬件,,包括快速指令集仿真、外部信號(hào)和I/O仿真,、中斷過程仿真,、片內(nèi)外圍設(shè)備仿真等,。開發(fā)工程師在無硬件的情況下即可開始軟件開發(fā)和調(diào)試,使軟硬件開發(fā)同步進(jìn)行,,大大縮短開發(fā)周期,。而一般的ARM開發(fā)工具僅提供指令集模擬器,只能支持ARM內(nèi)核模擬調(diào)試,。
 
  CAN總線即控制器局域網(wǎng)(Controller Area Net)是一種現(xiàn)場總線,,主要用于各種過程檢測及控制。CAN最初是由德國BOSCH公司為汽車監(jiān)測和控制而設(shè)計(jì)的,,目前CAN已逐步應(yīng)用到其它工業(yè)控制中,,現(xiàn)已成為ISO-11898國際標(biāo)準(zhǔn)。

  1 LPC2378的CAN總線控制器說明
  LPC2378NXP公司推出的ARM7微控制器,,它包含有2路獨(dú)立的CAN模塊,,其CAN控制器的特點(diǎn)是:兼容CAN規(guī)范2.0B,多主機(jī)結(jié)構(gòu),,帶有無破壞性的位仲裁,,由報(bào)文標(biāo)識(shí)符(1l位或29位)確定總線訪問優(yōu)先級(jí),可編程的傳輸速率(高達(dá)1Mb/s),,多播和廣播報(bào)文功能,,數(shù)據(jù)長度從0到8字節(jié),強(qiáng)大的錯(cuò)誤處理能力,,非歸零(NRZ)編碼/譯碼,,帶有位填充。
 
  每個(gè)CAN總線控制器包括:APB總線接口,、驗(yàn)收濾波器接口,、向量中斷控制器接口、通用狀態(tài)寄存器接口,,這些接口連接芯片內(nèi)部,;還包括接口管理單元,、3個(gè)發(fā)送緩沖區(qū),、2個(gè)接收緩沖器、錯(cuò)誤管理邏輯單元,、位時(shí)序邏輯,、位流處理。芯片外部外接CAN總線收發(fā)器,。CAN總線控制器控制著數(shù)據(jù)的發(fā)送和接收,。
 
  CAN總線發(fā)送數(shù)據(jù)的過程為:CPU通過內(nèi)部總線向CAN控制器的發(fā)送寄存器里填寫需要發(fā)的數(shù)據(jù),然后啟動(dòng)CAN控制器的發(fā)送使能,,發(fā)送的數(shù)據(jù)分別經(jīng)過位流管理器(變成在總線上發(fā)送的二進(jìn)制碼),、錯(cuò)誤管理邏輯(負(fù)責(zé)檢測總線狀態(tài)及發(fā)送是否出現(xiàn)錯(cuò)誤)及位時(shí)序邏輯(管理數(shù)據(jù)在總線上的發(fā)送時(shí)序),、 CAN收發(fā)器(負(fù)責(zé)把位流數(shù)據(jù)轉(zhuǎn)換成CAN總線夠傳輸?shù)牟罘蛛娖?,這樣就完成了一幀CAN數(shù)據(jù)的發(fā)送,。
 
  CAN總線的接收與CAN數(shù)據(jù)的發(fā)送是一個(gè)相反的過程,,當(dāng)CAN收發(fā)器檢測到CAN總線上有數(shù)據(jù)時(shí),CAN收發(fā)器把CAN總線上的差分信號(hào)轉(zhuǎn)換成位流數(shù)據(jù),,經(jīng)過錯(cuò)誤管理器及位時(shí)序邏輯單元對(duì)位數(shù)據(jù)流和時(shí)序進(jìn)行檢查,,再經(jīng)過位流管理器把位流數(shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)據(jù)并存放到接收緩沖器中,當(dāng)一幀數(shù)據(jù)接收完了之后則由接收緩沖器產(chǎn)生數(shù)據(jù)接收中斷(通知CPU已經(jīng)接收到一幀新數(shù)據(jù)),,并將產(chǎn)生的各種狀態(tài)通過狀態(tài)寄存器的值來表示,。
 
  2 系統(tǒng)軟件設(shè)計(jì)
 
  本文所述系統(tǒng)實(shí)現(xiàn)的功能為:LPC2378的兩個(gè)CAN控制模塊各作為獨(dú)立的CAN總線節(jié)點(diǎn),實(shí)現(xiàn)它們之間的通信,。為構(gòu)建一個(gè)完整的CAN總線仿真環(huán)境,,軟件設(shè)計(jì)所實(shí)現(xiàn)的功能為:仿真一A/D轉(zhuǎn)換通道,A/D轉(zhuǎn)換后的數(shù)值傳給CAN模塊2,,CAN模塊l接收來自CAN模塊2的數(shù)據(jù),。數(shù)據(jù)傳送通道為A/D轉(zhuǎn)換→CAN2→CANl。
 
  2.1 定義一幀CAN數(shù)據(jù)的格式
  2.2 初始化CAN控制器
,、
 
      2.3 中斷服務(wù)程序
  每當(dāng)發(fā)送完一幀數(shù)據(jù),,或接收到一幀數(shù)據(jù)時(shí)都觸發(fā)中斷。
   2.4 主程序流程圖
 
  3 仿真結(jié)果
  編譯并運(yùn)行程序,,打開CAN總線的CommunicaTIon菜單項(xiàng),,可以看到圖3所示的仿真結(jié)果。其中Number表示CAN消息的序號(hào),;States表示CAN消息的時(shí)間戳,,它們是使用CPU狀態(tài)標(biāo)記的;#表示是哪一個(gè)CAN模塊,;ID表示CAN消息的標(biāo)識(shí),,在發(fā)送或接收時(shí)使用;Dir表示CAN消息的傳送方向,;Xmit表示CAN控制器發(fā)送消息,;Rec表示CAN控制器接受消息;Len表示一幀中數(shù)據(jù)場長度,;data表示所傳送的具體數(shù)據(jù)場,。
 
  從仿真結(jié)果中可以看出,CAN模塊2發(fā)送數(shù)據(jù)(Xmit),,CAN模塊1接收數(shù)據(jù)(Rec),,數(shù)據(jù)場長度3個(gè)字節(jié),達(dá)到了預(yù)期的仿真效果,。
 
  4 結(jié)束語

  RealView MDK具有強(qiáng)大的仿真功能,,不僅能仿真CAN總線,,還能仿真GPIO、I2C,、SPI,、A/D、D/A轉(zhuǎn)換等,。在嵌入式系統(tǒng)的前期開發(fā)中,,我們可以利用其仿真功能,不受硬件和地點(diǎn)的限制,,使硬件和軟件的開發(fā)同步進(jìn)行,,有效縮短產(chǎn)品的設(shè)計(jì)開發(fā)周期。
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。