將先進的計算技術、半導體技術和電子技術與各個行業的具體應用以及與Intemet技術相結合己經成為未來嵌入式系統的發展趨勢。這里以A19lRM9200微處理器為CPU,ATmegal28系列單片機,8 MB的Flash和32 MB的SDRAM存儲器,擴展了以太網接口、串行接口等外圍通信設備以及輸入輸出接口,根據處理器和其他接口芯片的要求設計了外圍硬件電路及軟件。實現了用電機控制系統實時監控多路電機的狀態,并且可以控制任一路電機的轉速與相位,解決了單片機與ARM系列處理器之間的通信。 1 系統硬件設計 1.1 主機硬件系統結構 主機硬件系統結構如圖1所示。 1)電源電路 AT9lRM9200需要1.8 V和3.3 V電源,另外,大部分外圍器件需要3.3 V電源,小部分外圍器件還需要5 V電源。此處選用了Sipex公司生產的SPXlll7M3-3.3型低壓差(LDO)穩壓器和SPXlll7M3-1.8型低壓差(LDO)穩壓器進行DC-DC變換后為各個器件提供工作電壓。 2)晶振電路 如圖2所示,晶體振蕩電路用于向AT91RM9200和其他需要時鐘的外設電路提供工作時鐘。本系統使用無源晶體振蕩器X1(18. 432 MHz)和X2(32.768 kHz)作為系統的主振蕩器和慢時鐘振蕩器,其中32.768 kHz晶振為系統提供慢時鐘,18 MHz晶振通過倍頻為系統提供180 MHz的主機時鐘。 3)AT91RM9200處理器 ATglRM9200是Atmel公司基于ARM920T核的高性能、低功耗16/32位RISC微處理器,其最高主頻為180 MHz,其雙向、32位外部數據總線支持8、16、32位數據寬度,26位地址總線可以對最大64 MB空間尋址。是系統的工作和控制中心。 4)存儲器 存儲器模塊包括Flash存儲器和SRAM存儲器2部分。Flash存儲器用于存放引導程序、嵌入式操作系統、用戶應用程序及重要的數據等,即使掉電程序和數據都不會丟失。設計中采用Intel公司生產的28F640J3A,其存儲容量為64 Mb(8 MB),工作電壓為2.7~3.6 V,采用48引腳TSOP封裝,16位數據寬度。 SDRAM存儲器是系統代碼的運行場所,存放系統運行時的程序和數據,但掉電后該部分程序和數據會丟失。設計中使用2片數據寬度為16位的SDRAM并行運行作為1個32位數據寬度的SDRAM模塊,如圖3所示。 使用的SDRAM電路為Hynix公司的HY57V651620BTC,其工作電壓為3.3 V,單片存儲容量為4組x16 Mb,54引腳TSOP封裝,兼容LVTTL電平接口,支持自動刷新和自刷新。 5)網絡端口 采用DAVICOM公司的DM9161作為以太網的物理層接口。通過這個接口可以控制和配置很多物理層設備,得到狀態和錯誤信息,并且確定PHY設備的工作方式和功能。將DM9161的REF_CLK端接至50 MHz晶振的輸出端;DM9161的TXD1,TXD2,TXEN,RXD1,BXD2端接至AT9lRM9200的ETXO,ETXI,ETXEN,ERXO,ERXI;DM9161的EXESEN,COL,PWRDWN端分別通過10 kΩ電阻接高電平,BGRESG,BGRES之間接6.8 kΩ電阻;將DM9161的RXEXDV,RXER,RESET,MDC,MDIO端接至AT9lRM9200的ECRS,ERXER,NRST,EMDIO均連接發光二極管,DM9161的TX+,TX-,RX+,EMDC,FDX,SPEED,LINKRX連接網絡隔離變壓器。 6)串行接口 用于AT9lRM9200系統短距離雙向串行通信。使用的電平轉換電路為Sipex公司雙產的SP3232E。本系統包含1個UART接口,它是兩線調試串口,用來連接到超級終端觀察AT91RM9200的啟動,完成與PC的通信調試。其原理圖如圖4所示。 1.2 從機硬件設計 1)ATmega128單片機 ATMEL公司的AVR單片機是增強型RISC內載Flash的單片機,128 K字節的系統內可編程Flash(在寫入過程中還具有讀取能力,即RWW)、4 K字節的EEPROM、4 K字節的SRAM、53個通用I/O口線、32個通用工作寄存器、實時時鐘RTC、4個靈活的具有比較模式和PWM功能的定時器/計數器(T/C)、2個USART、面向字節的兩線接口TWI、8通道10位ADC(具有可選的可編程增益)、具有片內振蕩器的可編程看門狗定時器、SPI串行端口、與IEEEll49.1規范兼容的JTAG測試接口,以及6種可以通過軟件選擇的省電模式。 2)系統控制和復位 復位時所有的I/O寄存器都被設置為初始值,程序從復位向量處開始執行。復位向量處的指令必須是絕對跳轉JMP指令,以使程序跳轉到復位處理例程。如果程序永遠不會使能中斷,則中斷向量可以由一般的程序代碼所覆蓋。 圖5為復位邏輯的電路圖。復位源生效時I/O端口立即復位為初始值,不需要任何時鐘的輔助。當所有的復位信號消失之后,延遲計數器被激活,從而延長了內部復位,并使得在MCU正常工作之前電源達到穩定的電平。延遲計數器的溢出時間通過熔絲位CKSEL由用戶設定。 3)I/O端口 作為通用數字I/O使用時,所有AVRI/O端口都具有真正的讀-修改-寫功能。輸出緩沖器具有對稱的驅動能力,可以輸出或吸收大電流,直接驅動LED。 4)SPI串行外設接口 串行外設接口SPI允許ATmegal28和外設之間進行高速的同步數據傳輸。主機和從機之間的SPI連接如圖6所示。 5)16位定時器/計時器 16位的T/C可以實現精確的程序定時、波形產生和信號測量。T/Cl、T/C3的普通模式、CTC模式、快速PWM模式、相位修正PWM模式與T/C0、T/C2相同。 2 系統軟件設計 嵌入式電機控制系統在軟件設計上分為主機軟件設計與從機軟件設計。主機軟件設計主要分為主機的SPI驅動程序和主機通信程序。 從程序結構角度而言,設備驅動程序是一組由內核中的相關子例程和數據組成的I/O設備軟件接口,它的任務就是向系統提供接口函數。因此每種文件系統或設備都有自己的接口函數,這個函數就是一個fileoperations數據結構,結構中的成份幾乎全是函數指針。當內核需要對某個設備進行特殊的操作時,它就調用相應的接口函數即驅動例程。這就使得控制從用戶進程轉移到了驅動例程,當驅動例程完成控制又返回至用戶進程。用戶態的程序使用內核提供的標準系統調用來與內核通訊,當每個系統調用被使用時,內核就轉到相應的設備驅動例程來操縱。 調用基本接口函數都需要驅動程序的fileoperations結構成員指向open(),read(),write(),release()等函數,實現了xxx_fops結構體內的各個入口點函數后,編寫設備驅動程序初始化函數,并在內核啟動時注冊此函數,完成硬件設備的初始化設置。初始化程序片斷如下: voidinitexxxdevice(viod){ /檢查硬件設備是否存在,如果存在進行硬件設備內部寄存器初始化 if(result=registerchrdev(254,"xxxdevice",&xxxefops)) printk("Error:%dinitxxx_device()can'tgetMajorln",result); } 設備初始化函數中調用函數registerchrdev()來完成注冊字符,函數形式如下: intregisterchrdev(unsignedintmajor,constchar*name,structfileoperations*fop); fops是指向實現的fileoperations結構體的操作指針。根據這些參數,采用如下命令,在/dev下創建該設備文件名。 mknod/dev/xxxdevicec2540。 主機通信程序流程如圖7所示。MEGAl28從機程序的流程圖如圖8所示。 3 結束語 該系統設計是對嵌入式技術與理論的拓展和應用,是對NETCON網絡化控制系統的升級與改進,實現了對電機控制系統實時監控多路電機的狀態,并且可以控制任一路電機的轉速與相位。實現了單片機與ARM系列處理器之間的通信,解決了利用ARM處理器實現電機控制CPU工作效率低的問題。該方案經過測試應用效果良好,大大提高了CPU的工作效率。但電機的測速精度還有待進一步提高,PWM調速范圍有待進一步加大,還需進一步優化程序,提高整個系統的實時性。 |