|
摘要:cygnal生產的單片機c8051f040是代表8位單片機發展方向的高速(25m)混合信號系統級芯片(soc)它不僅集成了一般測控系統需要的外設,而且集成了很有發展前景的現場總線—can總線控制器,文中對該芯片中的can控制器結構作了分析,并給出了在分布式測控系統中使用該芯片的智能節點的硬件、軟件設計方案。 關鍵詞:c8051f040;can總線;分布式;測控節點 1 概述 分布式在線測控系統是由多個面向設備的、以mcu為核心的智能處理單元和多個并行運行且具有不同監測和故障診斷功能的微機構成的。該系統采取“分治”的設計思想它將數據采集以及部分數據處理任務交給設備層的智能處理單元去完成而監測診斷層主要負責監視和故障診斷。分布式測控系統設計均應考慮各個節點之間的通信問題因為通信網絡的選取對系統性能有很大影響。 國內已開展了基于現場總線的在線測控系統的研究并利用can總線實現設備層的檢測處理、單元間的通信以及與上層監測主機的通信。can總線就是一種支持分布式實時控制系統的串行通信局域網絡總線。它的主要特點如下: ●任一個節點均可在任一時刻主動向網絡上的其它節點發送數據,而從不分主從,因此,通信比較靈活; ●節點可分為不同的優先級,可以滿足不同的實時要求; ●采用非破壞性總線仲裁,當兩節點同時向總線發送信息時,優先級低的節點主動停止數據發送而優先級高的節點可不受影響地繼續發送數據; ●通信距離最遠可達10km,通信最高速率可達1mbps ●每幀數據的有效字節數為8,因此,可保證很短的傳輸時間,而且實時性強,受干擾的概率低;
 ●每幀數據都含有crc(循環冗余)校驗及其它校驗措施,因而數據出錯率很低; ●can總線節點在嚴重錯誤的情況下,可自動切斷與總線的聯系,以使總線上的其它操作不受影響。 目前,can總線協議以其可靠性高、實時性好以及獨特的設計已經成為總線通信網絡的首選國內目前使用較廣的是philips 生產的sja1000 、82c200等獨立的can控制器,由于這種獨立的控制器限制了測控節點的集成度,因此,很多微處理器生產廠家已經開始生產內部集成有can控制器的mcu。美國cygnal公司生產c8051f040就是內部集成有bosch can控制器的混合信號系統級芯片(soc)。本文將分析c8051f040 的can總線結構、與cpu 的接口及初始化配置,同時將給出基于c8051f040的分布式測控節點的設計及系統的實現框架。 2 c8051f040及其內部botsh can cygnal公司的單片機c8051f040具有與8051指令集完全兼容的cip-51內核。它的最高頻率可達25mhz內置64kb flash ram和4kb的數據存儲器。c8051f040在一個芯片內集成了構成單片機數據采集或控制系統所需要的幾乎所有模擬和數字外設及其它功能部件,包括adc、可編程增益放大器、dac、電壓比較器、溫度傳感器、smbus/i2c、uart、spi、定時器、內部振蕩器、看門狗電路以及can 控制器等,這種高度集成為設計小體積、低功耗、高可靠和高性能的測控系統提供了方便,同時也使測控設備整體成本能夠降低。 c8051f040內部集成有botsh can,它兼容can技術規范2.0a和2.0b,主要由can內核、消息ram(獨立于cip-51的ram)、消息處理單元和控制寄存器組成,圖1所示是c8051f040內部的can總線結構圖。
 圖1中,can內核由can協議控制器和負責消息收發的串行/并行轉換rx/tx移位寄存器組成。消息ram用于存儲消息目標和每個目標的仲裁掩碼。這種can處理器有32個隨意配置為發送和接受的消息目標并且每一個消息目標都有它自己的識別掩碼,所有的數據傳輸和接收濾波都是由can控制器完成的,而不是由cip-51來完成。 can內部寄存器中存儲了所有can的控制和配置信息,其中包括控制寄存器、狀態寄存器、設置波特率的位定時寄存器 、測試寄存器、錯誤計數器和消息接口寄存器。通常can內核不能直接訪問消息ram,而必須通過接口寄存器if1或if2來訪問。另外,cip-51的sfr并不能直接訪問can內部寄存器的所有單元,其配置can、消息目標、讀取can狀態以及獲取接收數據、傳遞發送數據都由sfr中的6個特殊寄存器來完成,其中can0cn、can0tst和can0sta 3個寄存器可直接獲取或修改can 控制器中對應的寄存器,而can0dath、can0datl、can0adr 3個寄存器主要用來訪問修改其它不能直接訪問的can 內部寄存器,其中can0adr用來指出要訪問寄存器的地址,can0dath、can0datl這時就相當于要訪問的16位寄存器的高、低字節的映射寄存器,而對它們的讀寫則相當于對所指向寄存器的讀寫。圖2給出了cip-51如何訪問can中控制寄存器和每個消息的路徑圖。 消息處理單元用于根據寄存器中的信息來控制can內核中移位寄存器和消息ram 之間的數據傳遞,同時,它還可用來管理中斷的產生。
3 基于c8051f040的智能系統設計 3.1 硬件設計 工業測控現場通常存在著大量的傳感器、執行機構和電子控制單元,它們一般分布較廣,而且對實時性要求也很高,圖3是基于can總線的分布式測控系統框圖。該系統采用現場總線式集散系統fdcsfield distributed control system結構,它由主控站(注:can總線各節點并不分主從 這里是針對特定的系統而言)、c8051f040為mcu的智能節點并配以can現場總線控制網絡構成。主控站主要完成對各節點的在線監控以及對各節點返回信息的分析處理,并對節點發出控制命令以控制節點工作模式。智能節點則根據主控站命令來完成數據采集、運行顯示以及對執行部件的控制,以及各節點與主站、節點與節點之間的實時數據交換和信息控制。 圖4是一個以c8051f040為核心的智能節點設計原理圖。 圖中,c8051f040的6、7腳分別為canrx和cantx引腳,can的輸出輸入必須加總線收發器才能與can物理總線相連。本系統采用了tja1050高速can收發器來替代傳統的pca82c250收發器,tja1050芯片具有電磁輻射低、防短路、不上電時對總線無影響等特點,它的8腳s可以選擇高速或靜音兩種模式,并可由c8051f040的p4.0控制。為了增加can 節點的抗干擾能力,將can引腳通過高速光耦6n137與總線收發器相連,可實現各節點之間的電氣隔離。電源的隔離可以采用小功率電源隔離模塊,也可以用帶多個5v隔離輸出的開關電源模塊。這樣能大大提高節點的穩定性和可靠性,但可能會增加節點的硬件復雜性。 3.2 節點軟件設計 對于一個實際的測控系統,其節點軟件是比較復雜的,但由于c8051f040具有與8051指令完全兼容的cip-51內核,所以,對于有使用51系列單片機經驗的人來說,這并沒有太大的難度,下面主要介紹c8051f040內置can的軟件設計。 如果需要某一節點將a/d采樣值通過can總線送到主控站(地址01h),且配置系統時設定的工作頻率為25mhzcantx引腳設為推挽方式,那么在初始化過程中,波特率應配置為160kbps,消息目標禁止不用,配置消息目標2為接收時的程序代碼如下: can_init: mov sfrpage,#01h orl can0cn,#41h ;設init位為1, cce為1 ; 配置波特率 mov can0adr,#03h mov can0dath,#7fh mov can0datl,#05h ;禁止不用的消息目標(3-32) mov can0adr, #0dh ; 指向if1的仲裁控制寄存器2 mov can0dath,#00h ; magval=0; mov can0adr,#09h ; 指向if1的命令掩碼寄存器 mov can0datl,#0a0h ; 方向為寫,改變仲裁位 mov r1,#20h mov can0adr, #08h ;指向if1的命令寄存器 enable_message_objects: mov can0datl,r1 ;寫r1指向的消息目標 mov can0adr, #08h ;指向if1的命令寄存器 wait_transfer_over mov a,can0dath ;讀命令寄存器 jb acc.7,wait_transfer_over dec r1 cjne r1,#02h,enable_message_bjects ;配置消息目標2為接收 mov can0adr,#21h mov can0datl,#11111000b; 寫if2命令掩碼 mov can0dath,#00h mov can0datl,#00h ;寫if2掩碼1 mov can0dath,#00h mov can0datl,#00h ; 寫if2掩碼2 mov can0datl,#00h ; 寫if2仲裁寄存器1 mov can0dath,#80h ; 寫if2仲裁寄存器2高8位 消息目標有效,標準仲裁幀,方向為接收 mov can0datl,#00h ; 寫if2仲裁寄存器2低8位 mov can0dath,#00010100b; 寫if2控制寄存器高位 mov can0datl,#80h ; 寫if2控制寄存器低位 mov can0adr, #20h mov can0datl, #02h ; 通過if2寫2號消息目標 wait_transfer_over1; mov a,can0dath ; 讀命令寄存器 jb acc.7,wait_transfer_over1 ; 等待寫結束 ;can進入操作模式 mov can0cn,#00000010b ; can進入正常操作模式狀態中斷使能, ret 發送過程是將存儲在從buf0起始地址中的2個字節的a/d采樣數據,通過if1傳送到消息目標1的過程。其啟動發送程序代碼如下: send_ad_data: mov sfrpage, #01h mov can0adr, #09h mov can0datl,#10110111b ; 寫if1命令掩碼寄存器 mov can0adr, #0dh mov can0dath,#10100000b ;使用11位標準仲幀
 mov can0datl,#04h ;寫if1仲裁寄存器2,發送對象的地址01因標準幀使用高11位,所以地址要左移2位指向控制寄存器 mov can0dath,#00001001b ; 寫if1控制寄存器高8位,傳輸中斷使能,置傳輸請求位 mov can0datl,#0bh ; 寫if1控制寄存器低8 位,eob=1 dlc=0指向buf0 mov dptr,buf0 movx a,@dptr mov can0datl,a ; 寫if1數據0 inc dptr movx a,@dptr mov can0adr,#0fh mov can0dath,a ; 寫if1數據1 mov can0adr, #08h mov can0datl,#01h ;傳遞到目標1及啟動發送 ret
4 結束語 cygnal公司的單片機c8051f040是一種完全集成的混合信號系統級芯片(soc),它具有與8051指令集完全兼容的cip-51內核代表了8位單片機的發展方向。它不僅集成有構成監控系統常用的外設,而且集成了逐漸成為控制領域首選的高可靠性、高性能c8051f040 can總線;本文使用該芯片設計的測控系統智能節點具有集成度高、性能穩定等特點。由于c8051f040可達到25mhz工作頻率,因而可提高系統實時性。此外,由于botsch can內有32個自帶掩碼消息目標的特殊設計,因此,用其進行分布式在線測控系統節點之間的相互數據傳遞設計將更為簡單。 |