馮 寧, 涂 撰, 華 金, 許安靜, 沈洪濱
(上海船舶運(yùn)輸科學(xué)研究所 艦舶自動化分析,上海 200135)
基于AT91SAM9G45微處理器的便攜式人機(jī)界面軟硬件實(shí)現(xiàn)
馮 寧, 涂 撰, 華 金, 許安靜, 沈洪濱
(上海船舶運(yùn)輸科學(xué)研究所 艦舶自動化分析,上海 200135)
在研究船舶動力定位系統(tǒng)的過程中,研制一款便攜式人機(jī)界面——單手柄操作板,主要介紹其硬件電路板現(xiàn)場處理模塊的軟件及硬件的設(shè)計實(shí)現(xiàn)過程。采用AT91SAM9G45嵌入式微處理器作為硬件電路的核心,根據(jù)單手柄操作板的人機(jī)交互操作需求和系統(tǒng)通信需求擴(kuò)展多種功能接口電路。為便于應(yīng)用程序的二次開發(fā),引入Windows CE 6.0嵌入式操作系統(tǒng),開發(fā)各種接口驅(qū)動程序。研制的單手柄操作板具有JoyStick操縱桿、按鈕、指示燈和旋轉(zhuǎn)編碼開關(guān)旋鈕等操作接口,支持液晶顯示屏圖形化顯示,其功能、性能和重量均能滿足便攜式、移動操作的要求。
嵌入式;便攜式;人機(jī)界面;AT91SAM9G45;Windows CE
近年來,配置液晶顯示屏的人機(jī)界面越來越多地在船舶自動化系統(tǒng)集成領(lǐng)域中得到應(yīng)用,相較于早期采用8段數(shù)碼管和單點(diǎn)發(fā)光二極管系統(tǒng)定制的模擬屏,液晶顯示人機(jī)界面具有顯示直觀、色彩豐富和編輯靈活等優(yōu)勢。市場上常見的工業(yè)級液晶顯示人機(jī)界面通常都會配置以太網(wǎng)接口和RS485串行通信接口,卻很少配置控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)現(xiàn)場總線接口,若系統(tǒng)集成中還需具備開關(guān)量和模擬量接口,則需硬件定制。
船舶自動化硬件產(chǎn)品的發(fā)展方向是輕量型、小型化和一體化,高性能、低功耗嵌入式微處理器和專用集成電路芯片的發(fā)展為硬件產(chǎn)品輕量型、小型化奠定了基礎(chǔ)。在由上海船舶運(yùn)輸科學(xué)研究所承擔(dān)的船舶動力定位系統(tǒng)科研項(xiàng)目中,需研制一款便攜式人機(jī)界面單手柄操作板,單手柄操作板不僅支持臺面嵌入式安裝方式,還可作為便攜式設(shè)備有線連接移動到駕駛室外操縱,對設(shè)備的功耗和質(zhì)量提出較高的要求,為此新研制的便攜式人機(jī)界面的硬件電路板稱為現(xiàn)場處理模塊。
根據(jù)動力定位系統(tǒng)的硬件需求,并兼顧其他系統(tǒng)集成應(yīng)用中的接口需求,現(xiàn)場處理模塊具有LCD液晶顯示屏接口、LED指示燈接口、陣列掃描按鍵接口、開關(guān)量輸入/輸出接口、模擬量電壓(DC -5.0~+5.0 V)輸入接口、RS232/RS485串行通信接口、CAN現(xiàn)場總線接口(2路)和10 M/100 M以太網(wǎng)接口(2路)?,F(xiàn)場處理模塊的硬件原理框圖見圖1。
現(xiàn)場處理模塊的核心處理器選用ATMEL公司生產(chǎn)的AT91SAM9G45嵌入式微處理器,ARM926-EJS內(nèi)核,主頻400 MHz,片內(nèi)集成64 Kbytes SRAM存儲器和64 Kbytes ROM存儲器,具有豐富的外設(shè)接口,包括4路UART接口(支持RS485通信模式)、2路SPI接口、2路I2C接口、2路SSC接口、4路LIN接口、1路USB OTG接口、1路高速USB Host接口、1路10M/100M以太網(wǎng)MAC接口、2路SD/MMC高速存儲卡接口、4路PWM接口、8路10位A/D接口(可連接電阻式觸摸屏)及LCD控制器接口(最大分辨率1 280×860)等,寬溫度范圍為-40~85 ℃,適用于實(shí)現(xiàn)工業(yè)通信網(wǎng)關(guān)、PLC和I/O模塊、自動化儀表和電量表等設(shè)備,被廣泛應(yīng)用于工業(yè)測控、電力、鐵路、通信、醫(yī)療、能源和環(huán)保等領(lǐng)域中。
考慮到其他項(xiàng)目需要實(shí)現(xiàn)2路10M/100 M以太網(wǎng)接口的雙冗余熱備份功能,未使用AT91SAM9G45處理器內(nèi)部集成的以太網(wǎng)控制器,而是在處理器外部擴(kuò)展了2片DAVICOM公司生產(chǎn)的DM9000CIEP工業(yè)級以太網(wǎng)接口芯片,以便于未來在驅(qū)動層實(shí)現(xiàn)雙以太網(wǎng)鏈路故障檢測和快速切換。DM9000CIEP芯片內(nèi)部集成了以太網(wǎng)媒體介質(zhì)訪問層(Media Access Control, MAC)和物理層的功能,內(nèi)部帶有16 K字節(jié)SRAM用作接收和發(fā)送的FIFO緩存,支持8位和16位總線模式,10 ns I/O讀寫時間,具有HP認(rèn)證的AUTO-Mdix功能,支持TCP/IP加速功能以減輕CPU負(fù)擔(dān)、提高整機(jī)效能,具有性價比高、封裝尺寸小和引腳數(shù)量少等優(yōu)點(diǎn)。
CAN現(xiàn)場總線接口控制器選用2片Microchip公司生產(chǎn)的MCP2515芯片實(shí)現(xiàn),完全支持CAN V2.0B技術(shù)規(guī)范,并具有符合工業(yè)標(biāo)準(zhǔn)的10 MHz高速SPI串行接口,是目前市場上體積小、接口靈活和開發(fā)便捷的獨(dú)立CAN控制器芯片。
現(xiàn)場處理模塊的硬件結(jié)構(gòu)設(shè)計采用核心板+功能擴(kuò)展底板的形式實(shí)現(xiàn),選擇2.0 mm間距的4×25Pin直插型板級連接器,結(jié)構(gòu)牢固耐用,有很強(qiáng)的插拔力保障。現(xiàn)場處理模塊的核心板通過AT91SAM9G45微處理器的EBI0并行總線擴(kuò)展2片64 MB DDR2 SDRAM存儲器,其總線時鐘頻率達(dá)到133 MHz,屬于高速PCB設(shè)計,必須遵循等長布線和差分布線規(guī)則,并進(jìn)行阻抗匹配試驗(yàn);通過EBI1并行總線擴(kuò)展256 MB NAND FLASH存儲器和16 MB NOR FLASH存儲器,同時將2路以太網(wǎng)接口芯片DM9000CIEP掛載到EBI1并行總線上。
現(xiàn)場處理模塊核心板和底板實(shí)物見圖2。
現(xiàn)場處理模塊的軟件架構(gòu)見圖3,基礎(chǔ)軟件包括Windows CE 6.0嵌入式操作系統(tǒng)和硬件相關(guān)驅(qū)動程序,基于ATMEL公司發(fā)布的Windows CE 6.0 BSP(板級支持包)進(jìn)行操作系統(tǒng)與驅(qū)動程序的移植和開發(fā)?,F(xiàn)場處理模塊未使用AT91SAM9G45處理器內(nèi)部集成的以太網(wǎng)控制器,且改用鎂光公司生產(chǎn)的工業(yè)級大容量NAND FLASH和NOR FLASH芯片,因此需對BSP進(jìn)行了大量的移植工作。Microchip公司不提供MCP2515芯片在Windows CE 6.0嵌入式操作系統(tǒng)下的驅(qū)動,需客戶自主開發(fā)驅(qū)動程序;A/D模數(shù)轉(zhuǎn)換芯片選用凌力爾特公司的LTC185X,也需客戶自主開發(fā)驅(qū)動程序。
“云南省云嶺牛種源供應(yīng)充足,已建成國家級云嶺牛核心育種場1個,擴(kuò)繁場6個,存欄純種母牛1546頭、純種公牛133頭,年供種能力達(dá)850頭以上,年可提供凍精100萬劑以上。目前,全省存欄純種云嶺牛7583頭,其中,種公牛1380頭、純種母牛6203頭?!痹颇鲜∞r(nóng)業(yè)廳負(fù)責(zé)人介紹。
Windows CE 6.0嵌入式操作系統(tǒng)的開發(fā)環(huán)境為Platform Builder 6.0,以插件形式疊加安裝在Visual Studio 2005 SP1集成開發(fā)環(huán)境上。操作系統(tǒng)剪裁、驅(qū)動程序開發(fā)和應(yīng)用程序開發(fā)調(diào)試都在Platform Builder 6.0集成開發(fā)環(huán)境下完成;應(yīng)用程序的開發(fā)在Visual Studio 2005 SP1集成開發(fā)環(huán)境中進(jìn)行。
2.1 以太網(wǎng)驅(qū)動移植
對于現(xiàn)場處理模塊的Windows CE 6.0操作系統(tǒng)移植,首先要解決的是以太網(wǎng)控制器芯片驅(qū)動程序移植問題,該模塊未使用AT91SAM9G45處理器內(nèi)部集成的以太網(wǎng)控制器,而是擴(kuò)展了2片DM9000CIEP芯片,其中1片DM9000CIEP芯片替代BSP中原有處理器內(nèi)部集成以太網(wǎng)控制器的功能,主要包括E-Boot以太網(wǎng)下載和KITL以太網(wǎng)調(diào)試功能。
DAVICOM公司為Windows CE 5.0操作系統(tǒng)提供有獨(dú)立的驅(qū)動程序包;ATMEL公司的早期產(chǎn)品ATM91SAM9261處理器內(nèi)部未集成以太網(wǎng)控制器,官方推薦搭配DAVICOM公司的DM9000EP芯片使用,并提供包含DM9000EP芯片驅(qū)動的Windows CE 6.0板級支持包。ATMEL公司這2款處理器的BSP都是由Adeneo公司[2]開發(fā)的,BSP架構(gòu)具有繼承性,因此可將ATM91SAM9261處理器BSP中的DM9000EP芯片驅(qū)動平行移植到AT91SAM9G45處理器BSP中,移植工作涉及到PBCXML組件配置文件、BIB二進(jìn)制鏡像構(gòu)建文件、REG注冊表文件、GPIO配置代碼、EBI總線時序配置代碼、中斷處理程序代碼、KITL相關(guān)代碼等。進(jìn)一步閱讀數(shù)據(jù)手冊,比較DM9000EP芯片與DM9000CIEP芯片的區(qū)別,并相應(yīng)修改驅(qū)動代碼,完成驅(qū)動程序的移植。
第2路以太網(wǎng)在操作系統(tǒng)啟動后才投入使用,參考DM9000芯片驅(qū)動發(fā)布說明文檔改寫注冊表文件(見圖4),即可用一套DLL驅(qū)動程序支持2路DM9000芯片。然而,重新編譯、燒寫及運(yùn)行操作系統(tǒng)鏡像,用2臺計算機(jī)同時PING 2路以太網(wǎng)接口,只有第2路以太網(wǎng)接口能始終PING通,第1路以太網(wǎng)接口只是偶爾能PING通。經(jīng)調(diào)試排查,問題出現(xiàn)在中斷初始化程序上,2片DM9000芯片的中斷引腳都連接到處理器的A組GPIO引腳上,而BSP默認(rèn)將GPIO引腳的中斷配置為為電平敏感模式,導(dǎo)致只有一路中斷標(biāo)記會被處理,另一路中斷標(biāo)記得不到處理。修改中斷初始化函數(shù)“BOOL OALIntrInit()”,將A組GPIO引腳的中斷配置為邊沿敏感模式,這樣2路以太網(wǎng)接口可同時正常工作。
為實(shí)現(xiàn)現(xiàn)場處理模塊的批量化生產(chǎn),硬件設(shè)計中2片DM9000CIEP芯片都外掛有93C46 EEPROM芯片,每片DM9000CIEP芯片都具有全球唯一的MAC地址,MAC地址和初始化配置信息用編程器寫入到EEPROM芯片中,再焊接到電路板上。刪除以太網(wǎng)驅(qū)動“sources”文件的“-D"NOEEPROM"”預(yù)編譯宏,重新編譯驅(qū)動和操作系統(tǒng)鏡像,下載到目標(biāo)機(jī)中運(yùn)行,用以太網(wǎng)抓包工具截獲ARP報文,即可看到寫入EEPROM芯片的MAC地址已被應(yīng)用。
2.2 SPI總線驅(qū)動移植
在現(xiàn)場處理模塊中,2片CAN現(xiàn)場總線控制器芯片MCP2515和A/D轉(zhuǎn)換芯片LTC185X與處理器的通信都依賴于SPI總線接口。AT91SAM9G45處理器集成有2個SPI總線控制器,每個SPI總線控制器都有4個NPCS片選信號引腳,硬件控制方式最多支持連接8個SPI從設(shè)備。在現(xiàn)場處理模塊的硬件設(shè)計,SPI0_NPCS1和SPI1_NPCS0用于片選2片MCP2515,而SPI0_NPCS2用于片選LTC185X。由于有多個設(shè)備需復(fù)用SPI總線控制器,因此SPI總線驅(qū)動程序必須是一個獨(dú)立的、可供高層驅(qū)動程序調(diào)用的基礎(chǔ)驅(qū)動程序,且要保證多個高層驅(qū)動訪問同一個SPI總線控制器時的資源互斥。
AT91SAM9G45處理器的Windows CE6.0 BSP沒有包含完整的SPI驅(qū)動程序,橫向?qū)Ρ華deneo公司為AT91SAM系列處理器開發(fā)的多個BSP包發(fā)現(xiàn),AT91SAM9263處理器的Windows CE5.0 BSP中包含完善的SPI總線驅(qū)動程序,可將該驅(qū)動程序移植到AT91SAM9G45處理器的Windows CE6.0 BSP中。進(jìn)一步研究移植過來的SPI驅(qū)動發(fā)現(xiàn),AT91SAM9263處理器只集成有1個SPI控制器,因此SPI驅(qū)動中只定義了1個“g_hSemaphore”信號量,以保證多個驅(qū)動同時請求使用SPI控制器時的資源互斥。此外,為適應(yīng)AT91SAM9G45處理器2個SPI控制器的硬件架構(gòu),將互斥信號量“g_hSemaphore”改成句柄數(shù)組“g_hSemaphore[2]”,并修改信號量創(chuàng)建、搶占、銷毀相關(guān)代碼和驅(qū)動初始化代碼,以滿足對2個SPI控制器的互斥資源保護(hù)。
至此,通過修改注冊表文件可靈活裁減操作系統(tǒng)中運(yùn)行的SPI設(shè)備驅(qū)動實(shí)例,現(xiàn)場處理模塊在操作系統(tǒng)啟動后自動創(chuàng)建3個SPI驅(qū)動設(shè)備,其中:“SPI0:”和“SPI1:”用于訪問2片MCP2515芯片;“SPI4:”用于訪問LTC185X芯片。
移植過來的SPI驅(qū)動中還包含有ADS7843四線制電阻觸摸屏A/D轉(zhuǎn)換接口芯片的驅(qū)動程序,通過調(diào)用SPI驅(qū)動的“IOControl()”函數(shù)代入特定控制字“IOCTL_SPI_TRANS_ ADS7843”來訪問ADS7843芯片;LTC185X芯片的驅(qū)動程序也采用該方式開發(fā)。LTC185X芯片是一款真雙極性輸入A/D轉(zhuǎn)換芯片,支持0~5.0 V,0~10.0 V,-5.0~5.0 V和-10.0~10.0 V等4種量程的單端或差分信號輸入,其SPI通信協(xié)議比較簡單,輸入數(shù)據(jù)只有8個字節(jié)(包含單端/差分模式選擇、信號極性選擇、通道選擇、量程選擇和省電模式選擇等信息),跟隨本次輸入數(shù)據(jù)返回的輸出數(shù)據(jù)是上一次輸入數(shù)據(jù)設(shè)置和轉(zhuǎn)換的結(jié)果。由此,應(yīng)用程序可通過打開“SPI4:”驅(qū)動,調(diào)用“IOControl()”函數(shù)并代入“IOCTL_SPI_TRANS_LTC185X”控制字來讀取各通道的A/D轉(zhuǎn)換結(jié)果。
2.3 CAN總線接口驅(qū)動開發(fā)
CAN總線接口芯片MCP2515在Windows CE 6.0操作系統(tǒng)下的驅(qū)動程序構(gòu)建于SPI驅(qū)動程序之上,需完全自主開發(fā)。
1) 需搭建一個CAN驅(qū)動框架,并在BSP的“SRCDRIVERS”目錄下新建一個“MCP2515CAN”驅(qū)動文件夾,在該文件夾下新建“mcp2515.cpp”和“mcp2515_can.cpp”驅(qū)動源文件及其頭文件;同時,建立源文件及其頭文件對應(yīng)于源文件和頭文件的makefile編譯規(guī)則文件、“MCP2515_CAN.def”接口定義文件、“MCP2515_CAN.reg”注冊表文件和sources文件等,編譯器將根據(jù)makefile文件和sources文件編譯生成“at91sam9g45m10ek_mcp2515can.dll”驅(qū)動庫文件。
2) 需在操作系統(tǒng)的PBCXML,BIB和REG文件中增加“MCP2515CAN”驅(qū)動項(xiàng)目,從而在Platform Builder集成開發(fā)環(huán)境中裁剪CAN驅(qū)動程序,并在打包內(nèi)核鏡像時包含CAN驅(qū)動程序。
MCP2515驅(qū)動設(shè)計成2層結(jié)構(gòu),其中:上層驅(qū)動“mcp2515_can.cpp”實(shí)現(xiàn)“MCP2515_CAN.def”文件中定義的驅(qū)動程序需導(dǎo)出的流接口函數(shù),包括“Open”“Close”“Read”“Write”及“IOControl”等;下層驅(qū)動“mcp2515.cpp”用C++語言編寫,定義一個“MCP251xClass”類,組員變量定義接收環(huán)形緩沖結(jié)構(gòu)數(shù)組、SPI設(shè)備句柄、中斷線程句柄及接收和發(fā)送中斷事件句柄等,組員函數(shù)定義打開/關(guān)閉SPI設(shè)備(“SPI0:”和“SPI1:”)驅(qū)動、SPI通信讀/寫MCP2515寄存器和MCP2515芯片相關(guān)操作(復(fù)位、初始化、睡眠、喚醒、波特率設(shè)置、濾波器設(shè)置及發(fā)送和接收)等函數(shù)。采用C++語言實(shí)現(xiàn)下層驅(qū)動,可完全規(guī)避下層驅(qū)動被2個上層CAN驅(qū)動同時調(diào)用的可重入性問題;上層驅(qū)動被應(yīng)用程序打開一次,對應(yīng)就創(chuàng)建一個下層驅(qū)動的“MCP251xClass”類,自動維護(hù)MCP2515芯片中斷方式的數(shù)據(jù)接收和發(fā)送動作。
為驗(yàn)證CAN驅(qū)動程序的功能和性能,設(shè)計一個測試程序界面(見圖5),來測試MCP2515芯片的所有功能。經(jīng)過功能測試和壓力測試,新編寫的CAN驅(qū)動程序能滿足動力定位系統(tǒng)中CAN現(xiàn)場總線通信的需求。
基于Windows CE 6.0嵌入式操作系統(tǒng)的現(xiàn)場處理模塊基礎(chǔ)軟件,實(shí)現(xiàn)以太網(wǎng)驅(qū)動、SPI驅(qū)動(包括A/D驅(qū)動)、CAN總線接口驅(qū)動、RS232驅(qū)動、RS458驅(qū)動、開關(guān)量輸入/輸出接口驅(qū)動、PWM驅(qū)動(用于LCD背光調(diào)節(jié))、陣列掃描鍵盤驅(qū)動和LED指示燈驅(qū)動等,應(yīng)用程序可通過調(diào)用API函數(shù)來訪問和控制各種硬件的接口及其功能。
為船舶動力定位系統(tǒng)項(xiàng)目研制的單手柄操作板由現(xiàn)場處理模塊、JoyStick操縱桿、旋轉(zhuǎn)編碼開關(guān)(Encode Switch)板、按鍵指示燈面膜和操作板面板殼體等部件組成。
1) JoyStick操縱桿具有3個(x方向、y方向和艏向)帶零位輸出的電位器接口,現(xiàn)場處理模塊為其提供+5 V,GND和-5 V的電壓基準(zhǔn),3個電位器中心抽頭連接到現(xiàn)場處理模塊的模擬量電壓輸入接口。
2) 旋轉(zhuǎn)編碼開關(guān)板上配置1片STM32F103嵌入式微控制器,可實(shí)時檢測旋鈕的轉(zhuǎn)向和位置,通過RS232串行通信接口將旋鈕操作動作傳送給現(xiàn)場處理模塊。
3) 按鍵指示燈面膜貼敷在操作板殼體面板上,通過排線連接到現(xiàn)場處理模塊。
組裝完成的單手柄操作板見圖6,設(shè)備總重約2.3 kg,可選擇安裝背帶,掛在操作人員胸前進(jìn)行便攜式操作。
本文主要介紹一款適用于船舶動力定位系統(tǒng)的單手柄操作板,根據(jù)人機(jī)交互操作需求和系統(tǒng)通信需求設(shè)計實(shí)現(xiàn)現(xiàn)場處理模塊的硬件,并移植Windows CE 6.0嵌入式操作系統(tǒng)和硬件相關(guān)驅(qū)動。一體化的單手柄操作板具有JoyStick操縱桿、按鈕、指示燈和旋轉(zhuǎn)編碼開關(guān)旋鈕,支持液晶顯示屏圖形化顯示,其功能、性能和重量均能滿足便攜式設(shè)備的要求,具有體積小、外形美觀和操作方便等優(yōu)點(diǎn)。
[1] Atmel Corporation. AT91SAM ARM-based Embedded MPU SAM9G45 Datasheet[M]. San Jose: Atmel Corporation, 2013.
[2] Adeneo Embedded. WINDOWS CE 6.0 Port on AT91SAM9G45M10EK Technical Design Document[M]. Seattle: Adeneo Embedded, 2010.
[3] 周建設(shè). Windows CE設(shè)備驅(qū)動及BSP開發(fā)指南[M]. 北京:中國電力出版社, 2009.
The Software and Hardware of Portable HMI Based on AT91SAM9G45 Microcontroller
FENGNing,TUZhuan,HUAJin,XUAnjing,SHENHongbin
(Ship Automation Branch, Shanghai Ship & Shipping Research Institute, Shanghai 200135, China)
A portable Human-Machine Interface, named Joystick Operation Panel is developed for the Field Processing Module in a marine Dynamic Positioning System. This paper mainly introduces the hardware and software design of the Field Processing Module. The AT91SAM9G45 microcontroller is used as the core of the hardware circuit, and the functional interface circuits are extended according to the human-machine operation and communication requirements for the Joystick Operation Panel. For convenience of secondary development of applications, Windows CE 6.0 embedded operating system is ported, and a variety of interface drivers are migrated or developed. The final Joystick Operation Panel has the interface for a Joystick, buttons, indicator lights and a rotary encode switch knob. It also supports an LCD graphical display.
embedded; portable; HMI; AT91SAM9G45; Windows CE
2016-10-17
馮 寧(1980—),男,天津人,副研究員,碩士,主要從事船舶機(jī)艙自動化產(chǎn)品的開發(fā)。
1674-5949(2017)01-0047-06
U664.8
A