萬國春, 司玉棟, 童美松
(同濟大學(xué)電子與信息工程學(xué)院,上海 201804)
通過紅綠藍三基色混合實現(xiàn)調(diào)色調(diào)光,RGB-LED越來越被廣泛地用于汽車電子行業(yè),例如氛圍燈場景,用以滿足內(nèi)飾要求[1]。傳統(tǒng)的RGB-LED 控制方式包括車內(nèi)按鈕按鍵、中控臺等方式,存在成本較高、使用不便、缺乏體驗感等短處。觸摸串口屏具備響應(yīng)速度高、性能穩(wěn)定和易于維護的特點[2],結(jié)合組態(tài)設(shè)計可以精簡功能開發(fā),提供良好的人機操作界面,使交互性大大提升。
本文結(jié)合組態(tài)設(shè)計思想和嵌入式開發(fā),利用串口通信和LIN原理完成觸控指令到RGB-LED 的控制數(shù)據(jù)定義,基于PWM 實現(xiàn)調(diào)色效果。系統(tǒng)面向汽車電子領(lǐng)域,開發(fā)的觸控系統(tǒng)不僅有助于培養(yǎng)學(xué)生技能而且具有一定的實用價值。
本系統(tǒng)包括串口屏、微控制器模塊和RGB-LED模塊。系統(tǒng)總體方案是首先對串口屏完成組態(tài)設(shè)計,提供人機操作界面(HMI),微控制器模塊接收來自串口屏的觸控指令后進行指令解析,經(jīng)LIN 協(xié)議端口轉(zhuǎn)發(fā)至PWM恒流驅(qū)動模塊,輸出占空比不同的三基色通道驅(qū)動信號,實現(xiàn)RGB-LED的調(diào)光調(diào)色。
其中串口屏組態(tài)設(shè)計面向顯示區(qū)和觸摸區(qū),觸摸區(qū)實現(xiàn)16 種常用顏色觸摸點亮、占空比和亮度輸入點亮;顯示區(qū)則實現(xiàn)對應(yīng)占空比數(shù)據(jù)顯示。組態(tài)設(shè)計基于變量存儲器的規(guī)劃,完成后觸控操作和串口指令實現(xiàn)綁定;微控制器模塊包括中斷模塊和串口/LIN接口模塊,中斷模塊接收串口數(shù)據(jù)進入中斷解析服務(wù),經(jīng)LIN協(xié)議端口轉(zhuǎn)發(fā);RGB-LED 模塊包括PWM 恒流驅(qū)動模塊和燈頭?;诮M態(tài)設(shè)計的車用RGB-LED 觸控實驗系統(tǒng)結(jié)構(gòu)框圖如圖1 所示。
圖1 實驗系統(tǒng)結(jié)構(gòu)框圖
串口屏組態(tài)設(shè)計的主要內(nèi)容是人機交互界面的制作和控件配置,最終實現(xiàn)觸控和參數(shù)指示功能。
選擇DMT10600T102_07WT 電容式觸摸串口屏,即DGUS屏。軟硬件開發(fā)體系如圖2 所示,串口屏采用直接變量驅(qū)動顯示方式,所有的顯示和操作基于預(yù)先設(shè)置好的變量配置文件[3],支持文本、圖標(biāo)、圖形的TFT驅(qū)動顯示。人機交互界面使用組態(tài)軟件進行變量規(guī)劃和具體的控件定義,生成13.bin、14.bin、22.bin文件和config.txt文件,通過SD卡下載工程。
圖2 系統(tǒng)軟硬件開發(fā)體系框圖
串口屏包含F(xiàn)LASH、寄存器、變量存儲器和曲線緩沖區(qū)4 類存儲空間。其中變量存儲器大小為56 KB,地址為0x0000 ~0x6FFF,為用戶自定義變量開發(fā)所使用,服務(wù)顯示變量和格式控制需求。
由于串口屏的工作模式和界面狀態(tài)完全由數(shù)據(jù)變量控制,因此串口指令只需要對變量進行讀、寫即可,指令集一共有5 條指令,即0x80、0x81、0x82、0x83、0x84指令,分別對應(yīng)對寄存器寫、寄存器讀、變量存儲器寫、變量存儲器讀和曲線緩沖區(qū)寫操作,基本實現(xiàn)了用戶“零代碼”完成觸摸屏人機交互[4]。串口指令結(jié)構(gòu)如圖3 所示。
圖3 串口指令結(jié)構(gòu)
系統(tǒng)實現(xiàn)16 種常用顏色觸摸點亮、占空比和亮度輸入點亮和參數(shù)顯示功能。根據(jù)功能需求,定義幀頭為5AA5,利用0x82、0x83 串口指令,即通過對變量存儲器特定地址的數(shù)據(jù)進行讀寫操作,并配合組態(tài)軟件實現(xiàn)開發(fā)。
具體地,首先制作人機交互頁面,頁面包括觸摸區(qū)的常用顏色、占空比輸入框、亮度輸入框和對應(yīng)參數(shù)顯示框。其中,常用顏色利用“同步數(shù)據(jù)返回”控件進行設(shè)置,定義為觸摸色塊則通過串口發(fā)送變量存儲器規(guī)劃地址內(nèi)存儲的數(shù)據(jù),這里規(guī)劃地址為0x000 ~00x000F,對應(yīng)地址存儲數(shù)據(jù)為字符00 ~FF。占空比和亮度輸入控制和顯示則利用“變量數(shù)據(jù)錄入”和“數(shù)據(jù)變量顯示”控件聯(lián)合設(shè)置,定義為輸入有效數(shù)據(jù)后顯示并發(fā)送“5A A5 06 83 00 XX 01 00 YY”的串口指令,指令中XX是30、31、32、33 之一,對應(yīng)字符0、1、2、3,用來區(qū)分三基色和亮度,YY 即輸入的具體數(shù)據(jù)。另外地址和功能標(biāo)號可以在系統(tǒng)初始化時顯示。
HMI組態(tài)設(shè)計界面如圖4 所示,串口屏組態(tài)設(shè)計完成后變量地址和數(shù)據(jù)分配如表1 所示。
表1 變量地址和數(shù)據(jù)分配
圖4 HMI組態(tài)設(shè)計界面
模塊選擇Kinetis EA MCU,其內(nèi)部架構(gòu)如圖5 所示,集成了低功耗Cortex-M0 +內(nèi)核和嵌入式閃存,系統(tǒng)外設(shè)包括電源管理模塊、內(nèi)外振蕩器、低壓檢測、WDG、單周期GPIO 和位操作引擎[5],并且具有支持LIN協(xié)議的UART 接口,脈沖寬度計時器和按鍵中斷模塊。
圖5 Kinetis EA MCU內(nèi)部架構(gòu)
LIN是一種基于UART/SCI的低成本開放式串行通訊總線,是對包括CAN總線在內(nèi)的多種汽車網(wǎng)絡(luò)的補充[6]。報文包括報頭與響應(yīng)兩部分,主機負責(zé)發(fā)送報頭,從機接收報頭并對所含信息進行解析,然后決定是否發(fā)送應(yīng)答。一個完整的LIN 信息幀包括間隔場、同步場、標(biāo)識符場、數(shù)據(jù)場以及校驗和場[7],幀的結(jié)構(gòu)如圖6 所示。其中標(biāo)識符場包括6 位幀ID 和2 位奇偶校驗位,幀ID標(biāo)識了幀的類別和目的地,從機據(jù)此作出接收/發(fā)送/忽略應(yīng)答動作。根據(jù)幀ID 的不同可以將幀分為信號攜帶幀、診斷幀和保留幀[8]。
圖6 LIN幀的結(jié)構(gòu)
本實驗系統(tǒng)利用Kinetis EA64 串行接口1,即UART1 接收串口屏數(shù)據(jù),UART1_BUF 串口緩沖區(qū)暫存數(shù)據(jù),MCU主芯片解析收到的觸控指令后通過RxD_LIN和TxD_LIN引腳經(jīng)附設(shè)的LIN 通信收發(fā)器轉(zhuǎn)發(fā)至RGB-LED模塊。
微控制器附設(shè)LIN通信收發(fā)器電路圖設(shè)計如圖7所示,其核心MC33662LEF 是一款專門用于汽車LIN子總線應(yīng)用的物理層組件[9]。同時,通過LIN 描述文件(LDF)自定義使用幀ID =15,PID =55 的信號攜帶幀點亮RGB-LED。點燈時,恒流驅(qū)動模塊通過PWM方波調(diào)節(jié)占空比來控制LED快速地閃爍點亮,由于人眼具有視覺惰性,當(dāng)PWM 的頻率足夠高,人眼無法察覺閃爍[10-12]。
圖7 微控制器附設(shè)LIN通信接口電路圖
PWM恒流驅(qū)動模塊選擇MLX81108 芯片,LRTB GVSG燈頭。芯片內(nèi)部集成了LIN 收發(fā)器和控制器、穩(wěn)壓器、16 位微控制器,支持16 位電流調(diào)制以及LED色彩與老化補償,具備LIN自動配置功能。
模塊核心電路原理圖如圖8 所示,該模塊接收微控制器模塊發(fā)出的LIN信號之后,連接RGB-LED燈頭的芯片HV0、HV1、HV2 引腳將輸出三基色通道驅(qū)動電流完成點燈。三基色通道驅(qū)動電流大小通過PWM調(diào)制設(shè)定。
圖8 RGB-LED模塊核心電路圖
軟件設(shè)計包括微控制器模塊和RGB-LED 模塊的軟件設(shè)計,目的是微控制器模塊可以實現(xiàn)串口屏數(shù)據(jù)的接收、解析和轉(zhuǎn)發(fā),RGB-LED模塊可以實現(xiàn)PWM驅(qū)動點燈。微控制器模塊的軟件設(shè)計流程如圖9 所示。首先進行CLK、UART、LIN 初始化,完成系統(tǒng)時鐘、串口、LIN 通信的基本設(shè)置,然后對LIN 進度表設(shè)置,確定事件觸發(fā)幀和診斷幀兩種消息格式和相應(yīng)的幀ID,之后開啟UART1 中斷,完成地址初始化顯示,進入中斷等待階段。
圖9 微控制器模塊軟件流程圖
根據(jù)串口屏組態(tài)設(shè)計的結(jié)果,觸控指令與預(yù)定格式的串口指令相對應(yīng)。當(dāng)串口屏觸摸區(qū)被觸摸即發(fā)出組態(tài)設(shè)計時的串口指令,微控制器接收數(shù)據(jù)存入UART1_BUF數(shù)組,然后進行解析轉(zhuǎn)發(fā)。具體過程:數(shù)組將存入以下兩類5 種指令數(shù)據(jù):00 ~FF和5A A5 06 83 00 XX 01 00 YY,其中第6 位XX 為30、31、32、33之一,也就是字符“0”“1”“2”“3”之一,而第9 位YY為具體數(shù)值。然后判斷數(shù)組第1 位和XX,當(dāng)?shù)? 位判得00 ~FF時執(zhí)行16 種常用顏色點亮;判斷XX為“3”時進行亮度調(diào)整,YY 就是亮度值,如果是“0”“1”“2”,YY就是RGB具體值,實現(xiàn)三基色調(diào)光。
微控制器模塊軟件設(shè)計完成后,即可從串口屏觸控數(shù)據(jù)中提取出三基色和亮度值4 個量,最后通過LIN口發(fā)給RGB-LED 模塊,通過PWM 驅(qū)動。RGBLED模塊的軟件設(shè)計較為簡單,其流程圖如10 所示。
圖10 RGB-LED模塊軟件流程圖
系統(tǒng)各模塊完成電性連接并上電后,串口屏HMI正常顯示,可以進行觸控操作,系統(tǒng)預(yù)期功能實現(xiàn),整體實物圖如11 所示。開始進行系統(tǒng)功能測試,首先16 種常用顏色點亮測試,其中綠色點亮效果如圖12所示。
圖11 系統(tǒng)整體實物圖
圖12 綠色點燈
三基色和亮度輸入點燈測試中,顏色和亮度設(shè)置框內(nèi)分別輸入255、0、0、52,即希望點亮紅燈,亮度為52。此時,串口成功收到觸摸屏四條指令,如圖13 中紅綠藍黃矩形框中的指令分別為三基色和亮度控制指令,每條指令最后一位即為輸入數(shù)值的16 進制表示,即FF、00、00、34,實測結(jié)果為成功點亮,如圖14 所示。
圖13 三基色和亮度輸入時發(fā)送的指令
圖14 三基色和亮度輸入點燈
本實驗基于組態(tài)設(shè)計和Kinetis EA 微控制器模塊構(gòu)建了面向車用RGB-LED 的觸控系統(tǒng)。實驗涉及串口屏組態(tài)設(shè)計、嵌入式開發(fā)、PWM 的三基色調(diào)色等知識,同時對于學(xué)生熟悉UART通信協(xié)議、LIN通信協(xié)議的基本運用有更加深刻的理解。另外本實驗實現(xiàn)的觸控系統(tǒng)采用了車規(guī)級芯片和在汽車領(lǐng)域廣泛應(yīng)用的LIN協(xié)議,數(shù)據(jù)傳輸穩(wěn)定可靠,有利于升級維護,對于實際應(yīng)用也有一定價值。