朱家俊,劉劍琴,時(shí)雪涵
(安徽信息工程學(xué)院 計(jì)算機(jī)與軟件工程學(xué)院,安徽 蕪湖 241000)
隨著汽車行業(yè)車載多媒體多屏和聯(lián)屏技術(shù)的發(fā)展,目前市場(chǎng)上出現(xiàn)了越來越多的雙聯(lián)屏、三聯(lián)屏配置[1],部分車型已經(jīng)進(jìn)化到四聯(lián)屏的階段,例如保時(shí)捷Taycan、理想ONE、拜騰M-Byte等車型都在副駕駛前方加入一塊液晶屏,形成“四屏聯(lián)動(dòng)”的視覺效果[2]。汽車多聯(lián)屏主要是將車內(nèi)的儀表屏、中控屏、抬頭顯示器HUD以及副駕駛專屬影音等若干顯示裝置與一臺(tái)主機(jī)進(jìn)行連接,主機(jī)端與顯示屏端可以進(jìn)行視頻、數(shù)據(jù)以及控制信號(hào)的通信。主機(jī)端與顯示屏端對(duì)于數(shù)據(jù)信號(hào)和控制信號(hào)的傳輸速度以及可靠性直接影響了車載多媒體的功能和呈現(xiàn)的感官效果。
目前,國(guó)內(nèi)外進(jìn)行一機(jī)多屏研發(fā)的主要企業(yè)包括哈曼、偉世通、安波福、德賽西威、東軟等[3]。在現(xiàn)有的主機(jī)聯(lián)屏方案中,主機(jī)與顯示屏之間采用LVDS進(jìn)行視頻信息的傳輸[4],而對(duì)于數(shù)據(jù)信號(hào)或者控制信號(hào)的傳輸則普遍采用CAN總線傳輸或者LIN總線的傳輸方式[5]。其中,LIN總線方案由于可以大大節(jié)省成本、減少線束的復(fù)雜性,同時(shí)又具有很好的容錯(cuò)性,所以在主機(jī)聯(lián)屏方案中得到更多應(yīng)用。但是,LIN通信的傳輸速率不高于20 kb·s-1[6],屬于低速傳輸?shù)木W(wǎng)絡(luò),部分功能無法滿足傳輸速度的應(yīng)用要求。而且,無論是基于CAN總線還是LIN總線的通信設(shè)計(jì)方案,不僅需要增加獨(dú)立的消息收發(fā)器,還需要設(shè)置專門的線束實(shí)現(xiàn)消息傳遞,具有結(jié)構(gòu)復(fù)雜、成本高等缺點(diǎn)。文中提出了一種基于IIC通信的汽車多聯(lián)屏設(shè)計(jì)方案,不僅可以實(shí)現(xiàn)視頻信號(hào)、控制信號(hào)以及數(shù)據(jù)信號(hào)共用同一通信設(shè)備,且對(duì)通信協(xié)議進(jìn)行了一定的優(yōu)化,具有結(jié)構(gòu)簡(jiǎn)單、傳輸速度快、通信可靠、成本低等優(yōu)點(diǎn)。
文中設(shè)計(jì)包括車載顯示屏端的通信設(shè)計(jì)和主機(jī)端的通信設(shè)計(jì)。由于車載多聯(lián)屏的主要功能包括視頻顯示、背光調(diào)節(jié)、診斷、故障反饋以及觸摸功能,所以主機(jī)端需要控制顯示屏端進(jìn)行圖像視頻的顯示、背光調(diào)節(jié)以及發(fā)送診斷請(qǐng)求,同時(shí),顯示屏端也需要向主機(jī)端反饋其故障狀態(tài)(DTC)、反饋診斷消息以及發(fā)送觸摸按鍵消息等。總體而言,在主機(jī)和顯示屏之間需要傳輸三類消息:視頻信號(hào)、控制信號(hào)和數(shù)據(jù)信息。主機(jī)端和顯示屏端的通信原理如圖1所示,視頻信號(hào)在主機(jī)端通過圖像處理設(shè)備輸出,形成4路差分信號(hào)D0+/-~D3+/-,并送入加串器DS90UB947進(jìn)行加串。加串器DS90UB947是一款從OpenLDI到FPD-Link III的橋接器件,與解串器DS90UB948配合使用[7]。DS90UB947和DS90UB948的FPD-Link III接口除了支持視頻和音頻數(shù)據(jù)傳輸外,還支持IIC通信,允許從本地主機(jī)控制器對(duì)其進(jìn)行IIC通信配置?;诖?對(duì)于主機(jī)端輸出的控制信號(hào)和數(shù)據(jù)信息采用IIC通信方式,與視頻信號(hào)一起,經(jīng)加串器加串形成兩路串行差分信號(hào)DOUT0+/-和DOUT1+/-,通過主機(jī)端LVDS端口,經(jīng)100 Ω差分屏蔽雙絞線(STP)電纜到顯示屏端LVDS端口,顯示屏端解串器DS90UB948對(duì)收到的串行差分信號(hào)RIN0+/-和RIN1+/-解串后,形成8路并行視頻數(shù)字同步信號(hào)D0+/-~D7+/-以及IIC信號(hào),視頻信號(hào)在顯示屏端進(jìn)行顯示,IIC信號(hào)送入MCU解析,實(shí)現(xiàn)相應(yīng)的控制功能。
圖1 主機(jī)端和顯示屏端通信原理
主機(jī)端加串器和顯示屏端解串器之間的視頻信號(hào)、控制信號(hào)以及數(shù)據(jù)信息是以差分信號(hào)方式進(jìn)行傳送,即LVDS,它是一種低振幅差分信號(hào)技術(shù),主要采用幅度非常低的信號(hào)(約350 mV)通過一對(duì)平衡電纜,以高達(dá)數(shù)千兆位每秒的速度傳送串行數(shù)據(jù)[8]。由于電壓信號(hào)幅度較低,故只產(chǎn)生極低的噪聲,消耗非常小的功率[9]。這里主機(jī)和顯示屏端進(jìn)行通信的LVDS端口引腳定義如圖2所示。
圖2 LVDS端口引腳定義
圖3為一個(gè)一機(jī)雙聯(lián)屏的總體設(shè)計(jì)框圖,即一個(gè)主機(jī)連接兩個(gè)顯示屏。主機(jī)端包括電源模塊、MCU、加串器以及主機(jī)端輔助電路。顯示屏端分別獨(dú)立設(shè)有電源模塊、MCU、解串器、顯示屏模塊以及屏端輔助電路。采用該種通信方案,信號(hào)在傳輸距離方面,由于加串器和解串器與相應(yīng)的MCU在同一塊PCBA上,IIC總線的長(zhǎng)度一般為幾厘米到十幾厘米,因此,傳輸距離不會(huì)影響信號(hào)質(zhì)量[10],且主機(jī)端和顯示屏端的視頻信號(hào)、控制信號(hào)以及數(shù)據(jù)信息都是通過LVDS線束進(jìn)行傳輸,極大地節(jié)省了通信成本。
圖3 一機(jī)雙聯(lián)屏總體設(shè)計(jì)
如圖4所示,顯示屏端MCU選用適用于汽車車身電子的32位微控制器SPC560B64L,該系列32位系統(tǒng)片上(SoC)微控制器是集成汽車應(yīng)用控制器的最新產(chǎn)品。它采用先進(jìn)且經(jīng)濟(jì)高效的e200z0h主處理器為核心,符合Power Architecture技術(shù),運(yùn)行速度高達(dá)64 MHz,且有多種低功耗模式配置,同時(shí)提供CAN、LIN以及IIC等多種通信接口,滿足高性能處理和低功耗的應(yīng)用需求[11]。該MCU的工作電壓是3.3 V,由穩(wěn)壓器SSP1117-3.3 V提供,它將顯示屏端12 V的總電源WakeUp轉(zhuǎn)換成3.3 V進(jìn)行輸出。單片機(jī)端口PA[10]、PA[11]作為IIC通信接口,與解串器DS90UB948引腳I2C_SDA和I2C_SCL互連,將解串后的IIC信號(hào)送入單片機(jī)。單片機(jī)的GPIO口PE[12]與解串器DS90UB948的INTB_IN引腳相連。INTB_IN引腳是一個(gè)有效的低中斷輸入引腳,該引腳的變化將會(huì)映射到與主機(jī)端配合使用的加串器DS90UB947的INTB口,以通知主機(jī)端讀取顯示屏端發(fā)送的信息,進(jìn)而實(shí)現(xiàn)顯示屏向主機(jī)主動(dòng)發(fā)送IIC消息的功能。解串器DS90UB948的內(nèi)核電壓是1.2 V,另有3.3 V的端口電壓通過電容10 μF、1 μF、0.1 μF到GND。解串器的GPIO1與單片機(jī)引腳PC[2]連接,用于系統(tǒng)初始化階段,告知主機(jī)顯示屏端狀態(tài)。對(duì)于主機(jī)輸入的視頻信號(hào)、控制信號(hào)以及數(shù)據(jù)信息經(jīng)LVDS端口輸入至DS90UB948的RIN0+/-和RIN1+/-端口,解串器端口D0+/-~D7+/-與LCD顯示模塊互連,將解串后的視頻信號(hào)送至LCD顯示模塊。另外,解串器DS90UB948的Lock端口與單片機(jī)PA[5]端口互連,反饋視頻信號(hào)解串完成情況,以便正常顯示。
如圖5所示,主機(jī)端的MCU也是32位微控制器SPC560B64L,其處理能力能夠滿足主機(jī)端對(duì)通信速率和處理性能的需求。MCU的PA[10]、PA[11]引腳作為IIC的通信接口,分別與加串器DS90UB947的SDA和SCL引腳連接,實(shí)現(xiàn)主機(jī)端IIC通信。PE[12]與DS90UB947的INTB相連,顯示屏端解串器INTB_IN的變化將映射到該引腳,用于實(shí)現(xiàn)IIC信號(hào)由顯示屏端向主機(jī)端主動(dòng)外發(fā)。主機(jī)端的圖像處理芯片選用的是RK3288,它是一款低功耗、高性能的處理器,可用作對(duì)圖像的預(yù)處理和后處理[12]。這里將視頻圖像經(jīng)過處理以后,通過引腳LCDC0_D10~LCDC0_D15、LCDC0_D2、LCDC0_D3與加串器互連,對(duì)視頻信息進(jìn)行加碼。
本方案對(duì)IIC幀結(jié)構(gòu)進(jìn)行優(yōu)化,采用和CAN協(xié)議類似的幀結(jié)構(gòu),同時(shí),在信號(hào)中加入累加校驗(yàn)和CRC校驗(yàn),保證信號(hào)傳輸?shù)目煽啃?。新的IIC信號(hào)幀結(jié)構(gòu)如圖6所示。
圖6中,“Start”是IIC的起始位?!癝lave Address”是從設(shè)備的地址信息,在以IIC作為總線進(jìn)行通信的系統(tǒng)中,一條IIC總線可以連接多個(gè)從設(shè)備,每個(gè)連接到IIC總線上的器件都有唯一的地址。在該主機(jī)聯(lián)屏系統(tǒng)中,每個(gè)顯示屏都有唯一的從設(shè)備地址,IIC總線就是根據(jù)設(shè)備地址進(jìn)行信息的識(shí)別和接收?!癢rite/Read”標(biāo)記了當(dāng)前該幀指令是寫指令或讀指令。“Message ID”是消息地址,規(guī)定了當(dāng)前消息的種類,根據(jù)多聯(lián)屏的功能需要,會(huì)有多種消息類型,例如:背光控制信號(hào)、診斷指令等,每種消息定義唯一的消息地址?!袄奂有r?yàn)位”是用來校驗(yàn)是否有重復(fù)幀或丟幀,保證消息的可靠性。主機(jī)端發(fā)送的幀消息,累加校驗(yàn)位的值在0~255之間進(jìn)行循環(huán)變化,每次變化1個(gè)單位。顯示屏端接收主機(jī)發(fā)送的幀消息,并保存當(dāng)前幀的累加校驗(yàn)值,將該值與保存的上一幀校驗(yàn)值進(jìn)行比對(duì),如果不是連續(xù)值,就會(huì)記錄DTC(Diagnostic Trouble Code,DTC),并丟棄當(dāng)前幀,接收下一幀作為初始信號(hào),具體如圖7所示。圖中展示的是單個(gè)消息的CRC校驗(yàn)策略,由于本系統(tǒng)中有多種信號(hào),信號(hào)種類為N,則用來存放校驗(yàn)位的變量count可以使用數(shù)組count[N],實(shí)現(xiàn)對(duì)每個(gè)信號(hào)分別做累加校驗(yàn)。
圖7 累加校驗(yàn)位原理
“Data1~DataN”是有效數(shù)據(jù)域,是該幀消息傳送的有效信息,與Message ID相對(duì)應(yīng),不同的消息具有不同的控制意義?!癈RC校驗(yàn)位”是使用幀結(jié)構(gòu)中的“Message ID”到“DataN”的數(shù)據(jù)以及“Data Length”作為參數(shù)值通過CRC-8標(biāo)準(zhǔn)多項(xiàng)式計(jì)算出8位CRC校驗(yàn)值。其中,“Data Length”指的是數(shù)據(jù)長(zhǎng)度,即N+2。顯示屏每收到一幀IIC消息,都會(huì)計(jì)算一次CRC值,并與接收值進(jìn)行比較,若不相同,則通知主機(jī)重新發(fā)送該消息。
IIC通信方式為半雙工,只有一根SDA線,同一時(shí)間只能單向通信,且都是由主設(shè)備發(fā)起,從設(shè)備被動(dòng)響應(yīng),這在車載多媒體應(yīng)用過程中受到很大限制,也就是主機(jī)作為主設(shè)備只能對(duì)顯示屏進(jìn)行控制,但是顯示屏端作為從設(shè)備發(fā)生狀態(tài)變化時(shí),無法主動(dòng)通知主機(jī),如果采用主機(jī)端不斷查詢的方式,會(huì)存在效率低、成本高的問題?;诖?采用DS90UB947和DS90UB948的I/O映射來解決此問題,使通信實(shí)現(xiàn)全雙工。在此方案中,配置車載主機(jī)作為主設(shè)備,顯示屏端為從設(shè)備,如果有多個(gè)顯示屏,則配置多個(gè)從設(shè)備。當(dāng)主機(jī)向顯示屏發(fā)送消息時(shí),也即主設(shè)備向從設(shè)備發(fā)送信息,直接發(fā)送write信息,從設(shè)備根據(jù)消息內(nèi)容進(jìn)行處理,并在主設(shè)備發(fā)送read信息時(shí),將反饋結(jié)果發(fā)送出去。當(dāng)顯示屏端有狀態(tài)變化需要向主機(jī)發(fā)送信號(hào)時(shí),會(huì)將DS90UB948的INTB_IN端口拉低,與之對(duì)應(yīng)的主機(jī)端DS90UB947的INTB端口也會(huì)拉低,這時(shí)主機(jī)MCU檢測(cè)到引腳電平變化,發(fā)送read信息,獲取顯示屏的信號(hào),實(shí)現(xiàn)雙向通信,以觸摸消息的通信過程為例,具體如圖8所示。
圖8 雙向通信實(shí)例
在主機(jī)聯(lián)屏系統(tǒng)中,主機(jī)和顯示屏之間數(shù)據(jù)的高速傳輸與讀取的延遲會(huì)導(dǎo)致信息丟失,所以在這里需要增加緩沖機(jī)制,尤其是針對(duì)短周期信號(hào)以及對(duì)響應(yīng)速度有較高要求的信號(hào)。以下以觸摸信號(hào)為例介紹緩沖機(jī)制。在文中系統(tǒng)中,觸摸信號(hào)的周期為5 ms,經(jīng)測(cè)量,DS90UB947和DS90UB948的傳輸延時(shí)約為5.2 us,觸摸數(shù)據(jù)外發(fā)在顯示屏端是事件型觸發(fā)發(fā)送,在主機(jī)端中斷觸發(fā)讀取,因此,估算正常響應(yīng)時(shí)間為2 ms??紤]到軟件運(yùn)行時(shí)MCU負(fù)荷的波動(dòng)性,將整個(gè)周期擴(kuò)大10倍即20 ms(忽略傳輸延時(shí)),以此時(shí)間計(jì)算數(shù)據(jù)緩沖的大小。按照目前常用的觸摸需求和數(shù)據(jù)字節(jié)的對(duì)齊,設(shè)定一幀觸摸數(shù)據(jù)的長(zhǎng)度為32 B。IIC配置足夠的傳輸速率,20 ms可外發(fā)4幀數(shù)據(jù),則可設(shè)計(jì)觸摸數(shù)據(jù)緩沖大小為4×32 B,即可用如圖9所示的環(huán)形數(shù)據(jù)緩沖區(qū)實(shí)現(xiàn)上述緩存功能。
圖9 環(huán)形數(shù)據(jù)緩沖原理
緩沖區(qū)具體實(shí)現(xiàn)如圖10所示,設(shè)置數(shù)據(jù)進(jìn)出緩沖區(qū)的標(biāo)志位分別為DataIn和DataOut。當(dāng)一條觸摸數(shù)據(jù)存儲(chǔ)進(jìn)入環(huán)形緩沖區(qū)時(shí),DataIn加1,當(dāng)一條觸摸數(shù)據(jù)從環(huán)形緩沖區(qū)取出時(shí),則DataOut加1。
圖10 環(huán)形數(shù)據(jù)緩沖邏輯
DataIn和DataOut均在1~4之間循環(huán)。正常數(shù)據(jù)存取時(shí)DataOut等于DataIn。當(dāng)DataOut小于DataIn時(shí),即表示外發(fā)延時(shí)超過5 ms;當(dāng)DataOut大于DataIn時(shí),即超過一個(gè)循環(huán),說明外發(fā)延時(shí)超過20 ms。當(dāng)顯示屏端或者主機(jī)端出現(xiàn)上述異常情況時(shí),為保證觸摸數(shù)據(jù)的實(shí)時(shí)性,清空數(shù)據(jù)緩沖區(qū),將DataIn和DataOut同時(shí)清空為1,緩沖區(qū)重新運(yùn)行。該策略不僅適用于觸摸數(shù)據(jù)等有較高響應(yīng)需求的信號(hào),同樣也適用于其它短周期消息,當(dāng)傳輸?shù)臄?shù)據(jù)較少,設(shè)置緩沖區(qū)足夠大時(shí),可有效避免數(shù)據(jù)的丟失。
主機(jī)端和顯示屏端的上電和下電流程如圖11所示。在上電的過程中,主機(jī)端啟動(dòng)12 V電源,同時(shí)顯示屏端的硬線電源引腳WakeUp拉高,顯示屏端也開始上電啟動(dòng)。主機(jī)端和顯示屏端都開始初始化,主機(jī)端MCU設(shè)置為主設(shè)備,加串器DS90UB947為從設(shè)備,MCU對(duì)加串器進(jìn)行IIC通信地址、通信速率的配置,也即對(duì)加串器進(jìn)行初始化。其中,通信地址設(shè)置為0x40,通信速率為400 kb·s-1。同理,對(duì)于顯示屏端,顯示屏MCU切換為master,解串器DS90UB948為slave,MCU對(duì)解串器進(jìn)行IIC通信地址、通信頻率的配置,通信地址為0x20,通信速率為400 kb·s-1,配置完成以后,將屏端MCU切換為從設(shè)備。由于主機(jī)端初始化的過程相對(duì)復(fù)雜,所以正常情況下屏端會(huì)優(yōu)先完成初始化。屏端初始化完成以后,會(huì)將解串器DS90UB948的引腳GPIO1拉低,通過LVDS傳輸,通知主機(jī)端顯示屏初始化已完成。主機(jī)端發(fā)送診斷消息,請(qǐng)求讀取屏幕信息,例如屏幕尺寸、分辨率等,顯示屏根據(jù)相應(yīng)的請(qǐng)求反饋回復(fù)。主機(jī)根據(jù)讀取的顯示屏信息,將視頻信號(hào)準(zhǔn)備好,并向屏端發(fā)送背光開關(guān)信號(hào),屏端接收該信息,同時(shí)判斷解串器DS90UB948的Lock引腳,如果變?yōu)榈碗娖?則驅(qū)動(dòng)顯示屏點(diǎn)亮。
圖11 系統(tǒng)上下電控制流程
對(duì)于下電過程,硬線電源引腳WakeUp拉低以后,將延遲200 ms,顯示屏關(guān)閉背光,主機(jī)端關(guān)閉視頻信息,DS90UB948的Lock引腳拉高,顯示屏端再關(guān)閉MCU供電。
設(shè)置系統(tǒng)兩個(gè)顯示屏端的從設(shè)備地址分別為0x20和0x30,在系統(tǒng)運(yùn)行的過程中,主機(jī)端與顯示屏端進(jìn)行通信的部分通信信號(hào)如表1所示。
表1 系統(tǒng)部分通信信號(hào)
使用邏輯分析儀截取上述通信數(shù)據(jù),如圖12所示,圖12(a)~(d)是主機(jī)端向顯示屏端發(fā)送的消息,其中,圖12(a)~(b)是主機(jī)向兩個(gè)顯示屏分別發(fā)送的背光控制信號(hào),圖12(e)則是顯示屏端通過拉中斷的方式,向主機(jī)端發(fā)送的診斷響應(yīng)信號(hào)。
(a)背光開關(guān)信號(hào)與顯示屏1通信界面
基于IIC的車載多聯(lián)屏通信設(shè)計(jì)方案是利用IIC進(jìn)行控制信號(hào)和數(shù)據(jù)信息的傳輸,在硬件設(shè)計(jì)和軟件設(shè)計(jì)上保證了系統(tǒng)通信的傳輸速率和傳輸可靠性,同時(shí)簡(jiǎn)化了系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),保證了傳輸質(zhì)量,降低了成本。但是,文中系統(tǒng)在通信的安全性上沒有做充分的考慮,后期可進(jìn)一步完善和改進(jìn)。