白宇
摘 要:本設(shè)計以LPC2136微處理器芯片為硬件核心,外擴工業(yè)常用的控制接口、通訊接口以及常用的功能模塊,在實時操作系統(tǒng)uC/OSⅡ下開發(fā)片內(nèi)外設(shè)和外部擴展器件的驅(qū)動。平臺軟件中實現(xiàn)了Modbus協(xié)議棧,可以實現(xiàn)主機和從機的組網(wǎng)通訊。
關(guān)鍵詞:ARM;Modbus;LPC2136;開發(fā)平臺
DOI:10.16640/j.cnki.37-1222/t.2016.06.010
0 引言
隨著硬件開發(fā)水平以及工業(yè)現(xiàn)場工藝水平的提高,工業(yè)現(xiàn)場對工業(yè)儀表提出更高的要求,傳統(tǒng)的51系列單片機因其片內(nèi)資源相對較少,需要擴展的器件較多,大數(shù)據(jù)量的計算完成周期較長,實時性難以控制等不利因素正在被不斷的淘汰,工業(yè)產(chǎn)品為了盡快占領(lǐng)市場,常常把產(chǎn)品的研發(fā)時間壓縮的很短;為了不必每次都從底層做起,設(shè)計了一個基于ARM和Modbus協(xié)議的嵌入式工業(yè)控制開發(fā)平臺。平臺選擇ARM微處理器,加入以IC公司生產(chǎn)的大量片內(nèi)外設(shè),使ARM系列處理器擁有非常優(yōu)良的應(yīng)用性能。在ARM中安裝uC/OSⅡ操作系統(tǒng),并在uC/OSⅡ環(huán)境下開發(fā)可剪裁、可移植的平臺軟件,實現(xiàn)Modbus協(xié)議的主從機通訊。使用此平臺開發(fā)的主機具有較高且可靠的實時性,可組建工業(yè)總線網(wǎng)絡(luò),實現(xiàn)集中控制,靈活性高,維護和升級成本低,易于擴展等優(yōu)點。
1 硬件設(shè)計
(1)器件選擇。平臺硬件主要由高性能ARM、4~20mA電流產(chǎn)生電路、接口隔離、計數(shù)器、數(shù)據(jù)存儲和RS232串口構(gòu)成。其中高性能的ARM采用NXP公司的LPC2xxx系列ARM7中的LPC2136.擁有一個SPI、一個SSP、兩個UART、一個DAC、兩個ADC、256KB的FLASH和32KB的RAM等片內(nèi)外設(shè)。4~20mA電流產(chǎn)生采用AD421芯片配合外圍芯片。接口隔離采用高速電偶合成器6N137和雙向光耦繼電器AWQ210.計數(shù)器采用16位可編程計數(shù)器8254.數(shù)據(jù)存儲采用I?C接口的電源監(jiān)控芯片CAT1025中的E?ROM。RS-232串口采用美信的MAX232。
(2)平臺硬件連接。1)、LPC2136與8254的連接。由于LPC2136沒有總線結(jié)構(gòu),搭建時需要用GPIO來模擬8254的數(shù)據(jù)線和控制信號線。雖然8254是5V供電,但是LPC2136的GPIO口可以承受5V電壓的數(shù)字信號,兩者之間不需要電平轉(zhuǎn)換可以直接連接;2)LPC2136與AD421的連接。AD421是SPI控制方式,為外部接口電路,不可以直接與LPC2136直接連接,因此設(shè)計電源隔離模塊隔離電源,用高速光電耦合器件6N137隔離SPI總線。
2 平臺軟件設(shè)計
為了方便平臺軟件的移植和剪裁,每個模塊都有相應(yīng)的配置文件(頭文件)。配置文件中都定義了宏USE_XXXX,其中,XXXX是模塊的名稱。當(dāng)USE_XXXX標(biāo)志位enable時,是相應(yīng)的功能模塊可以使用,否則模塊disable。
(1)LPC2136片內(nèi)外設(shè)的驅(qū)動。平臺用到的片內(nèi)外設(shè)有UART控制器、I?C控制器、看門狗控制器、SPI控制器、SSP控制器和RTC控制器。其中UART控制器、I?C控制器、SPI控制器和SSP控制器接口采用中斷方式發(fā)送和接收數(shù)據(jù)。在驅(qū)動模塊的配置文件中定義配置參數(shù),通過修改配置參數(shù)的值,來改變驅(qū)動接口函數(shù)的配置。如:在UART0驅(qū)動的配置文件中定義宏RS_485_R0()和RS_485_S0(),就可以使UART0驅(qū)動用于RS-485進行通訊。
(2)可編程計數(shù)器8254的驅(qū)動和應(yīng)用函數(shù)。平臺使用了4片8254芯片。由于LPC2136沒有總線結(jié)構(gòu),采用模擬總線和控制信號的方式。在驅(qū)動的配置文件中,定義了數(shù)據(jù)線D0~D7、CS1~CS2、A0~A1、WR和RD,使用時根據(jù)實際硬件連接修改。配置文件中定義了宏CS1_EN、CS2_EN、CS3_EN和CS4_EN,若其值為1,則對應(yīng)芯片的驅(qū)動可用,否則被屏蔽。如:定義宏CS1_EN為0,片選為CS1的8254芯片驅(qū)動不可用。
用戶應(yīng)用函數(shù)包括:計數(shù)器初始化、儲存計數(shù)器值和讀計數(shù)器值。平臺采用鎖存回讀的方式讀取計數(shù)器8254中的16位計數(shù)值。為保證各個計數(shù)器工作時的一致性,在鎖存計數(shù)器值前,調(diào)用OS_ENTER_CRITICAL()宏定義關(guān)閉中斷和任務(wù)調(diào)度,鎖存結(jié)束調(diào)用OS_EXIT_CRITICAL()宏定義恢復(fù)中斷和任務(wù)調(diào)度。在讀計數(shù)器值時,保存計數(shù)值的緩沖區(qū)可能被其他任務(wù)操作,為了保證臨界代碼段的完整性,同時使用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()宏定義。
(3)CAT1025中E?ROM的讀寫函數(shù)。CAT1025中E?ROM的讀寫函數(shù)是在I?C驅(qū)動函數(shù)的基礎(chǔ)上編寫的,通過修改配置文件中的宏定義I?CWrite和I?CRead的值來確定使用I?C0或I?C1控制器。根據(jù)CAT1025的特性,讀操作時只有確定起始地址和數(shù)據(jù)個數(shù)即可,而寫操作采用頁寫模式,本設(shè)計的寫CAT1025中E?ROM的操作函數(shù)實現(xiàn)一次寫任意頁面、任意地址和不限數(shù)量的功能,用戶不必考慮換頁問題。
(4)Modbus協(xié)議的實現(xiàn)。采用ModbusRTU協(xié)議,實現(xiàn)從機協(xié)議棧和主機協(xié)議棧部分。通過修改協(xié)議棧的配置文件,可把控制器設(shè)置為主機、從機或即為主機又為從機。主機物理層使用LPC2136的UART1,從機物理層使用LPC2136的UART0,根據(jù)協(xié)議棧的主從機設(shè)備描述信息初始化UART的波特率、停止位、奇偶校驗,實現(xiàn)RS-232或RS-485通訊。主從機協(xié)議棧主要實現(xiàn)了讀線圈、讀離散量輸入、讀保持寄存器、讀輸入寄存器、寫單個線圈、寫多個線圈和寫多個寄存器的功能。通過修改配置文件,可以確定使用哪些功能。
3 結(jié)束語
ARM的迅速發(fā)展,使其逐漸取代了傳統(tǒng)51單片機在工業(yè)儀表中的應(yīng)用。本文介紹了基于ARM和Modbus協(xié)議的嵌入式工業(yè)儀表控制器開發(fā)平臺,硬件設(shè)計合理,工作可靠,軟件采用先進技術(shù),移植和裁剪方便,通用Modbus協(xié)議,使儀表通訊可靠,并可組建工業(yè)網(wǎng)絡(luò),具有實用價值,是工業(yè)儀表控制器的可靠平臺。
參考文獻:
[1]周立功.深入淺出ARM7-LPC213x/LPC214x(上冊)[K].北京:北京航天航空大學(xué)出版社,2005.
[2][美]Jean J.Labrose著,邵貝貝等譯.嵌入式實時操作系統(tǒng)uC/OS-Ⅱ(第二版).北京:北京航天航空出版社,2003.
[3]Modbus協(xié)議,http://www.chinakong.net.