摘要:隨著汽車電子技術(shù)的發(fā)展,LIN(Local InterconnectNetwork)總線技術(shù)更多地運用到汽車的分布式電子控制系統(tǒng)中。在LIN協(xié)議的各種實現(xiàn)方法和分析工具中,比較各種方法和工具的性能,優(yōu)缺點,采用PsoC和WirelessUSB技術(shù)實現(xiàn)LIN總線分析儀。因為PsoC具有硬件模塊可重配置功能以及芯片在不同的時鐘周期中實現(xiàn)不同的功能,能有效地節(jié)約設(shè)計時間,降低了系統(tǒng)功耗和開發(fā)成本。
關(guān)鍵詞:LIN;PSoC;WieflessUSB
引言
LIN是一種低成本的串行通訊網(wǎng)絡(luò),用于實現(xiàn)汽車中的分布式電子系統(tǒng)控制。LIN的目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能。在不需要CAN總線的帶寬和多功能的場合,比如智能傳感器和制動裝置之間的通訊,使用LIN總線可大大節(jié)省成本。
目前,低成本的局部互聯(lián)網(wǎng)絡(luò)LIN在汽車電子和工業(yè)控制中的應(yīng)用越來越廣泛,而基于LIN總線的協(xié)議分析和調(diào)試測試工具少且昂貴。大部分LIN總線開發(fā)工具存在一些問題:(1)調(diào)試LIN總線通常做法是通過網(wǎng)關(guān)將LIN幀轉(zhuǎn)換成CAN幀,再用基于CAN的測試工具間接調(diào)試LIN,當(dāng)網(wǎng)關(guān)出現(xiàn)問題時這種方式就行不通;(2)和PC連接時采用串口或USB接口等有線的連接方式,在特定環(huán)境無法引線的情況下無法進(jìn)行現(xiàn)場開發(fā)調(diào)試。
SoC(System on a Chip片上系統(tǒng))技術(shù)是將微控制器或DSP核、存儲器、邏輯電路、I/O接口及其他功能模塊綜合在一顆芯片上的系統(tǒng)解決方案。由于處理器和存儲器的可編程能力,使得這種以CPU為核心的解決方案具有很強(qiáng)的靈活性和可修改能力。賽普拉斯(cy—press)公司開發(fā)的PSoC是目前最具靈活性的基于微控制器的片上系統(tǒng)解決方案,它模塊化的片內(nèi)數(shù)字和模擬電路不僅具有很高的可編程性,而且還可以實現(xiàn)動態(tài)重新配置,即在運行時根據(jù)系統(tǒng)不同時刻的需求,通過編程動態(tài)地改變存儲在片內(nèi)閃速存儲器中設(shè)定的參數(shù).重新定義系統(tǒng)所需要功能模塊的種類和數(shù)量,動態(tài)地完成芯片資源的重新分配,實現(xiàn)新的外圍元器件的功能。采用PSoC可以迅速縮短設(shè)計周期,降低設(shè)計風(fēng)險,保證系統(tǒng)資源的最大化、最合理化和最經(jīng)濟(jì)化應(yīng)用,在無線、手持式設(shè)備、數(shù)據(jù)通信和工業(yè)系統(tǒng)設(shè)計等領(lǐng)域PSoC都有著廣泛的應(yīng)用。
WirelessUSB是Cypress公司專門針對短距離點到點或多點到點的無線連接而設(shè)計的一種低延遲、干擾免疫、低成本和低功耗的短距離無線網(wǎng)絡(luò),適合無線電腦外設(shè)和無線傳感器網(wǎng)絡(luò)應(yīng)用。WirelessUSB的協(xié)議是輕量級的,可以在只帶256字節(jié)RAM和8K字節(jié)ROM的8位微控制器中實現(xiàn)。WirelessUSB使用頻分多址(FDMA)和碼分多址(CDMA),可有效避開其它無線網(wǎng)絡(luò)的干擾,能夠與藍(lán)牙、Wi-Fi等無線網(wǎng)絡(luò)共存,在面向2.4GHz無線系統(tǒng)的同類產(chǎn)品中提供最佳的抗干擾性能。傳輸距離從10米(最高1Mbps)到50米(最高62.5Kbps),使用既有的USB架構(gòu),因此無須特別的驅(qū)動軟件。
為彌補(bǔ)LIN網(wǎng)絡(luò)開發(fā)工具的不足,本文提出的方案一基于PSOC的無線LIN總線分析儀,通過無線連接能并行調(diào)試多個LIN總線,在有效降低開發(fā)成本和提高開發(fā)效率的同時提供更好的擴(kuò)展性和靈活性。
LIN總線分析儀硬件介紹
LIN總線數(shù)據(jù)分析系統(tǒng)由主機(jī)橋接器(1個)和總線監(jiān)控終端(多個)兩部分組成。總線監(jiān)控終端采集LIN總線上的數(shù)據(jù),通過無線網(wǎng)絡(luò)發(fā)送給主機(jī)橋接器;主機(jī)橋接器從無線網(wǎng)絡(luò)上接收LIN總線監(jiān)控數(shù)據(jù),通過USB接口發(fā)送到PC,由PC監(jiān)控軟件對數(shù)據(jù)做進(jìn)一步處理。系統(tǒng)可以實現(xiàn)數(shù)據(jù)監(jiān)聽、錯誤檢測、主機(jī)仿真、從機(jī)仿真等功能。
系統(tǒng)的硬件由主機(jī)橋接器(通過USB接口連接PC)和LIN總線監(jiān)控終端(連接LIN總線)組成,LIN總線監(jiān)控終端選用MCU+RF的構(gòu)架,包括PSoC控制器、射頻收發(fā)器、LIN收發(fā)器和電源管理等。
主機(jī)橋接器采用PRoC架構(gòu),在單芯片內(nèi)集成了線性穩(wěn)壓器、enCoRe-U微控制器、USB設(shè)備和射頻收發(fā)器,僅需極少的外部元件。
系統(tǒng)在選擇控制器時考慮到功能的擴(kuò)展,選用了功能強(qiáng)大的CY8C29466,它集成了性能為4M1PS的8位M8C處理器、32K的Flash、2K的SRAM,還集成了24/48MHz晶振、32KHz晶振,以及16個可編程的功能強(qiáng)大的數(shù)字用戶模塊、12個模擬用戶模塊和可編程的內(nèi)部互聯(lián),可非常方便地選用多達(dá)100種的外設(shè)和設(shè)置連接方式,將PCB上大部分的元件和走線移到芯片內(nèi)部,而且可動態(tài)重配置,開發(fā)非常靈活。
系統(tǒng)中的射頻芯片選擇CYRF6936,它屬于WirelessUSB LP系列,是Cypress的第二代射頻片上系統(tǒng)(Soc),兼容第一代的CYWUSB69XX器件。CYRF6936增加了一系列增強(qiáng)的特性,包括更廣的操作電壓范圍(1.8~3.6V)、更小的工作電流、更高的數(shù)據(jù)率(最大速率為1Mbps)、更短的晶振起振時間、同步穩(wěn)定時間和鏈路切換時間。CYRF6936可用于無線鼠標(biāo)鍵盤、無線操縱桿、遠(yuǎn)程無線傳感和控制、無線耳機(jī)、家庭自動化和自動化儀表等。
主機(jī)橋接器(Bridge)選用Cypress的PRoC(Programmable Radio On Chip)LP(Low Power)芯片CYRF69213。PRoC LP器件在一個芯片里集成了微控制器和射頻收發(fā)器,是同樣封裝提供雙重功能的單芯片解決方案,它主要集成了性能為4MIPS的8位M8C處理器、USB2.0低速接口、2.4GHz射頻收發(fā)器,內(nèi)部還集成了3.3V電壓調(diào)節(jié)器和USB上拉電阻等,大大減少外部元件,縮小電路板面積,有效降低成本。CYRF69.213的主要用于無線網(wǎng)絡(luò)的橋接器,將無線網(wǎng)絡(luò)的數(shù)據(jù)通過USB接口發(fā)往PC機(jī),同時將PC機(jī)的控制命令發(fā)給無線設(shè)備。
局部互聯(lián)網(wǎng)絡(luò)(LIN)是車身網(wǎng)絡(luò)的最低層級的網(wǎng)絡(luò),它提供了傳感器和執(zhí)行器之間的低成本通信。本論文采用LIN總線驅(qū)動器MC33661符合LIN 2.0規(guī)范,很好地解決了以前的驅(qū)動器MC33399模式過于單一、無法調(diào)節(jié)翻轉(zhuǎn)頻率導(dǎo)致器件功耗較大、驅(qū)動功率不夠等問題。
考慮到系統(tǒng)的外部電源、MCU和無線射頻模塊的工作電源、MCU的工作電流,電源模塊選用帶關(guān)斷功能的低壓差線性穩(wěn)壓器LT1121-5(5V穩(wěn)壓)和高效率的線性電壓調(diào)節(jié)器AMS1117~3.3(3.3V穩(wěn)壓)。
LIN總線分析儀軟件介紹
本系統(tǒng)的軟件設(shè)計方案圍繞著數(shù)據(jù)的提取、傳輸和處理。從數(shù)據(jù)流向上看,數(shù)據(jù)經(jīng)過四個階段的處理,分剮是LIN總線協(xié)議處理(從總線上提取數(shù)據(jù)幀)、WirelessUSB協(xié)議處理、USB協(xié)議處理和PC監(jiān)控軟件的處理(顯示監(jiān)控數(shù)據(jù)和總線信息)。本系統(tǒng)軟件可分成三大部分:總線監(jiān)控終端、主機(jī)橋接器和PC,其中總線監(jiān)控終端包括LIN協(xié)議處理和WirelessUSB協(xié)議處理,主機(jī)橋接器包括WirelessUSB協(xié)議處理和USB協(xié)議處理,PC包括USB協(xié)議處理和監(jiān)控軟件處理。
軟件需要處理的任務(wù)
總線監(jiān)控終端軟件設(shè)計
LIN總線監(jiān)控任務(wù):該任務(wù)時刻監(jiān)控LIN總線的活動,當(dāng)有數(shù)據(jù)幀到達(dá)時,將接收到的數(shù)據(jù)幀放入無線發(fā)送緩沖區(qū),同時還需處理沖突和數(shù)據(jù)出錯。
WirelessUSB從機(jī)傳輸任務(wù):該任務(wù)監(jiān)控數(shù)據(jù)幀傳送到主機(jī)橋接器,同時接收主機(jī)的配置信息,傳遞給LIN監(jiān)控任務(wù)。
主機(jī)橋接器軟件設(shè)計
主機(jī)USB設(shè)備監(jiān)聽任務(wù):主要處理和USB主機(jī)的交互,時刻監(jiān)聽USB主機(jī)的請求事務(wù)。
WirelessUSB主機(jī)傳輸任務(wù):主要功能是接收監(jiān)控數(shù)據(jù)幀,傳送給USB監(jiān)聽任務(wù),同時將主機(jī)的配置信息傳送給總線監(jiān)控終端。
PC機(jī)監(jiān)控軟件設(shè)計:
主機(jī)USB傳輸任務(wù):該任務(wù)主要處理主機(jī)與USB設(shè)備的交換,定時發(fā)送事務(wù)輪詢USB設(shè)備。
主機(jī)輸入輸出處理任務(wù):該任務(wù)主要處理USB數(shù)據(jù)與用戶的交互。
LIN2.1協(xié)議各層的實現(xiàn)任務(wù)
LIN總線具有規(guī)范的分層結(jié)構(gòu),它定義了物理層、數(shù)據(jù)鏈路層和傳輸層的協(xié)議規(guī)范。物理層定義了LIN總線傳輸媒介的物理特性、總線驅(qū)動和接收特性、位速率誤差和位定時和同步等。數(shù)據(jù)鏈路層實現(xiàn)數(shù)據(jù)幀接收和錯誤檢測、波特率計算以及數(shù)據(jù)的包裝,解包,負(fù)責(zé)報文過濾和恢復(fù)管理等功能。傳輸層實現(xiàn)了單幀或多幀數(shù)據(jù)傳輸,在應(yīng)用層和數(shù)據(jù)鏈路層之間翻譯數(shù)據(jù)幀,傳輸診斷請求和響應(yīng),提供外部總線的診斷接口,實現(xiàn)節(jié)點配置、識別和診斷。
數(shù)據(jù)鏈路層是LIN2.1協(xié)議的核心,負(fù)責(zé)發(fā)送和接收數(shù)據(jù)幀,處理信號的組幀和解幀。
LIN協(xié)議的數(shù)據(jù)鏈路層的PSoC實現(xiàn)
由于LIN總線分析儀既可以監(jiān)聽總線活動,也可以仿真主機(jī)或從機(jī)節(jié)點。重點介紹總線分析儀數(shù)據(jù)鏈路層的實現(xiàn)。總線分析儀的數(shù)據(jù)鏈路層的實現(xiàn)包括調(diào)度表定時、間隔場的產(chǎn)生、間隔場和同步場的接收以及數(shù)據(jù)的傳輸。
調(diào)度表定時是通過一個8位計數(shù)器(schedule Timer)來實現(xiàn)的。間隔場采用三個8位計數(shù)器產(chǎn)生,一個8位計數(shù)器(SB_Baud_Rate_Counter)用來產(chǎn)生波特率時鐘,為后兩個計數(shù)器提供時鐘;一個8位計數(shù)器(sB_Bit_Time_Counter)用來在每個數(shù)據(jù)位的中間產(chǎn)生位時中斷;一個8位計數(shù)器(Synchro_Break_Counter)用來產(chǎn)生實際的間隔場。
接收間隔場和同步場的硬件配置包括1個16位的定時器、1個16位的計數(shù)器和RX(串口接收)引腳。一個帶輸入捕捉的16位定時器用來計算間隔場和同步場上升沿和下降沿之間的時間。一個16位的計數(shù)器用來判斷超時狀態(tài)。RX引腳連接到定時器的輸入捕捉,配置捕捉觸發(fā)為上升沿或下降沿。同時,使能RX引腳的GPIO中斷,所有的計算都在GPIO中斷服務(wù)程序中進(jìn)行。
數(shù)據(jù)傳輸階段的硬件配置包括2個8位計數(shù)器、1個串口接收模塊和1個串口發(fā)送模塊。一個8位計數(shù)器(DR_Baud_Rate_Counter)用來產(chǎn)生波特率時鐘;一個8位計數(shù)器(Bit_Time_Counter)用來在每個數(shù)據(jù)位的中間產(chǎn)生位時中斷,串口接收模塊(RX8)用來接收數(shù)據(jù)(UART 8N1編碼格式);串口發(fā)送模塊(TX8)用來發(fā)送數(shù)據(jù)(UART 8N1編碼格式)。
相關(guān)處理如下:
緩沖器空中斷:如果是第一次中斷,則啟動位時定時器并打開中斷。如果要發(fā)送的字節(jié)數(shù)為O,則置最后字節(jié)已發(fā)送標(biāo)志,否則發(fā)送下一字節(jié)數(shù)據(jù),同時字節(jié)數(shù)減1。
接收緩沖器滿中斷:當(dāng)工作監(jiān)聽模式時,將所有接收到的數(shù)據(jù)保存到臨時緩沖區(qū)。分析儀如果處于發(fā)送狀態(tài)時則立即中斷返回,否則處理接收的數(shù)據(jù)。當(dāng)工作在主機(jī)模式時,隨后的處理與主機(jī)的接收中斷處理相同。當(dāng)工作在從機(jī)模式時,隨后的處理與從機(jī)的接收中斷處理相同。
數(shù)據(jù)傳輸位超時中斷:當(dāng)工作在主機(jī)模式時,中斷處理與主機(jī)的位超時中斷處理相同。當(dāng)工作在從機(jī)模式時,隨后的處理與從機(jī)的位超時中斷處理相同。
數(shù)據(jù)傳輸位錯誤中斷:位時計數(shù)器每位產(chǎn)生一次中斷,在ISR中通過比較TX和RX引腳是否相同來判斷是否有位錯誤。如果檢測到位錯誤,將載人接收間隔場和同步場的硬件配置,退出幀傳輸。
主機(jī)節(jié)點的數(shù)據(jù)鏈路層實現(xiàn)包括調(diào)度表的定時、間隔場的產(chǎn)生、字節(jié)數(shù)據(jù)(包括同步場和PID)的發(fā)送和字節(jié)數(shù)據(jù)的接收。
從機(jī)節(jié)點的數(shù)據(jù)鏈路層實現(xiàn)包括間隔場和同步場的接收、字節(jié)數(shù)據(jù)(包括PID)的接收和字節(jié)數(shù)據(jù)的發(fā)送。
結(jié)語
LIN總線分析儀基于PSOC架構(gòu),使用了5個數(shù)字模塊來實現(xiàn)數(shù)據(jù)鏈路層的功能,充分利用了芯片內(nèi)部多種硬件資源和動態(tài)可重配置特性,大大減輕軟件負(fù)擔(dān),降低CPU的占用率。驅(qū)動軟件運行在中斷級,基于事件驅(qū)動,無循環(huán)等待和阻塞。當(dāng)CPU運行在24MHz并且LIN傳輸速率為19200bps時,在消息間隔CPU的占用率為0%,在發(fā)送或接收消息時CPU最大的占用率為10%。實際測試表明該方案可靠、應(yīng)用方便、能夠有效降低成本,縮短開發(fā)流程。