陳家雨
(南京理工大學(xué) 江蘇 南京210000)
車用控制器數(shù)字量端口的可配置的實(shí)現(xiàn)
陳家雨
(南京理工大學(xué) 江蘇 南京210000)
提出了一種基于MK66FX1M0VLQ18(主控芯片)和EMP570T114C5N(CPLD)的實(shí)現(xiàn)車用控制器數(shù)字量端口可配置性的設(shè)計(jì)方案。介紹了端口進(jìn)行數(shù)字量輸出時(shí)故障診斷電路原理以及軟件實(shí)現(xiàn)方案。從CPLD和主控芯片角度分別介紹數(shù)字量端口功能可配置的實(shí)現(xiàn)過程,從而使所設(shè)計(jì)的車用控制器具備高度靈活的可配置。同時(shí)由于采用CPLD實(shí)現(xiàn)數(shù)字量端口的復(fù)用功能,降低了系統(tǒng)的主控芯片的負(fù)荷,提高了整個(gè)車用控制器工作效率。
車用控制器;數(shù)字量;端口擴(kuò)展;可配置;CPLD
汽車工業(yè)中一個(gè)明顯的趨勢(shì)是車輛上的電子裝備越來越多,并且扮演著重要的角色,其本身占汽車整體成本也在不斷上升[1]。我們?cè)O(shè)計(jì)了一個(gè)面向于工程機(jī)械和移動(dòng)車輛的通用的車用控制器。該控制器的特點(diǎn)在于具有高度靈活的可配型以及可以進(jìn)行遠(yuǎn)程操作,比如遠(yuǎn)程更新程序,還要求控制器端口具有進(jìn)行端口保護(hù)和自診斷功能,以及通過串口和CAN總線進(jìn)行通信等功能。
為了滿足通用的車用控制器的主要性能要求,在所設(shè)計(jì)控制器中,采用的主控芯片為freescale公司的MK66FX1M0VLQ18,內(nèi)核為Cortex-M4。主要參數(shù)[2]包括:最高180M主頻,滿足控制器的速度要求;144管腳,管腳資源緊張,需要外部芯片進(jìn)行擴(kuò)展;1M FLASH,256K RAM,4K EEPROM 的存儲(chǔ)單元,滿足控制器主要計(jì)算以及處理過程中的存儲(chǔ)要求,但是在實(shí)現(xiàn)擴(kuò)展功能時(shí)需要進(jìn)行存儲(chǔ)設(shè)備的擴(kuò)展;6個(gè)UART,2個(gè)CAN,足以滿足控制器的通信要求。
鑒于MK66FX1M0VLQ18有限的IO資源,我們對(duì)主控芯片進(jìn)行了端口擴(kuò)展。擴(kuò)展芯片采用的是Altera公司的復(fù)雜可編程邏輯器件(CPLD)EMP570T114C5N。該芯片具有144根管腳,宏單元數(shù)為440,邏輯元件/邏輯塊數(shù)目為570,足以滿足端口的擴(kuò)展要求[3]。
在所設(shè)計(jì)的控制器中,保留74個(gè)可配置端口[4],包括:開關(guān)量端口48個(gè)以及模擬量輸入端口26路。所有端口均可作為數(shù)字量輸入。每個(gè)數(shù)字量端口都具備開路/短路故障檢測(cè)以及短路保護(hù)。
其中開關(guān)量端口有48個(gè),具體包括:
8路低邊開關(guān)量輸出,最大電流3 A,可選擇配置為開關(guān)量輸入或開關(guān)量輸出(3 A),PWM輸出。4路低邊大開關(guān)量輸出,最大電流8 A,可選擇配置為開關(guān)量輸入或大電流低邊開關(guān)輸出 (8 A),H橋低邊PWM輸出。32路高邊開關(guān)輸出,最大電流3 A,可選擇配置為開關(guān)量輸入或開關(guān)量輸出 (3 A),PWM輸出。4路高邊大開關(guān)量輸出,最大電流8 A,可選擇配置為大電流高邊開關(guān)輸出(8 A)或H橋高邊PWM輸出。
目前的CPLD主要是基于EPROM或FLASH存儲(chǔ)器編程,相比較主要基于SRAM編程的FPGA,優(yōu)勢(shì)在于系統(tǒng)掉電后編程信息不會(huì)丟失,無需外部存儲(chǔ)器芯片,使用簡單。由于控制器的速度要求,CPLD比起FPGA更具有速度上優(yōu)勢(shì)。又考慮到CPLD是“邏輯豐富”型的,比起“時(shí)序豐富”型的FPGA更適用于完成各種算法和組合邏輯,適用于設(shè)計(jì)譯碼等復(fù)雜組合邏輯[5]。綜合考慮之下,為了節(jié)約主控芯片有限的管腳和資源,采用CPLD來實(shí)現(xiàn)數(shù)字量端口的可配置性,以及包括數(shù)字量輸出故障診斷在內(nèi)的的各個(gè)功能模塊,從而完成對(duì)主控芯片的擴(kuò)展。
基于CPLD的車用控制器數(shù)字量端口擴(kuò)展和故障診斷結(jié)構(gòu)如圖1所示。
圖1 基于CPLD的數(shù)字量端口擴(kuò)展和故障診斷結(jié)構(gòu)圖
這些數(shù)字量端口故障診斷電路的核心部分完全相同。根據(jù)所驅(qū)動(dòng)的負(fù)載,端口的輸出可以分為4類[6]:8路低邊開關(guān)量輸出,4路低邊大開關(guān)量輸出,32路高邊開關(guān)輸出,4路高邊大開關(guān)量輸出。每一類負(fù)載的輸出分別具有完全相同的負(fù)載驅(qū)動(dòng)電路。控制總線包括[7]:地址鎖存信號(hào)ALE,片選信號(hào)CS,使能信號(hào)EN,以及讀寫控制信號(hào)WR。地址數(shù)據(jù)復(fù)用總線是一個(gè)雙向總線。地址數(shù)據(jù)復(fù)用總線復(fù)用為地址功能時(shí),實(shí)現(xiàn)數(shù)字量端口號(hào)的選擇以及端口的功能配置。復(fù)用為數(shù)據(jù)總線時(shí),可以用于傳遞主控芯片控制輸出端口的輸出數(shù)據(jù),也可以作為端口反饋到主控芯片的故障診斷信息,或者反饋的端口讀取的數(shù)字量輸入數(shù)據(jù)。診斷完成信號(hào)和輸入完成信號(hào)是CPLD單方向向主控芯片發(fā)送的提醒信息。
端口作為數(shù)字量輸出功能時(shí),端口的開路和短路故障診斷原理圖如圖2所示[8]。
圖2 數(shù)字量輸出端口故障診斷原理圖
在上圖中的故障診斷電路中,在負(fù)載開路,正常負(fù)載,負(fù)載短路不同情況下,由于電容充放電的電路不同,導(dǎo)致速率不同,從而通過觀察電容充放電時(shí)間得到故障診斷結(jié)果[9]。考慮到電容的效應(yīng),為了保證診斷電路正常有效工作,在1 kHz以下脈沖輸出時(shí)才能進(jìn)行正常檢測(cè)。本診斷電路對(duì)于負(fù)載電阻大于100K以及容性負(fù)載無效[10],對(duì)于感性負(fù)載全有效。根據(jù)車用控制器的負(fù)載進(jìn)行分析[11],負(fù)載可以近似為小于100 Ω。在正常負(fù)載和發(fā)生故障情況下,電容充放電情況如圖3所示,橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示電容的電壓。
圖3 不同情況下電容充放電情況電情況
CPLD的端口數(shù)字量輸出故障診斷部分軟件實(shí)現(xiàn)流程圖如圖4所示。
圖4 端口數(shù)字量輸出自診斷流程圖
CPLD部分實(shí)現(xiàn)端口可配置性及數(shù)字量輸出端口故障診斷時(shí)內(nèi)部結(jié)構(gòu)圖如圖5所示。
地址數(shù)據(jù)復(fù)用雙向總線承擔(dān)地址線功能時(shí),地址鎖存模塊對(duì)其傳輸來的地址進(jìn)行鎖存,并且通過地址譯碼器對(duì)鎖存的地址進(jìn)行譯碼得到的功能和端口選擇信號(hào)。
當(dāng)實(shí)現(xiàn)輸入功能時(shí)[12],CPLD接收來自主控芯片發(fā)送來的地址以及讀寫控制信號(hào)WR,譯碼后使能DI輸入模塊并選通對(duì)應(yīng)的DI對(duì)應(yīng)管腳。在讀取并獲得該管腳對(duì)應(yīng)的端口數(shù)據(jù)之后,反饋該數(shù)據(jù)到地址數(shù)據(jù)復(fù)用總線上 (此時(shí)總線作為數(shù)據(jù)線)。同時(shí),CPLD向主控芯片發(fā)送數(shù)字量輸入完成信號(hào)通知主控芯片讀取數(shù)據(jù)。
圖5 端口可配置及輸出端口故障診斷的CPLD內(nèi)部結(jié)構(gòu)圖
在實(shí)現(xiàn)輸出PWM波功能時(shí)[13],根據(jù)譯碼后的地址以及讀寫控制信號(hào),選擇對(duì)應(yīng)的PWM生成模塊以及選通DO驅(qū)動(dòng)模塊的對(duì)應(yīng)DO管腳,使PWM輸出通過該DO管腳輸出到對(duì)應(yīng)端口。地址數(shù)據(jù)復(fù)用總線作為數(shù)據(jù)線傳遞數(shù)據(jù)到PWM模塊,使得PWM模塊生成對(duì)應(yīng)頻率的波形,最終該端口輸出的是設(shè)置的PWM波形。
在實(shí)現(xiàn)普通DO輸出功能時(shí),根據(jù)譯碼后的地址選通DO驅(qū)動(dòng)模塊對(duì)應(yīng)的DO管腳以及選通該管腳的故障診斷模塊,并把地址數(shù)據(jù)復(fù)用總線傳輸來的數(shù)據(jù)通過該管腳輸出。對(duì)每個(gè)輸出管腳的輸出電壓進(jìn)行檢測(cè),每當(dāng)檢測(cè)到電壓跳變時(shí),使能故障診斷模塊。并在診斷結(jié)束后,向地址數(shù)據(jù)復(fù)用總線反饋診斷端口號(hào)以及診斷結(jié)果,同時(shí)向主控芯片反饋完成信號(hào),通知主控芯片讀取診斷結(jié)果。
通過CPLD實(shí)現(xiàn)端口的診斷以及PWM功能,有效地減輕主控芯片的負(fù)荷,提高控制器整個(gè)系統(tǒng)的工作效率。
在硬件上,通過K66的GPIO口來模擬地址數(shù)據(jù)復(fù)用總線功能的實(shí)現(xiàn)。由圖4可知,需要地址數(shù)據(jù)復(fù)用總線8根,控制線4根,診斷完成信號(hào)線1根,讀取輸入信號(hào)完成線1根。一共需要預(yù)留主控制器14個(gè)GPIO口。主控芯片GPIO口分配如表1所示。
在軟件上,由于在端口復(fù)用為數(shù)字量輸出功能時(shí),可能會(huì)需要進(jìn)行故障診斷,而故障診斷需要一定的延時(shí)時(shí)間(診斷時(shí)間),為了提高主控芯片CPU的利用率,提高控制器的工作效率,采用中斷方式來讀取診斷信息[14]。所以在配置為數(shù)字量輸出功能時(shí),啟動(dòng)端口中斷。而一旦進(jìn)入中斷服務(wù)程序,則關(guān)閉該端口中斷,防止在執(zhí)行其他功能時(shí)誤觸發(fā)該端口中斷。當(dāng)診斷完成后,CPLD向主控芯片發(fā)送診斷完成信號(hào)時(shí),會(huì)觸發(fā)主控芯片端口中斷,主控芯片進(jìn)入中斷服務(wù)程序,讀取地址數(shù)據(jù)復(fù)用總線上的診斷信息。
而在端口復(fù)用為數(shù)字量輸入時(shí),由于時(shí)間極短,所以主控芯片采用查詢方式獲取數(shù)字量輸入的數(shù)據(jù),從而避免頻繁的進(jìn)入中斷,減少不要的開銷[15]。作為PWM輸出時(shí),不需要反饋數(shù)據(jù)到主控芯片。主控芯片部分實(shí)現(xiàn)控制器端口擴(kuò)展和功能可配置性的工作流程圖如圖6所示。
地址數(shù)據(jù)復(fù)用雙向總線是通過8個(gè)GPIO實(shí)現(xiàn)的:PTC8、PTC9、PTC10、PTD2、PTD3、PTD4、PTD5、PTD6。這8根管腳分時(shí)復(fù)用時(shí)對(duì)應(yīng)的功能分別如表2所示。
圖6 主控芯片實(shí)現(xiàn)端口擴(kuò)展和可配置性流程圖
表1 GPIO分配管腳及功能
表2 地址數(shù)據(jù)雙向總線與GPIO管腳對(duì)應(yīng)關(guān)系表
當(dāng)這8根GPIO管腳作為地址線時(shí)實(shí)現(xiàn)的功能是端口選擇和該端口的功能配置,即可視為端口配置寄存器Addr[7:0],依次對(duì)應(yīng)于地址線[7:0]。
因?yàn)閿?shù)字量端口號(hào)只有48個(gè),所以只需要6位數(shù)據(jù)即可表示這些端口,可配置功能功能包括:數(shù)字量輸出,數(shù)字量輸入,PWM輸出,2位數(shù)據(jù)足以表示完這些功能。綜合考慮之下,Addr[7:2]表示對(duì)應(yīng)的端口號(hào),Addr[1:0]表示端口的功能:00(開關(guān)輸出),01(開關(guān)輸入),10(PWM輸出)。數(shù)字量端口配置寄存器的值與對(duì)應(yīng)的功能如表3所示。
文中設(shè)計(jì)的數(shù)字量端口擴(kuò)展和功能可配置性實(shí)現(xiàn)方案應(yīng)用復(fù)雜可編程邏輯器件(CPLD)實(shí)現(xiàn)對(duì)應(yīng)的功能模塊,擴(kuò)展了主控芯片有限的IO資源,并且一定程度上降低了主控芯片的負(fù)荷。通過測(cè)試,數(shù)字量輸出,數(shù)字量輸入,PWM輸出功能均能正常實(shí)現(xiàn),并且可以通過在主控芯片的程序中設(shè)定配置參數(shù)進(jìn)行可配置功能的選擇。從而實(shí)現(xiàn)控制器具有高度靈活性和通用性,適用于不同車輛和工程器械上,滿足不同顧客的需求。
表3 寄存器Addr的值與數(shù)字量端口的功能的關(guān)系表
[1]張翔,王佳,張長紅,等.汽車ECU開發(fā)技術(shù)研究[J].上海汽車,2008,9:15-16.
[2]于豐華.基于K60的智能汽車控制系統(tǒng)的研究[D].吉林:吉林農(nóng)業(yè)大學(xué),2014.
[3]楊小衛(wèi).汽車電子機(jī)械制動(dòng)系統(tǒng)CAN總線通信研究[D].太原:中北大學(xué),2014.
[4]徐偉業(yè),江濱,虞湘賓.CPLD/FPGA的發(fā)展與應(yīng)用比較[J].現(xiàn)代電子技術(shù),2007(2):4-7.
[5]李旭.基于電路仿真原理的故障檢測(cè)與診斷研究[D].大連:大連理工大學(xué),2007.
[6]駱國慶.基于ARM+CPLD的多電機(jī)運(yùn)動(dòng)控制器設(shè)計(jì)[D].寧波:寧波大學(xué),2015.
[7]李坤.基于ARM的嵌入式中斷系統(tǒng)的軟件仿真實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[8]王陽,徐加歡,陳軍寧,等.集成微電容式傳感器檢測(cè)電路設(shè)計(jì)與研究 [J].電子器件,2013(2):230-234.
[9]李向陽.電容充放電脈沖數(shù)字控制型電火花沉積電源[D].洛陽:河南科技大學(xué),2013.
[10]檀斐.車用動(dòng)力鋰離子電池系統(tǒng)故障診斷研究與實(shí)現(xiàn)[D].北京:北京理工大學(xué),2015.
[11]沈旭.基于FPGA的數(shù)字電路故障診斷系統(tǒng)設(shè)計(jì)及關(guān)鍵技術(shù)研究[D].南京:南京航空航天大學(xué),2014.
[12]吳韌,蔡偉義.基于飛思卡爾單片機(jī)的車載診斷系統(tǒng)研究[J].機(jī)械制造與自動(dòng)化,2012(3):134-136,155.
[13]孫金泉,金忠,江恒.工程機(jī)械電子控制單元電源設(shè)計(jì)與改進(jìn)[J].建筑機(jī)械化,2015(2):58-59,85.
[14]高澤涵,黃嵐.基于模糊模式識(shí)別的模擬電路故障診斷方法[J].電子設(shè)計(jì)工程,2013(20):79-82.
[15]李志剛.煤礦電氣設(shè)備的絕緣故障及其診斷技術(shù)[J].科技傳播,2014(17):183-184.
Realization of the ECU digital ports'configurability
CHEN Jia-yu
(Nanjing University of Science and Technology,NanJing 210000,China)
In order to realize the digital ports'configurability of the ECU,we put forward a design based on the main control chip(MK66FX1M0VLQ18) and the extended chip (EMP570T114C5N(CPLD)).In the design,we introduce the way to diagnose the digital ports from the theory and soft-realization.To make the ECU has high flexibility,we show the realization of configurability of the digital ports from the main control chip and the extended chip.Besides because of the usage of the CPLD,we reduce the load of the main control chip and increase the work efficiency of the whole ECU.
ECU; digital;ports-extending; configurability;CPLD
TN70
A
1674-6236(2017)17-0097-05
2016-08-26稿件編號(hào):201608201
陳家雨(1990—),男,江蘇泗陽人,碩士研究生。研究方向:嵌入式,車用控制器。