《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于飛利浦P8XC591的CAN總線節點擴展
基于飛利浦P8XC591的CAN總線節點擴展
摘要: 由于CAN總線具有通訊速率高、可靠性高、連接方便和性能價格比高等諸多特點,CAN的應用范圍遍及從高速網絡到低成本的多線路網絡。在自動化電子領域的汽車發動機控制部件、傳感器、抗滑系統、工業自動化、建筑物環境控制、機床或電梯控制、醫療設備等領域得到了較為廣泛的應用。
Abstract:
Key words :

引言

   由于CAN總線具有通訊速率高、可靠性高、連接方便和性能價格比高等諸多特點,CAN的應用范圍遍及從高速網絡到低成本的多線路網絡。在自動化電子領域的汽車發動機控制部件、傳感器、抗滑系統、工業自動化、建筑物環境控制、機床或電梯控制、醫療設備等領域得到了較為廣泛的應用。

   CAN 的信號傳輸采用短幀結構,每一幀的有效字節數為 8個,因而傳輸時間短、受干擾的概率低。當節點嚴重錯誤時,具有自動關閉的功能以切斷該節點與總線的聯系,使總線上的其它節點極其通信不受影響,具有較強的抗干擾能力和檢錯能力。CAN控制器支持四種不同的CAN協議類型:數據幀、遠程幀、出錯幀和超載幀。

    CAN支持多主方式工作,網絡上任何節點均可在任意時刻主動向其它節點發送信息,支持點對點、一點對多點和全局廣播方式接收/發送數據。它采用總線仲裁技術,當出現幾個節點同時在網絡上傳輸信息時,優先級高的節點可繼續傳輸數據,而優先級低的節點則主動停止發送,從而避免了總線沖突。

    CAN總線信號傳輸介質使用特性阻抗為120歐姆的雙絞線,信號傳輸方式和RS485一樣,也采用差動發送和差動接收的方式。理論上使用CAN2.0A總線的節點可達到2032個,CAN2.0B則可以達到5億多個。使用PCA82C250作為CAN總線的收發器時,CAN直接通信距離最遠可達到10km(傳輸率為5kbps),通訊速率最高可達1Mbps(傳輸距離為40m);由于收發器的限制, CAN總線上節點數實際上最多可達110個。對于節點超過110個的CAN網絡,可以使用CAN網關對CAN總線進行擴展,以達到用戶的要求。

   網關可以采用特定的控制邏輯去控制一對背-背相接的收發器PCA82C250,連接兩個物理上完全獨立的CAN網,雙向傳輸數據,從物理層上來看,它實現了CAN總線信號的中繼,也可以采用P8XC591+SJA1000的結構去實現。下面將著重介紹后者的硬件及軟件實現。

P8XC591片上自帶CAN的微控制器

    P8XC591是一個高性能的微控制器,它的硬件接構及增強型飛利浦“RX+內核”使得其可以廣泛用于工業控制和汽車領域。片上自帶的CAN控制器為CAN的應用提供了許多專用的硬件功能。P8XC591完全履行CAN2.0B規范,并提供一個直接從SJA1000獨立CAN控制器的軟件移植路徑。P8XC591具有CAN的擴展特性,其中包括增強型接收濾波器、支持系統維護、診斷、系統優化以及接收FIFO特性等。   

     P8XC591除了標準的外圍功能以外,還有一個強大的CAN控制器模塊。該嵌入式CAN控制器還包括了下列功能模塊:CAN內核模塊,根據CAN2.0B規范控制CAN幀的發送和接收;CAN接口模塊,包含5個實現CPU與CAN控制器連接的特殊功能寄存器,對重要CAN寄存器的訪問通過快速自動增加的尋址特性和對特殊功能寄存器的位尋址來實現;CAN控制器的發送緩沖區模塊,能夠保存一個完整的CAN信息擴展或標準幀格式。只要通過CPU啟動發送信息,字節就從發送緩沖區傳輸到CAN內核模塊。當接收一個信息時,CAN內核模塊將串行位流轉換成并行數據輸入到接收濾波器,通過該可編程濾波器,P8XC591確定實際收到的信息,所有由接收濾波器接收的數據都保存在接收FIFO(64字節)中,由于操作模式和數據長度的不同,該接收緩沖區最多可保存21個CAN信息。這使用戶在指定系統的中斷服務和中斷優先級時有更多的靈活性,因為數據溢出的可能性大大降低。

   除了普通的CAN特性以外,P8XC591還提供增強型PeliCAN。PeliCAN具有4個獨立可配置的接收濾波器組,每個組都有4個可選的接收濾波器配置;每個接收濾波器都有32位區分符、32位代碼和32位屏蔽;所有濾波器配置都可在運行中改變;支持更高層的協議的接收濾波器;接收FIFO特性;只聽模式及自檢測模式;只有達到FIFO接收中斷級才產生接收中斷;在接收到高優先級數據幀時立即產生接收中斷;系統維護診斷和優化特性。

    硬件電路設計

    硬件電路的設計采用了飛利浦片上自帶CAN控制器的單片機P8XC591和獨立的CAN控制器SJA1000。兩者都支持CAN 2.0B協議。P87C591片上自帶的CAN控制器在軟件上是向上兼容SJA1000的。

    P8XC591所連接的CAN節點電路所需要的外部元件僅僅是一個晶振加兩個電容驅動片內振蕩器、一個連接到復位腳的電阻、電容。使用片內上電復位電路以及一個收發器用于將P8XC591連接到CAN總線。

    P8XC591通過對CAN的特殊功能寄存器,如地址寄存器(CANADR)、數據寄存器(CANDAT)、模式寄存器(CANMOD)、控制寄存器(CANCON)、狀態寄存器(CANSTA)、總線定時寄存器(BTR0,BTR1)等的設置,以及對收發緩沖區的讀寫(接收緩沖區為64字節的FIFO緩沖區,最多儲存21幀CAN信息),從而完成和其它CAN節點的數據交換。

   CAN的控制器分別采用了PXC591和SJA1000,可完成物理層和數據鏈路層的所有功能。CAN收發器使用飛利浦公司的PCA82C250,它是連接CAN控制器和物理總線之間的接口,提供了對總線的差動發動和接收能力。它與ISO11898標準完全兼容,有三種不同的工作方式即高速、斜率控制和待機,可根據實際情況選擇。為了進一步提高系統的抗干擾能力,在控制器SJA1000和收發器PCA82C250之間,P87C591和收發器PCA82C250之間均增加了由高速隔離器件6N137 構成的隔離電路。硬件電路中使用PCA82C250是為了增加通信距離,提高系統的瞬間抗干擾能力,保護總線、降低干擾等。

   微處理器P87C591和SJA1000均使用12MHz的石英晶體,以獲得相同的時鐘信號。由于 P87C591含有片上的CAN控制器,通過TXDC,RXDC兩個管腳,P87C591就可和外部的CAN節點交換數據。另一方面,P87C591直接控制SJA1000的AD0~AD7, RD, WR, ALE, RST和INT管腳,SJA1000的MODE管腳接高電平,工作在Intel模式下;片選CS管腳接地,使SJA1000始終處于選通狀態。P87C591對SJA1000的操作主要是對寄存器中的模式寄存器(MOD)、命令寄存器(CMR)、狀態寄存器(SR)、中斷寄存器(IR)、中斷允許寄存器(IEP)、總線定時寄存器(BTR0, BTR1)、輸出控制寄存器(OCR)、時鐘分頻計數器(CDR)進行設置和檢測,以及對收發緩沖區進行讀寫,從而完成和其它CAN節點的數據交換。

   為了能使CAN網絡1(最多110個節點)的信息和CAN網絡2(最多110個節點)的信息共享,P87C591在軟件上必須使得任何格式的數據能實時的從CAN網絡1傳送到CAN網絡2,以及信息從CAN網絡2傳送到CAN網絡1。這樣,兩個不同的子網就實現了互聯,CAN網絡的節點得到了擴展。

    軟件設計

  *在初始化SJA1000時,必須設置接收代碼寄存器ACRn,接收代碼屏蔽寄存器AMRn的值為FF,以能收發所有的數據。由于P87C591片上自帶的CAN控制器在軟件上是向上兼容SJA1000的,所以對SJA1000的初始化,讀、寫的流程與P87C591基本類似。

  初始化部分的原程序如下:

#include

viod ini_can_controller (void)

{

CANMOD=0x01; /*進入復位模式,啟動CAN初始化*/

P1M2=P1M2 I 0x02; /*管腳TXDC設置為推挽模式*/

CANSTA=0x03; /*使能接收和發送中斷*/

CANADR=BTR0; /*BTR0和BTR1編程為125kbit/s@12MHz*/

CANDAT=0x45;

CANADR=BTR1; /*TSEG1=12, TSEG2=3, SJW=2*/

CANDAT=0x2B; /*用戶可根據具體的CAN網絡來調整BTR0, BRT1的參數*/

CANADR=AMR10; /*設定接收屏蔽寄存器的地址*/

CANDAT=0xFF; /*Bank1: 與接收屏蔽寄存器1無關,允許任何數據通過濾波器*/

CANDAT=0xFF; /*Bank1: 與接收屏蔽寄存器2無關,允許任何數據通過濾波器*/

CANDAT=0xFF; /*Bank1: 與接收屏蔽寄存器3無關,允許任何數據通過濾波器*/

CANDAT=0xFF; /*Bank1: 與接收屏蔽寄存器4無關,允許任何數據通過濾波器*/

CANADR=ACFMODE; /*設定接收濾波器模式寄存器的地址*/

CANDAT=0x01; /*設定BANK1為單濾波模式,標準幀*/

CANADR=ACFENA; /*設定接收濾波器使能寄存器的地址*/

CANDAT=0x01; /*使能BANK1的濾波器1*/

CANMOD=0x00; /*請求進入CAN的激活模式*/

while (CANSTA & 0x80); /*等待總線激活*/

}

類似以上的設置可以使得所有的CAN信息都通過CAN的連接濾波器而到達接收緩沖區,從而為不同CAN網絡信息的交換奠定了基礎。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产福利影院在线观看 | 日韩 欧美 亚洲 国产 | 怡红院视频在线观看最新 | 日韩在线天堂免费观看 | 91黄色软件 | 成人羞羞视频在线观看 | 嫩模被xxxx视频在线观看 | 1769国产精品视频免费观看 | 最近日本韩国高清免费观看 | 日本大片久久久高清免费看 | 中文字幕免费在线看 | 欧美一区二区三区不卡免费观看 | 亚洲国产精品成人久久 | 美女黄网站免费观看 | 人人干人| 黄色在线网站视频 | 天天操天天摸天天碰 | 动漫美女无遮挡 | 天天成人 | 国产精品亚洲午夜一区二区三区 | 成人午夜毛片 | 欧美城天堂网 | 九九九九九九伊人 | 日韩经典欧美精品一区 | 欧日韩美香蕉在线观看 | 国产免费黄色片 | 国产成人高清亚洲一区久久 | 午夜看一级特黄a大片黑 | 天天干天天干天天天天天天爽 | 久久国产成人 | 永久在线| 综合视频网 | 色色色色色色网 | 亚洲国产精品视频 | 亚洲精品另类有吗中文字幕 | 欧美激情网址 | 男女一级毛片免费播放 | 色爱区综合激情五月综合色 | 欧美性猛交xxxxxxxx软件 | 香蕉在线视频网站 | 欧美99热|