技術頻道

      基于C8051F040的CAN總線智能節點的設計

      控制器局域網CAN(Controller Aera Network)是德國Bosch公司在80年代初為解決現代汽車中大量的控制與測試儀器之間的數據交換而提出的一種串行數據通信協議。他是多主總線,通信介質可以是雙絞線,通信速率可達1M/s,最遠通信距離可達10km。CAN具有極高的可靠性,高實時性特點特別適合工業過程監控設備的互連,已被公認是最有前途的現場總線之一。CAN總線的高速采集系統具備DCS(分布式控制系統)的主要特征,可代替DCS。

      Cygnal公司的51系列單片機C8051F040是集成在一塊芯片上的混合信號系統級單片機,在一個芯片內集成了構成一個單片機數據采集或控制的智能節點所需要的幾乎所有模擬和數字外設以及其他功能部件,代表了目前8位單片機控制系統的發展方向。芯片上有1個12位多通道ADC,2個12位DAC,2個電壓比較器,1個電壓基準,1個32kB的FLASH存儲器,與MCS-51指令集完全兼容的高速CIP-51內核,峰值速度可達25MIPS,并且還有硬件實現的UART串行接口和完全支持CAN2.0A和CAN2.0B的CAN控制器。本文將介紹帶有在片CAN的Cygnal公司的混合信號片上系統(SoC)級單片機C8051F040作為微處理器的CAN智能節點設計的硬件和軟件方案。

      1 典型C8051F404的CAN總線網絡結構

      典型C8051F404的CAN總線網絡結構如圖1所示。一個典型的CAN節點由帶有CAN控制器的微處理器和CAN收發器構成。CAN收發器建立CAN控制器和物理總線之間的連接,控制邏輯電平信號從CAN控制器到達物理總線的物理層,反之也一樣。CAN控制器執行CAN協議,用于信息緩沖和濾波。F040的CAN控制器支持完全的CAN2.0A和CAN2.0B。

      上位機通過CAN適配卡與各個CAN節點通訊。在應用中,上位機可以發送命令到節點,收集數據,修改過程參數,各節點可以將采集到的數據送到上位機進行復雜的數學計算或是保存打印,實現更加優越的信息處理功能。

      2 C8051F040的CAN控制器結構

      F040的所有CAN協議功能都由獨立的CAN控制器而不是由51處理器來完成。因此,CAN通信占用CPU帶寬很小,51處理器只需要通過特殊功能寄存器(SFR)配置CAN控制器,數據過濾器就可以了。

      2.1 CAN控制器各部分功能

      CAN Core:CAN協議控制器和發送/接收轉換寄存器;

      Message RAM:存儲Message Objects和標志碼,CAN控制器共有32個Message Object可供配置來用于發送或接收數據;

      Registers:用于控制和配置C_CAN模塊的所有寄存器;

      Message Handler:控制數據在CAN Core的接收/發送轉換寄存器和Message Object之間的傳輸,以及中斷的產生。

      2.2 CAN寄存器分類

      CAN寄存器可分為以下4類:

      (1)CAN控制器協議寄存器:用于CAN控制、中斷、錯誤控制、總線狀態控制和測試模塊;

      (2)信息目標(Message Object)接口寄存器:配置32個信息目標(Msg Obj),從目標接收和發送數據。8051處理器通過他來讀寫CAN Message RAM;

      (3)信息處理寄存器:只讀寄存器。為51CPU提供信息目標的狀態,如信息有效標志,發送請求狀態,新數據標志和中斷標志;

      (4)C8051處理器特殊功能寄存器(SFR):C8051處理器控制的5個寄存器,直接讀寫CAN協議寄存器,通過CAN數據寄存器(CAN0DATH和CAN0DATL)和CAN地址寄存器(CAN0ADR)間接讀寫其他CAN控制器。

      3 CAN節點的硬件設計

      設計采用的接口芯片使用TI公司的3.3VCAN收發器SN65HVD230,他與PCA82C250的引腳兼容。SN65HVD230有3種工作模式:高速,傾斜和低功耗模式,由Rs腳的連接方式來確定。由于F040自帶了CAN控制器,外圍電路極為簡潔。

      4 CAN通訊軟件設計

      為避免51 CPU讀寫Message RAM與CAN 信息收發之間產生沖突,CPU不直接讀寫Message Object,而是通過專門的寄存器(IFx Interface Registers)來配置信息目標。

      一個完整的信息目標的結構如表1所示。

      CAN通訊協議的最大特點之一就是廢除了傳統的站地址編碼,而使用信息塊標志碼。ID28-0,Xtd和Dir用來定義信息標志碼,以及定義即將發送數據幀的類型(遠程幀或標準幀),并且與Mask28-0,MXtd和Mdir一起用來作為將要接收數據幀的過濾器。一個已接收到的信息被放在有效的(MsgVal=1)、具有匹配標志碼的Message Object里。只有當Xtd=1時,遠程幀才被放入Message Object,Xtd=0時,標準幀被放入Message Object。當多于一個的有效Message object與收到的信息匹配,則該條信息被放入號碼最小的Message object里。Data0-Data7是8個數據字節。CAN通訊初始化和法數據幀的軟件流程如圖4所示。

      CAN通訊軟件設計主要包括3個模塊:CAN通訊初始化、接收數據和發送數據模塊。信息目標的初始化程序代碼(C語言)如下:

      當微處理器接收數據采用中斷方式,接收Message Object初始化時將RxIE位置1。當程序進入到CAN中斷服務子程序時,先判斷CAN狀態寄存器的RxOK位是否已置位,若已置位,則說明CAN控制器已經成功接收到一個數據幀(因為CAN通訊有多個中斷源,而中斷向量只有一個),這時再調用相應的函數,取出數據幀中有用的字節進行處理或執行相應的操作。源程序代碼如下:


      5 結語

      C8051F040是完全集成的混合信號系統級單片機,具有與8051指令集完全兼容的CIP-51內核,代表了8位單片機的發展方向。他不但集成了構成監控系統的常用外設,而且還集成了高可靠性、高性能的CAN總線控制模塊。本文使用該芯片設計的CAN節點模塊集成度高、性能穩定,實時性好、軟件設計簡潔,在工業生產和儀器開發領域具有廣泛的應用前景。本文給出的硬件和軟件設計方案均已通過實際測試,并成功運用于大洋協會“十五”攻關項目:小型底棲生物標本自動分離系統的通訊模式中。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 一区二区视频在线免费观看| 在线观看一区二区三区av| 精品国产日韩一区三区| 久久精品国产第一区二区三区| 国产成人综合精品一区| 国产成人av一区二区三区在线 | 免费高清av一区二区三区| 岛国无码av不卡一区二区| 精品一区二区三区在线视频观看| 亚洲精品无码一区二区| 亚洲av无码一区二区三区观看 | 色系一区二区三区四区五区| 亚洲a∨无码一区二区| 国产乱码一区二区三区四| 亚洲国产精品一区第二页 | 亚洲一区精彩视频| 精品一区二区三区在线播放视频 | 97av麻豆蜜桃一区二区| 无码日韩精品一区二区免费暖暖| 亚洲韩国精品无码一区二区三区| 99国产精品一区二区| 99久久国产精品免费一区二区| 国产激情一区二区三区 | 国产高清在线精品一区小说| 亚洲日本一区二区一本一道 | 无码国产精成人午夜视频一区二区| 中文字幕一区二区三区免费视频 | 人妻无码第一区二区三区| 亚洲成在人天堂一区二区| 亚洲一区二区三区免费在线观看 | 午夜性色一区二区三区免费不卡视频| 久久国产一区二区三区| 亚洲视频一区网站| 无码人妻aⅴ一区二区三区有奶水| 国产av一区最新精品| 一区二区三区91| 国产激情з∠视频一区二区| 3d动漫精品啪啪一区二区中| 无码中文字幕人妻在线一区二区三区| 女女同性一区二区三区四区| 波多野结衣中文一区|