<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 汽車(chē)電子 > 設(shè)計(jì)應(yīng)用 > μC/OS-II的CAN驅(qū)動(dòng)程序設(shè)計(jì)

          μC/OS-II的CAN驅(qū)動(dòng)程序設(shè)計(jì)

          作者: 時(shí)間:2010-09-26 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:實(shí)時(shí)性是衡量現(xiàn)場(chǎng)總線系統(tǒng)性能的一個(gè)重要標(biāo)準(zhǔn)。本文提出一種采用μC/操作系統(tǒng)和I-協(xié)議,在應(yīng)用層面上提高總線系統(tǒng)實(shí)時(shí)性的方案,并以分層的方式逐層闡述CAN程序的設(shè)計(jì)過(guò)程。
          關(guān)鍵詞:CAN總線;μC/;實(shí)時(shí)性;程序

          本文引用地址:http://www.ex-cimer.com/article/197619.htm

          引言
          CAN總線是德國(guó)Bosch公司于1983年針對(duì)汽車(chē)應(yīng)用而開(kāi)發(fā)的,一種能有效支持分布式控制和實(shí)時(shí)控制的串行通信網(wǎng)絡(luò),屬于現(xiàn)場(chǎng)總線的范疇。其通信距離與波特率有關(guān),最大通信距離可達(dá)10 km,最大通信波特率可達(dá)1 Mbps。CAN總線仲裁采用1l位(CAN2.OA協(xié)議)和29位(CAN 2.OB協(xié)議)標(biāo)志,以及非破壞性仲裁總線結(jié)構(gòu)機(jī)制,可以確定數(shù)據(jù)塊的優(yōu)先級(jí),保證在網(wǎng)絡(luò)節(jié)點(diǎn)沖突時(shí)最高優(yōu)先級(jí)節(jié)點(diǎn)不需要沖突等待。CAN總線上的任何節(jié)點(diǎn)均可在任意時(shí)刻,主動(dòng)向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息而不分主次,從而實(shí)現(xiàn)各節(jié)點(diǎn)之間的自由通信。目前,CAN總線協(xié)議已被國(guó)際標(biāo)準(zhǔn)化組織認(rèn)證,技術(shù)比較成熟,已廣泛應(yīng)用于汽車(chē)、工業(yè)、高速網(wǎng)絡(luò)和低價(jià)位多路連線等領(lǐng)域中。
          μC/是Jean J.Labrosse開(kāi)發(fā)的一種小型嵌入式操作系統(tǒng)。它實(shí)質(zhì)上是基于優(yōu)先級(jí)的可剝奪型內(nèi)核,系統(tǒng)中的所有任務(wù)都有一個(gè)唯一的優(yōu)先級(jí)別,適合應(yīng)用于實(shí)時(shí)性要求較強(qiáng)的場(chǎng)合。本文采用μC/OS-II來(lái)設(shè)計(jì)CAN的驅(qū)動(dòng)程序,以滿(mǎn)足系統(tǒng)的實(shí)時(shí)要求。

          1 CAN節(jié)點(diǎn)的硬件設(shè)計(jì)
          CAN節(jié)點(diǎn)是分布在CAN網(wǎng)絡(luò)中進(jìn)行相互通信的基本單元,主要由主控制器、CAN控制器和CAN收發(fā)器組成。本設(shè)計(jì)中,節(jié)點(diǎn)的基本結(jié)構(gòu)如圖1所示。在CAN網(wǎng)絡(luò)中,ECU(Electronic Control Unit)是指一個(gè)具有完整功能的CAN節(jié)點(diǎn)。

          5a.jpg


          采用NXP公司的LPC2368作為CAN節(jié)點(diǎn)的主控制器。LPC2368是一款基于ARM7TDMI-S內(nèi)核的RISC處理器,包含2個(gè)兼容CAN2.0B規(guī)范的CAN控制器。每個(gè)CAN控制器擁有雙重接收緩沖器和三態(tài)發(fā)送緩沖器,具有快速的硬件實(shí)現(xiàn)的搜索算法,可以支持大量的CAN標(biāo)識(shí)符。
          LPC2368是一款3.3 V器件,雖然其對(duì)應(yīng)的CAN收發(fā)器接口引腳能夠承受5 V電壓,但為了讓CAN節(jié)點(diǎn)能夠更穩(wěn)定地運(yùn)行,這里采用TI公司的3.3 V CAN收發(fā)器SN65HVD230D與之配合使用。憑借高輸入阻抗特性,SN65HVD230D可以在一條總線上支持多達(dá)120個(gè)CAN節(jié)點(diǎn),并且能夠和5V的CAN收發(fā)器良好地兼容。本文重點(diǎn)介紹CAN驅(qū)動(dòng)程序的設(shè)計(jì)方法。

          2 CAN驅(qū)動(dòng)總體思想
          為了使軟件可移植性強(qiáng)、易于維護(hù),采用分層的方法編寫(xiě)CAN驅(qū)動(dòng)程序。驅(qū)動(dòng)程序分層結(jié)構(gòu)如圖2所示。圖中,雙向箭頭表示實(shí)時(shí)操作系統(tǒng)μC/OS-II與CAN驅(qū)動(dòng)程序之間的數(shù)據(jù)交換,單向箭頭表示上層軟件對(duì)下層軟件的調(diào)用。

          5b.jpg

          3 CAN設(shè)備控制層和CAN接口控制層
          CAN設(shè)備控制層的主要任務(wù)是:初始化主控制器與CAN控制器之間的連接配置,復(fù)位CAN控制器,建立主控制器和CAN控制器之間的通信函數(shù)。由于LPC2368內(nèi)部集成了CAN控制器,CPU可以通過(guò)內(nèi)部APB總線接口對(duì)CAN控制器的所有寄存器進(jìn)行訪問(wèn),所以不再需要編寫(xiě)設(shè)備控制驅(qū)動(dòng)層程序,已經(jīng)完全由硬件實(shí)現(xiàn)了。
          CAN接口控制層主要任務(wù)是:實(shí)現(xiàn)CAN控制器的各種功能,如設(shè)置控制模式、發(fā)送數(shù)據(jù)、釋放接收緩沖區(qū)、配置驗(yàn)收濾波器等。這些操作都是通過(guò)讀寫(xiě)CAN控制器的內(nèi)部相關(guān)寄存器來(lái)實(shí)現(xiàn)的。
          CAN控制器初始化程序(在應(yīng)用層中實(shí)現(xiàn),內(nèi)部調(diào)用的函數(shù)也都是在該層中編寫(xiě)的)如下:

          5c.jpg

          為了使程序更加簡(jiǎn)潔、可讀性更強(qiáng),可以通過(guò)宏定義的形式進(jìn)行編寫(xiě)。例如:
          #define CAN_MOD_RM()CANlMOD |=1
          CANlMOD是CAN控制器的模式寄存器,最低位置1可使CAN控制器進(jìn)入復(fù)位模式。這種模式下,可以對(duì)控制器的所有寄存器進(jìn)行寫(xiě)操作。其他對(duì)CAN控制器內(nèi)部寄存器的操作可以參照LPC2368的技術(shù)手冊(cè)。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();