單片機和CAN控制器在嵌入式系統中的應用
1.引言
單片機是一種集成在電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統。根據市場的發展,EPSON公司專為高級數據處理的便攜式設備推出了32位MCU(Microcontroller Unit)S1C33系列,下面簡單介紹一下EPSON 32位單片機的特點:
中央處理器(英文CentralProcessingUnit,CPU)是一臺計算機的運算核心和控制核心。CPU、內部存儲器和輸入/輸出設備是電子計算機三大核心部件。電腦中所有操作都由CPU負責讀取指令,對指令譯碼并執行指令的核心部件。其功能主要是解釋計算機指令以及處理計算機軟件中的數據。所謂的計算機的可編程性主要是指對CPU的編程。CPU由運算器、控制器和寄存器及實現它們之間聯系的數據、控制及狀態的總線構成。差不多所有的CPU的運作原理可分為四個階段:提取(Fetch)、解碼(Decode)、執行(Execute)和寫回(Writeback)。
A.強大的CPU內核:S1C33采用RISC(精簡指令集)結構,三級流水線,105條16位長指令,其大多數指令在一個時鐘周期內執行,大大提高了指令的執行效率。
B.豐富的周邊電路:除了強大的CPU內核外,S1C33的周邊電路也很有特色,考慮到對嵌入式芯片SOC(System On Chip)的要求,EPSON公司在設計中在單片機內集成了許多周邊電路,用戶在開發中,基本不需增加許多外部器件就可構成完整的系統,大大減少了系統成本和設計復雜度。以本文將要用到的S1C33209為例,它包括8KSRAM、直接內存存取控制器DMAC、中斷控制器ITC、可編程定時器計數器Programmable Timer、脈寬調制電路PWM、串行接口電路SIO、A/D轉換器等等,還包含高速的晶振電路OSC3、鎖相環(PLL)、低速晶振電路和一個實時時鐘。
C.低功耗:功耗是很多嵌入式系統設計必須考慮的問題,S1C33 CPU支持三種類型的省電模式:兩種HALT模式和一種SLEEP模式;此外,S1C33中時鐘電路設計有一個預分頻器(PSC),時鐘信號經預分頻器分頻輸出合適的工作頻率到Timer、SIO、AD等,這樣芯片每個功能模塊都工作在合適的頻率上,系統功耗可降到最低。
D.良好的性價比:S1C33 CPU核非常小,邏輯門數在100K左右,并采用0.35um及以上加工工藝,使CPU core占用的芯片的面積較小,以達到良好的性價比。
E.獨特的ASIC Micro(門陣結構CPU):S1C33 Core CPU和周邊電路都是用與非門單元組成的ASIC宏單元,這樣的設計使S1C33在芯片設計上有很大的靈活性,S1C33209芯片內部有20K用戶可以自定義的門陣列(Gate Array)電路。
ASIC是ApplicationSpecificIntegratedCircuit的英文縮寫,在集成電路界被認為是一種為專門目的而設計的集成電路。目前,在集成電路界ASIC被認為是一種為專門目的而設計的集成電路。是指應特定用戶要求和特定電子系統的需要而設計、制造的集成電路。ASIC的特點是面向特定用戶的需求,ASIC在批量生產時與通用集成電路相比具有體積更小、功耗更低、可靠性提高、性能提高、保密性增強、成本降低等優點。
下面我們采用S1C33209,設計一個探測系統。
2.系統描述及組成
我們的目標是設計一個功耗低、易于擴展、體積小的便攜設備,探測系統需要測量參數包括PH值、溶解氧、化學元素、深度等。測控系統工作時需要接收來自上位機控制中心的命令,要求將采集到的數據傳送到上位機,兩者的最大通信距離大于5Km.由于CAN總線具有較高的可靠性、實時性和靈活性,其最大通信距離可到達10Km,受干擾概率低,因此我們采用CAN總線作為通信方式。
圖1系統總體結構圖
系統總體結構如圖1所示,CAN采用雙絞線,信號以差分電壓傳送。SJA1000一端與單片機相連,另一端與CAN總線相連。為了提高單片機對CAN總線的驅動能力,把PCA82C250作為CAN控制器和物理總線間的接口,以提高對總線的差動發送能力和對CAN控制器的差動接收能力,其工作方式(高速方式和斜率方式)由引腳RS控制,RS接地為高速,RS串接一個電阻后再接地,用于控制上升和下降斜率,可以減少射頻干擾。系統從功能上分為兩個主要部分:測控子模塊和通信子模塊。測控子模塊主要功能是根據命令啟動系統并完成參數提取、數據處理、存儲及發送等操作,為了滿足探測系統多路數據的快速采集與分析的特殊要求,該模塊以EPSON公司的S1C33209為核心,擴展信號調理電路及與CAN總線的接口;通信子模塊的功能是完成水下測控系統與上位機的通信,此模塊主要是Philips公司的SJA1000型CAN控制器。
SJA1000是一種獨立的CAN控制器,主要用于移動目標和一般工業環境中的區域網絡控制。它是Philips半導體公司PCA82C200 CAN控制器(BasicCAN)的替代產品,而且它增加了一種新的操作模式——PeliCAN,這種模式支持具有很多新特性的CAN 2.0B協議。
3.軟件設計
在32位機系統中,由于軟件較復雜,基于操作系統的軟件開發占有重要地位。操作系統的作用是負責整個系統的任務調度、存儲分配、時鐘管理和中斷管理,并提供文件管理等基本服務,S1C33 32位芯片使用EPSON公司的ROS33操作系統,其核心為廣泛應用于各種嵌入式系統的iTron 3.0 OS Kernel,ROS33 Kernel具有:支持μITRON 3.0標準、內核優化并緊湊(最小可為1.7k)、響應快(CPU主頻為33MHz時,最快調度響應時間為7.8μs)、支持基于ANSI標準的C語言等特點。本設計的主應用程序框架如下:
#include ros33.h
void main()
{
sys_ini();//用于初始化ROS33所用的參數和資源
vcre_tsk(task ID, task startup address, priority, initial address of stack);//定義被執行的任務
…
sta_tsk(task ID, task startup code);//激活執行
…
sys_sta();
}
該系統通信協議采用ID+命令+數據+校驗的形式,其中,ID為網絡設備標識符,采用ID.18~ID.20.標識符ID.21~ID.28作為固定命令,不參與驗收濾波。數據表示通信的具體內容,校驗采用校驗和的形式,為1個字節。由于CAN總線本身有15位CRC校驗,并且本系統節點數較少,競爭不會十分激烈,所以通信可靠性較高。
軟件設計思路如下:系統上電后,S1C33209先對自身和SJA1000初始化,以確定工作主頻、波特率及輸出特性等,然后接收來自上位機的控制命令,同時將獲取的采用數據通過SJA1000傳送到CAN總線上或備份到Flash存儲器中。其中對SJA1000初始化是設計的重點,必須對寫入每個寄存器的內容進行仔細和全面考慮,否則系統將無法正常工作。設上位機SJA1000適配卡的ACR為xx20,AMR為FF00,下位機測控中心SJA1000的ACR為xx40,AMR為FF00.下面是初始化程序:
Void CAN_Init(viod)
{ CANMODE=ox09; //進入復位模式,單項驗收濾波,對SJA1000初始化
CANCDR=0x88; //選擇PeilCAN模式
CANIER=0x1A; //開放接收中斷、超載中斷和錯誤中斷
CANAMR0=0xFF; //接收屏蔽寄存器內容在單片機RAM中的值
CANACR1=0x40;
CANBTR0=0x03; //總線定時寄存器
CANBTR1=0xFF;
CANOCR=0xAA; //輸出控制寄存器
CANMODE=0x08; //返回工作狀態
CAN是控制器局域網絡(ControllerAreaNetwork,CAN)的簡稱,是由研發和生產汽車電子產品著稱的德國BOSCH公司開發了的,并最終成為國際標準(ISO118?8)。是國際上應用最廣泛的現場總線之一。在北美和西歐,CAN總線協議已經成為汽車計算機控制系統和嵌入式工業控制局域網的標準總線,并且擁有以CAN為底層協議專為大型貨車和重工機械車輛設計的J1939協議。近年來,其所具有的高可靠性和良好的錯誤檢測能力受到重視,被廣泛應用于汽車計算機控制系統和環境溫度惡劣、電磁輻射強和振動大的工業環境。
由于測控系統對通信實時性要求較高,一旦接收到來自上位機的控制命令必須及時響應,為此CAN總線上接收信息采用中斷方式,即SJA1000無錯地接收到信息后使INT變為低電平,下降沿觸發S1C33209外部中斷0,使其進入中斷服務程序,其流程如圖2所示。
圖2接收流程圖
如果要向CAN控制器發送數據,則必須將符合PeiCAN幀格式的一組數據寫入SJA1000的發送緩沖區,然后調用發送子程序,我們采用查詢方式實現發送,如圖3流程所示。
圖3發送流程圖
評論