• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 汽車電子 > 設計應用 > μC/OS-II的CAN驅動程序設計

    μC/OS-II的CAN驅動程序設計

    作者: 時間:2010-09-26 來源:網絡 收藏

    摘要:實時性是衡量現場總線系統性能的一個重要標準。本文提出一種采用μC/操作系統和I-協議,在應用層面上提高總線系統實時性的方案,并以分層的方式逐層闡述CAN程序的設計過程。
    關鍵詞:CAN總線;μC/;實時性;程序

    本文引用地址:http://www.czjhyjcfj.com/article/197619.htm

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

    1 CAN節點的硬件設計
    CAN節點是分布在CAN網絡中進行相互通信的基本單元,主要由主控制器、CAN控制器和CAN收發器組成。本設計中,節點的基本結構如圖1所示。在CAN網絡中,ECU(Electronic Control Unit)是指一個具有完整功能的CAN節點。

    5a.jpg


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

    2 CAN驅動總體思想
    為了使軟件可移植性強、易于維護,采用分層的方法編寫CAN驅動程序。驅動程序分層結構如圖2所示。圖中,雙向箭頭表示實時操作系統μC/OS-II與CAN驅動程序之間的數據交換,單向箭頭表示上層軟件對下層軟件的調用。

    5b.jpg

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

    5c.jpg

    為了使程序更加簡潔、可讀性更強,可以通過宏定義的形式進行編寫。例如:
    #define CAN_MOD_RM()CANlMOD |=1
    CANlMOD是CAN控制器的模式寄存器,最低位置1可使CAN控制器進入復位模式。這種模式下,可以對控制器的所有寄存器進行寫操作。其他對CAN控制器內部寄存器的操作可以參照LPC2368的技術手冊。


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 苏尼特左旗| 屯昌县| 临夏市| 巴林左旗| 荔波县| 丹棱县| 青河县| 华坪县| 天镇县| 甘肃省| 绿春县| 兰坪| 女性| 柳林县| 乐平市| 郑州市| 辉南县| 南投县| 崇左市| 台南市| 江西省| 双牌县| 嵊州市| 南昌县| 闽清县| 荥阳市| 西充县| 揭阳市| 金坛市| 武平县| 库伦旗| 大关县| 凌源市| 天峨县| 宁国市| 越西县| 汪清县| 桂林市| 横山县| 西乌珠穆沁旗| 观塘区|