彭曉珊,崔慶東
(貴陽學院 電子與通信工程學院,貴州 貴陽 550005)
LIN 總線即本地互聯(lián)網(wǎng)絡(luò)總線,隸屬于一種低速、低成本的現(xiàn)場總線,LIN 總線通信速率一般設(shè)置在20 k,作為CAN 總線的補充構(gòu)成車載CAN-LIN 總線系統(tǒng)廣泛應(yīng)用在車輛控制的低速電控單元中[1]。在電動車窗電控單元的設(shè)計生產(chǎn)中,業(yè)界常采用LIN 總線作為電動車窗中央電控單元和其他座位電動車窗電控單元的通信現(xiàn)場總線,以方向盤在左前車輛為例,其他座位電動車窗電控單元包括右前、右后、左后電動車窗電控單元[2]。LIN 總線連接以上4 塊電控單元。本文設(shè)計了一種針對以上電動車窗電控單元功能的測試分析系統(tǒng),利用C8051F020 微控制器為核心,利用本地UART 接口和外圍總線驅(qū)動芯片向被測試車窗電控單元發(fā)送相應(yīng)測試指令,隨后分析總線幀中的響應(yīng)信號,完成相應(yīng)的功能測試,該系統(tǒng)可有效地提高電動車窗電控單元制造商在線測試能力。
LIN 總線作為一種低速、低成本的現(xiàn)場總線,由上世紀末德國有關(guān)汽車企業(yè)提出,旨在設(shè)計一種能可靠鏈接車輛上非核心傳感器信號的工業(yè)現(xiàn)場總線,2002 年LIN 總線標準LIN1.3 協(xié)議版本發(fā)布,目前LIN 協(xié)議版本為LIN2.1。LIN 總線標準定義了傳輸協(xié)議規(guī)范、傳輸介質(zhì)規(guī)范、開發(fā)工具接口規(guī)范、軟件編程的接口規(guī)范。LIN 總線提高了網(wǎng)絡(luò)節(jié)點之間的互相通信的能力,并且提高了電磁兼容能力,能有效地支持分布式汽車應(yīng)用領(lǐng)域內(nèi)機電一體化節(jié)點控制。其硬件基礎(chǔ)可采用單片機或FPGA,利用其硬件產(chǎn)生符合異步串行接口的幀。
LIN 總線原理如圖1 所示。LIN 總線通信的實質(zhì)是由軟件控制,主節(jié)點軟件部分中包括主任務(wù)軟件模塊和從任務(wù)軟件模塊,通信幀由幀頭和響應(yīng)構(gòu)成,通信可在主節(jié)點和從節(jié)點之間進行,也可在從節(jié)點和從節(jié)點之間進行,幀頭包括間隔場,同步場,標識符場。響應(yīng)包括數(shù)據(jù)場和校驗和場,標識符場控制著整個通信收發(fā)節(jié)點和幀類型。主任務(wù)和從任務(wù)均為軟件模塊即相關(guān)子函數(shù),控制對應(yīng)的硬件產(chǎn)生符合LIN 總線協(xié)議標準的各類幀信號,如硬件實現(xiàn)平臺為微控制器,如51 系列單片機、PIC 系列單片機,則控制其對應(yīng)的UART 接口產(chǎn)生對應(yīng)的串行數(shù)據(jù),包括間隔場、同步場、標識符場等等。并通過對應(yīng)的LIN 總線驅(qū)動收發(fā)器芯片傳輸至LIN 物理總線,實現(xiàn)LIN 總線協(xié)議通信;如實現(xiàn)平臺為FPGA 等現(xiàn)場可編程控制器,則利用其HDL 硬件描述語言進行功能描述,對給定的芯片硬件結(jié)構(gòu),進行編譯、優(yōu)化、轉(zhuǎn)換和綜合后,實現(xiàn)電路描述文件下載至最后的芯片內(nèi),模擬實現(xiàn)LIN 總線幀的功能,并仍通過對應(yīng)的LIN 總線驅(qū)動收發(fā)器芯片傳輸至LIN 物理總線。
圖1 LIN 總線原理圖
常規(guī)五座車載電動車窗電控單元為中控電控單元,右前、右后、左后電動車窗電控單元,此4 塊電控單元通過LIN 總線鏈接。LIN 總線協(xié)議分成三層[3],物理層、數(shù)據(jù)鏈路層和應(yīng)用層。物理層基于通用異步串行數(shù)據(jù)接口,采用正邏輯電平。數(shù)據(jù)鏈路層包括同步場、間隔場、標識符場和響應(yīng)場的封裝標準,應(yīng)用層則體現(xiàn)為LIN 總線節(jié)點在其微控制器輸出引腳上的高低電平控制。電控單元均由低端微控制器(例如PIC16F877STC89C52)為核心,外加外圍電路構(gòu)成,其結(jié)構(gòu)如圖2 所示[4]。
圖2 電動車窗電控單元基本結(jié)構(gòu)圖
主節(jié)點中控電控單元的控制核心(低端微控制器)通過采集輸入信號產(chǎn)生相應(yīng)的兩類控制命令,本地控制命令和LIN 總線控制幀命令。同時在不采集輸入信號情況下間隔固定時間間隔t 產(chǎn)生LIN 總線輪詢幀,輪詢其他電控單元的狀態(tài);在LIN 總線輪詢幀頭無響應(yīng)情況下,產(chǎn)生LIN 總線靜默幀使全體系統(tǒng)進入休眠狀態(tài),降低靜態(tài)功耗。其功能具體描述如下表所示(以STC89C51微控制器為例描述)。
表1 中控功能定義中,序號1~4 為本地控制,未通過LIN 總線將信號傳送給其他從節(jié)點,中控電控單元接收本地微控制器引腳P0.0~P0.3 的信號,通過本地微控制器引腳P1.0~P1.3 的高電平驅(qū)動對應(yīng)電機,實現(xiàn)車窗自動和點動的升降操作。序號5~6 為LIN 總線控制右上位置車窗自動升降,中控電控單元接收本地P0.4~P0.5 引腳的信號,然后產(chǎn)生對應(yīng)的LIN 總線幀頭,幀頭的標識符場數(shù)據(jù)為B00000001 和B00000010,中控電控單元作為LIN 總線主節(jié)點將此幀頭發(fā)送到總線上,所有從節(jié)點均接收,所有從節(jié)點對比識別標識符后作出對應(yīng)的判斷,即右上電控單元從節(jié)點控制本地微控制器的引腳電平,對右上位置的車窗進行相應(yīng)的自動升降操作,完成LIN 總線的應(yīng)用層的功能。序號7~8 為LIN 總線控制右后位置車窗自動升降,序號9~10 為LIN 總線控制左后位置車窗自動升降,此兩個基本原理和序號5~6 一致。序號11 為LIN 總線中控單元主節(jié)點發(fā)出輪詢幀,幀頭的標識符場B00000111,采集從節(jié)點車窗控制狀態(tài)。序號12 為LIN 總線中控單元在未接收到本地P0.0~P0.7P1.4~P1.5 引腳的信號時,廣播信號發(fā)出使整個總線進入休眠狀態(tài),對應(yīng)的標識符場為B00001000,從節(jié)點接收到該幀頭時使本地的電控單元進入休眠的低功耗狀態(tài)。
表1 中控功能定義
續(xù)表1 中控功能定義
作為從節(jié)點右前、右后、左后電動車窗電控單元的功能較中控電控單元功能簡單,其完成各自本地控制,同時接收中控發(fā)送的LIN 總線幀頭,通過識別其中的標識符場,并產(chǎn)生相應(yīng)的應(yīng)用層行為。具體功能定義如表2 所示(以右前電動車窗電控單元為例)。
表2 從節(jié)點右前電動車窗電控單元功能定義
表2 從節(jié)點右前電動車窗電控單元功能定義中,序號1~4 未通過LIN 總線進行遠程控制,均為右前本地電控單元接收本地微控制器引腳P0.0~P0.3 的信號,控制本地的P1.0~P1.3 引腳電平的高低,實現(xiàn)對本地車窗自動或者點動的升降操作。序號5 代表右前本地電控單元接收了來自LIN 總線的幀頭信號,標識符場為B00000001,表明右前本地電控單元需按照中控電控單元傳送過來的命令進行本地相應(yīng)的操作,隨即本地控制命令P1.2 高,控制本地車窗點動升。序號6 的基本原理和序號5 基本一致,標識符場為B00000010,隨即右前本地控制命令P1.3 高,控制右前本地車窗點動降。序號7 表明右前本地電控單元通過LIN 總線接收到來自中控電控單元的輪詢命令,標識符場為B00000111,右前本地電控將本地電機的狀態(tài)信息發(fā)送給中控電控單元。序號8 表明右前本地電控單元通過LIN 總線接收到來自中控的遠程休眠命令,標識符場為B00001000,即在右前本地電控單元微控制器僅采集本地P0.0~P0.3信號,進入低功耗工作狀態(tài)。
該硬件系統(tǒng)以C8051F020 微控制器為核心,配合矩陣鍵盤、LCD12864 液晶顯示、LIN 總線接口驅(qū)動部分構(gòu)成[5]。根據(jù)上述對電動車窗電控單元功能描述,該電控單元應(yīng)用層測試分析系統(tǒng)系統(tǒng)部分包括三個子模塊,輸入信號產(chǎn)生子模塊、LIN 總線幀監(jiān)聽子模塊、輸出信號監(jiān)聽子模塊。測試分析系統(tǒng)整體結(jié)構(gòu)如圖3 所示。
圖3 測試分析系統(tǒng)整體結(jié)構(gòu)圖
活動的測試探針可連接至被測試電控單元相應(yīng)的I/O 引腳,施加輸入信號、并監(jiān)聽LIN 總線幀和輸出信號。測試分析系統(tǒng)硬件電路中液晶部分和鍵盤部分采用常規(guī)設(shè)計,液晶為LCD12864,鍵盤采用4×4 矩陣鍵盤。C8051F020 微控制器是完全集成混合信號系統(tǒng)級MCU 芯片,自帶兩個12 位ADC,兩個UART 接口,具有64 個數(shù)字I/O 引腳或32 個數(shù)字I/O 引腳。C8051F020 微控制器所有模擬和數(shù)字外設(shè)均可由用戶固件使能/禁止和配置。FLASH 存儲器還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲,并允許現(xiàn)場更新8051 固件。片內(nèi)JTAG 調(diào)試電路允許使用安裝在最終應(yīng)用系統(tǒng)上的產(chǎn)品MCU 進行非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)調(diào)試。該調(diào)試系統(tǒng)支持觀察和修改存儲器和寄存器,支持斷點、觀察點、單步及運行和停機命令。在使用JTAG 調(diào)試時,所有的模擬和數(shù)字外設(shè)都可全功能運行。利用C8051F020 可方便構(gòu)建多種程序下載的功能可調(diào)整的應(yīng)用系統(tǒng)。LIN 接口芯片采用MCP201 芯片,具體硬件電路設(shè)計如圖4 所示。
圖4 測試分析系統(tǒng)硬件電路結(jié)構(gòu)圖
整體測試分析系統(tǒng)的工作狀態(tài)分為主動測試狀態(tài)和被動監(jiān)聽狀態(tài),根據(jù)上述針對電動車窗電控單元功能描述,確定對應(yīng)施加在被測ECU 上的輸入信號,在硬件上通過對應(yīng)探針實現(xiàn)主動對被測ECU 的激勵施加。然后被動監(jiān)聽來自被測試的電控單元的兩個方面的信號,或者直接來之被測ECU 的I/O 引腳的輸出信號,或來自整個LIN總線上的幀信號。最后測試分析系統(tǒng)對采集到的被測ECU 的輸出信號或者LIN 總線幀信號和正確的輸出信號或者正確的LIN 總線幀信號進行比對,給出ECU 測試結(jié)果。該測試分析系統(tǒng)軟件部分包括主動施加輸入信號至被測ECU 環(huán)節(jié)、LIN總線監(jiān)聽環(huán)節(jié)、被測ECU 輸出信號采集環(huán)節(jié)和對比分析測試結(jié)果環(huán)節(jié)。軟件部分程序流程圖如圖5 所示。
圖5 測試分析系統(tǒng)軟件流程圖
測試分析系統(tǒng)的軟件部分中,配置測試結(jié)構(gòu)體數(shù)組是軟件部分的核心,其詳細結(jié)構(gòu)設(shè)計如圖6所示。測試結(jié)構(gòu)體內(nèi)包括測試序列、測試類型、預設(shè)激勵數(shù)據(jù)(施加輸入信號)、預設(shè)響應(yīng)信號(輸出信號)、預設(shè)總線幀。總線幀由主節(jié)點和信號結(jié)構(gòu)體構(gòu)成,總線幀結(jié)構(gòu)體作為測試結(jié)構(gòu)體的元素嵌套。
圖6 測試結(jié)構(gòu)體代碼結(jié)構(gòu)
C 代碼中的測試結(jié)構(gòu)體是測試系統(tǒng)的核心,其定義原型中最基礎(chǔ)底層的結(jié)構(gòu)體為主節(jié)點ms_node 結(jié)構(gòu)體,從節(jié)點sl_node 結(jié)構(gòu)體,ms_node 結(jié)構(gòu)體包括主節(jié)點名(20 個字符數(shù)組)、時基、時鐘抖動。從節(jié)點sl_node 結(jié)構(gòu)體包括從節(jié)點名,采用20 個字符數(shù)組。結(jié)構(gòu)體定義原型中核心的結(jié)構(gòu)體為信號signal 結(jié)構(gòu)體,信號signal 結(jié)構(gòu)體第一個元素為包括20 個字符的數(shù)組name。第二個元素為整型變量size 表示信號所占字節(jié)數(shù)。第三個元素為整型變量init_value 表示信號signal 的初始值大小。第四個和第五個元素分別為字符型數(shù)組,publisher 和subscriber 分別為發(fā)送方和接收方名,各占20 個字符。
總線幀結(jié)構(gòu)體是LIN 物理總線上數(shù)據(jù)鏈路層上的數(shù)據(jù),包含了字符幀名name 數(shù)組,整型數(shù)據(jù)進程pid 號。發(fā)送節(jié)點名字符數(shù)組publisher,此字符數(shù)組名應(yīng)和主節(jié)點結(jié)構(gòu)體應(yīng)一致。整型變量size 表示信號所占字節(jié)數(shù)。總線幀結(jié)構(gòu)體嵌套信號結(jié)構(gòu)體sign,偏移為整型變量offset。
LIN 總線協(xié)議應(yīng)用層行為數(shù)據(jù)根據(jù)不同的應(yīng)用場合由開發(fā)者定義,測試結(jié)構(gòu)體中應(yīng)用層行為數(shù)據(jù)結(jié)構(gòu)體包括三個元素,第一個元素即測試序號;第二個元素為預設(shè)激勵數(shù)據(jù)無符號整型config_in 數(shù)組,預留30 個數(shù)組元素,表示表1 中序號1~10 和表2 序號1~4 的第二列;第三個元素為預設(shè)響應(yīng)數(shù)據(jù)無符號整型config_out 數(shù)組,預留30 個數(shù)組元素,表示表1 中序號1~4 和表2 序號1~6 的第三列。整體測試結(jié)構(gòu)體即由嵌套的上述結(jié)構(gòu)體構(gòu)成,在微控制C8051F020 的C51 代碼中例化使用。
在汽車電子設(shè)備的V 型設(shè)計模式中,測試環(huán)節(jié)占據(jù)了60%以上的工作量。測試存在于OEM制造商,也存在于整車制造商。整車制造商對于來自供應(yīng)商OEM 的車載電子設(shè)備需要進行來料檢測。而本車窗電控單元的OEM 制造商對于電控單元的功能測試非常關(guān)注,其每一塊電控單元均需要進行功能測試,其測試工裝和在原始設(shè)計階段電控單元的可測試性均非常重要。本系統(tǒng)的設(shè)計根據(jù)LIN 總線型車窗電控單元的應(yīng)用層功能描述,采用設(shè)計的測試結(jié)構(gòu)體原型,構(gòu)建對應(yīng)的測試向量結(jié)構(gòu)體,在實現(xiàn)代碼環(huán)節(jié)轉(zhuǎn)換成了對應(yīng)引腳的高低電平。利用探針實現(xiàn)電控單元輸入高低電平的施加和輸出高低電平信號的采集,采用MCP201 作為LIN 總線接口芯片來監(jiān)聽LIN 總線信號,并利用高性能51 內(nèi)核的C8051F020 微控制器為核心構(gòu)建整個測試分析系統(tǒng)。該系統(tǒng)的提出為汽車電子產(chǎn)品OEM 制造商設(shè)計在線的測試分析工裝提供了工程和技術(shù)解決方案。