林超凡,黃繼業 ,方 舟
(杭州電子科技大學電子信息學院,杭州310018)
工業顯示屏已被廣泛用于工業控制。由于工程機械產品的操作環節、功能、要求顯示內容以及通訊接口的差別,導致對工業顯示屏的選擇也有所不同,這種選擇上的差異直接影響了產品設備的標準化。現有的工業顯示屏控制器無法做到支持分布式控制和實時控制,對于遠距離液晶工業顯示屏無法做到精確控制,功能具有局限性,信息傳輸的復雜繁瑣造成效率的降低。
CAN 是控制器局域網(Controller Area Network)的簡稱,是德國Bosch 公司為汽車應用開發的,一種能有效支持分布式控制和實時控制的串行通訊網絡,屬于現場總線范疇,具有成本低、可靠性高、抗干擾能力和實時性強等特點。基于CAN 總線即可實現工業顯示屏在控制、分辨率、傳輸距離等方面的優化。
該研究是一種基于CAN 總線的高分辨率的高性能智能工業顯示屏控制器,包括內部處理器和外部與其相連的顯示屏、控制鍵和數字輸入鍵以及通訊接口模塊。整個系統可以實現工業顯示屏與各種具有CAN 的電氣設備的連接(本文在討論中以外部STM32 代表具有CAN 的電氣設備進行論述),通過現場總線CAN 傳輸數據來實現智能工業顯示屏所顯示的文本及圖形的動態顯示,在顯示不同的信息時,只需下載對應的文本驅動程序就可以快速、動態地顯示大量文本及簡單圖形文件,無需大量的編程過程,給控制帶來許多方便[1],控制器的系統框圖如圖1 所示。

圖1 系統總體框架
控制器的工作流程也如圖1 所示,CAN 總線提供了能有效支持分布式控制和實時控制的串行通訊網絡,STM32 單片機通過其自帶的CAN 總線接口和外部的CAN 收發電路,接收來自外部設備發來的命令集即我們給出的控制信息,經過內部程序控制數據運算、轉換后,數據通過STM32 內部的FSMC(可變靜態儲存控制器)接口發送給FPGA,FPGA 已設定好的各種模塊開始工作,將數據傳送給SDRAM,同時LCD 也由FPGA 取讀SDRAM 內部的數據并顯示。
CAN 總線是一種多主方式的串行通信總線,總線通訊介質采用雙絞線、同軸電纜和光導纖維,通信接口簡單。最大通訊距離可達10 km,最大通訊波特率可達1 Mbod/s。CAN 網絡上的節點信息分成不同的優先級,可滿足不同的實時要求。采用非破壞性總線仲裁技術,仲裁采用11 位標識和非破壞性位仲裁總線結構機制,可以確定數據塊的優先級,保證在網絡節點沖突時最高優先級節點不需要沖突等待。采用短幀結構,傳輸時間短且受干擾概率低。
CAN 總線支持時間觸發通信功能,發送部分有3 個發送郵箱、記錄發送SOF 時刻的時間戳,發送報文的優先級特性可軟件配置。接收部分為3 個深度的2 個接收FIFO、14 個位寬可變的過濾器組、標識符列表、FIFO 溢出處理方式可配置、記錄接收SPF時刻的時間戳。可支持時間觸發通信模式下有禁止自動重傳模式、16 位自由運行定時器、定時器分辨率可配置還可在最后2 個數據字節發送時間戳[2-3]。
CAN 總線采用多主競爭式總線結構具有多主站運行和分散仲裁的串行總線以及廣播通信的特點。獨特的多點發送部分主次順序實現了自由通信。本系統中該CAN 總線處理單元存在于發送端的STM32 單片機中,我們需要對此STM32 單片機進行函數構造,編寫各種函數來解碼鍵盤輸入的控制指令,將其解碼為相應代碼,顯示對應圖形,每個函數調用一個CAN 發送函數,對解碼后的數據通過CAN 總線發送到內部處理器的STM32 進行處理。指令發送端的CAN 與內部處理器的通信圖如圖2所示。

圖2 STM32 之間的通信圖
本系統使用的控制芯片是STM32F103VET6,起到數據的處理轉化作用。芯片自帶512 kbyte 的片上Flash 和48 kbyte 的RAM。該芯片片上外設豐富,自帶了3 個普通定時器和一個高級定時器、2 個SPI 接口、5 個USART 接口以及最大驅動電流可達80 mA 的IO 口。芯片在哈佛架構上最高工作頻率達到72 MHz,其16 通道的12 bit AD 最快到達0.11 μs 的采樣周期,能快速地對各種信號量進行測量。其內部集成的DMA(直接寄存器存取),使用此功能進行簡單的配置實現外設、Memory、寄存器等兩兩之間的自由存取,可以減少CPU 的時鐘周期操作、提高時鐘效率,從而大大增強了系統的實時性與可靠性,同時功耗大為降低。
系統用到兩片STM32,一片存在于外部鍵盤指令讀取并發送的發送端,歸為CAN 總線單元;另一片分配在內部處理器中,主要用于接收CAN 總線的指令并通過液晶屏驅動程序來處理指令,其主要軟件程序為CAN 接收程序和液晶屏的驅動顯示程序。通過將顯示屏初始化,將各個像素點關聯到繪點程序里,通過STM32 取讀CAN 總線的信息來控制其亮滅來達到文字圖像的顯示[4-8]。兩片STM32 之間的通信如圖2 所示。
FPGA 采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB、輸出輸入模塊IOB 和內部連線3 個部分。FPGA 屬可編程器件,其利用小型查找表來實現組合邏輯,每個查找表連接到一個D 觸發器輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成即可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊。
FPGA 的邏輯是通過向內部靜態存儲單元加載編程數據來實現的,通過存儲在存儲器單元中的值決定邏輯單元的邏輯功能以及各模塊之間的連接方式來實現控制。本控制器為內部處理器部分在FPGA 配置一個外部SDRAM 來暫存數據。為防止數據過多、FPGA 內存不夠,實現屏幕顯示連續性,必須要保證LCD 對SDRAM 取讀的最大優先級,以及保證LCD 顯存始終存在數據。由于SDRAM 不能同時雙向通訊,為了達到目的,本系統中由FPGA 內部FIFO 接收來自經過單片機處理后的數據,通過SDRAM 控制器發送到SDRAM 儲存,實現控制功能時,由另一個FIFO 從SDRAM 中取讀數據來對LCD進行控制[9-11]。FPGA 內部流程如圖3 所示。

圖3 FPGA 內部流程圖
為FPGA 配置一塊串行Fl ash 配置芯片EPCS1,用于保存FPGA 的配置信息,以防掉電后FPGA 內部的配置信息丟失,使FPGA 在上電時從其中讀取配置內容,避免斷電后需要重新配置的麻煩。LCD控制器輸出口配置一個廣泛用于液晶顯示屏接口的一種信號傳輸模式LVDS(低壓差分信號)。
因為發送和接收模塊的軟件處理大體類似,所以本文僅提出CAN 發送模塊的軟件處理,其主要包括上電復位進行設置、通道設置判斷、設置發送幀信息、發送數據等。其數據的初始化與發送軟件流程圖如圖4 所示[12]。其發送模塊程序為:
TestStatus CAN_TxData(char data)
{
CanTxMsg TxMessage;
u32 i = 0;
u8 TransmitMailbox = 0;
/* u32 dataLen;
dataLen = strlen(data);
if(dataLen >8)
dataLen = 8; * /
/* transmit 1 message 生成一個信息* /
TxMessage.StdId=0x00;//設定標準標識符
TxMessage.ExtId=0x1234;//設定擴展標識符
TxMessage.IDE=CAN_ID_EXT;//設定消息標識符的類型
TxMessage.RTR=CAN_RTR_DATA;//設定待傳輸消息的幀類型
/* TxMessage.DLC= dataLen;
for(i=0;i<dataLen;i++)
TxMessage.Data[i]= data[i]; * /
TxMessage.DLC= 1;//設定待傳輸消息的幀長度
TxMessage.Data[0]= data;//包含了待傳輸數據
TransmitMailbox = CAN_Transmit(&TxMessage);//開始一個消息的傳輸
i = 0;
while((CAN_TransmitStatus(TransmitMailbox)!= CA
NTXOK)&&(i != 0xFF))//通過檢查CANTXOK 位來確認發送是否成功
{i++;
}
return(TestStatus)ret;}

圖4 CAN 發送軟件流程圖
系統使用C 語言編寫單片機程序,主要包括系統初始化以及各種基礎配置、判斷是否接收數據、數據處理以及數據發送。指令鍵入端的STM32 軟件框圖如圖5 所示,屬于CAN 接口控制范圍的相應內容已列在§3.1,內部處理器的STM32 軟件框圖如圖6 所示。
其中系統初始化包括開啟時鐘、計數中斷、定義串口以及內部與LCD 屏相對應的點陣代碼。

圖5 鍵入端STM32 軟件流程圖

圖6 內部處理器的STM32 軟件流程圖

圖7 系統初步成品
本系統的初步成品如圖7 所示,經實驗測試,該系統能簡單方便地控制液晶顯示屏顯示簡單的文字和圖像,操作時,輸入代碼到接收機,可以從庫中提取指令控制液晶的背景色以及簡單文字圖像的填充色,系統運行部分結果如圖8 所示。真正應用于實際時可以由簡單的文字和圖像組成各種復雜組合圖形,用途廣泛。

圖8 系統運行結果
本系統從基于CAN 總線的創新想法出發,將CAN 總線的優點運用于工業顯示屏的控制上。可以由各種具有CAN 的電子設備驅動,它包括內部處理器、與顯示屏相連的LVDS 接口、控制鍵和數字輸入鍵和其他通訊接口。FPGA 內部的結構獨特,主要可用于大型工業液晶顯示屏的控制。與普通串口屏相比,利用CAN 總線來傳輸和FPGA 的充分利用實現了遠距離、快速地控制并且支持多個設備和高分辨率顯示,配上顯示屏可以嵌入到各類設備中作為顯示裝置,例如電信和網絡機房主機的顯示器、車載顯示器、廣告機(適用于生活小電梯和商用辦公樓這些場合)。整個控制器的性價比高,能有效降低工業成本。
[1] 鄭彥哲.智能工業顯示屏[P].中國專利,CN201199321.2009-02-25.
[2] 李宏梅,佟為明,程樹康.CAN 總線全數字式汽車儀表[J]. 電子器件,2010,33(5):646-650.
[3] 王巖,張福恩.基于CAN 總線的智能測控節點的設計[J]. 電子器件,2000,23(4):267-270.
[4] 劉敬彪. 基于STM32 的自然電位法的研究[J]. 電子器件,2011,34(5):546-548.
[5] 劉軍. 例說STM32[M]. 北京:北京航空航天大學出版社,2011:207-261.
[6] 王永虹,郝立平.STM32 系列ARM Cortex-M3 微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008:225-337.
[7] 張新強.點陣LCD 驅動顯控原理與實踐[M]. 北京:北京航空航天大學出版社,2010:21-56,148-166.
[8] 孫俊喜.LCD 驅動電路、驅動程序設計及典型應用[M].北京:人民郵電出版社,2009:10-12,27-60.
[9] 潘松,黃繼業,潘明. EDA 技術實用教程——Verilog HDL 版(第四版)[M].北京:科學出版社,2010:142-204.
[10] 王金明.數字系統設計與Verilog HDL(第四版)[M].北京:北京電子工業出版社,2011:30-44,102-110.
[11] 夏宇聞.Verilog 數字系統設計教程(第二版)[M]. 北京:北京航空航天大學出版社,2008:140-175,181-188.
[12] 王光旭.基于CAN 總線實現DSP 與ARM 通信[J]. 中國科技信息,2010,23(11):101-102,112.