<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 汽車電子 > 設(shè)計(jì)應(yīng)用 > GMSL SerDes在雙汽車電子控制單元(ECU)中的應(yīng)用

          GMSL SerDes在雙汽車電子控制單元(ECU)中的應(yīng)用

          作者: 時(shí)間:2012-06-21 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:Maxim的吉比特(千兆)多媒體串行鏈路()方案可以對(duì)數(shù)字視頻和音頻數(shù)據(jù)進(jìn)行串行轉(zhuǎn)換,然后通過(guò)一對(duì)雙絞線串行傳輸。另外,集成雙向控制通道可以使能單個(gè)微處理器(µC)對(duì)串行器、解串器和所有連接外設(shè)編程。在典型應(yīng)用中可以省去遠(yuǎn)端微處理器及相關(guān)器件,如:時(shí)鐘源/晶體和低壓電源。此方案不但簡(jiǎn)化了遠(yuǎn)端設(shè)計(jì),而且降低了系統(tǒng)成本、尺寸和功耗。但是,有些情況下,考慮到之外的特殊需求,系統(tǒng)中仍然在鏈路的兩端駐留了µC。這篇應(yīng)用筆記描述了如何連接兩個(gè)µC,控制。

          本文引用地址:http://www.ex-cimer.com/article/196710.htm

          雙µC應(yīng)用基礎(chǔ)

          使用單µC時(shí),如果µC位于串行器側(cè),通常將串行器/解串器兩端控制方向選擇引腳(CDS)置為低電平;如果µC位于解串器側(cè),則將方向控制選擇置為高電平。然而,如果將串行器的CDS置低、解串器的CDS置高,則每個(gè)GMSL芯片都可以同時(shí)連接到各自對(duì)應(yīng)的µC (圖1)。

          11.gif

          圖 1. 簡(jiǎn)單的雙µC應(yīng)用原理圖,CDS設(shè)置如圖所示

          內(nèi)部操作

          使用兩個(gè)µC時(shí),串行器和解串器的I²C主機(jī)都被禁用,而且RX/SDA和TX/SDL由其對(duì)應(yīng)的µC配置為UART接口。由于每個(gè)器件都作為本地器件運(yùn)行,所以不能進(jìn)入休眠狀態(tài)。利用對(duì)應(yīng)的低電平有效PWDN引腳控制每個(gè)器件進(jìn)入低功耗狀態(tài)。切記,當(dāng)從電源關(guān)斷狀態(tài)喚醒時(shí),所有器件設(shè)定都復(fù)位到它們的上電初始值。

          22.gif

          圖2. 串行器狀態(tài)圖(CDS = 低電平)

          33.gif

          圖3. 解串器狀態(tài)圖(CDS = 高電平)

          雙µC應(yīng)用中的沖突問(wèn)題

          圖1所示配置中,每個(gè)µC都可以按照GMSL UART協(xié)議與MAX9259串行器、MAX9260解串器或其它µC通信。GMSL不提供防沖突措施,用戶需要自行提供沖突處理措施。

          獨(dú)立組網(wǎng)

          防沖突最簡(jiǎn)單的方法是讓每個(gè)µC將其附屬的串行器/解串器的FWDCCEN和REVCCEN位置0 (0x04 D[1:0])。這種方案禁用正向和反向控制通道的接收器、發(fā)送器,而且有效地將控制網(wǎng)絡(luò)分成兩個(gè)獨(dú)立網(wǎng)絡(luò)(圖4)。任何通過(guò)串行鏈路的通信首先需要每一側(cè)的µC重新使能相應(yīng)鏈路端的通信。這種設(shè)置在“常通”應(yīng)用中非常有效,其關(guān)鍵鏈路特定寄存器的設(shè)置不會(huì)從初始狀態(tài)改變。

          44.gif

          圖4. 獨(dú)立控制網(wǎng)絡(luò)避免了沖突的可能性

          軟件沖突處理

          在那些兩端串行鏈路間必須通信的應(yīng)用中,用戶可以通過(guò)更高層的協(xié)議避免沖突(圖5)。以下例子中,每個(gè)µC都會(huì)等待ACK幀來(lái)判定其指令是否成功。發(fā)生沖突時(shí),串行器/解串器不會(huì)發(fā)出ACK幀。接收ACK幀失敗后,在重新發(fā)送指令前,µC會(huì)根據(jù)它們的器件地址等待一段時(shí)間。由于此設(shè)計(jì)中,微處理器有不同的器件地址,在重試通信時(shí)不會(huì)出現(xiàn)沖突。

          55.gif

          圖5. 軟件處理沖突的示例

          單/雙µC應(yīng)用

          某些應(yīng)用不要求兩個(gè)µC始終保持工作。工作時(shí),如果任一端的CDS輸入改變了狀態(tài),相應(yīng)器件將按照MAX9259數(shù)據(jù)手冊(cè)中介紹的鏈路啟動(dòng)步驟恢復(fù)工作。根據(jù)需要,在單µC和雙µC工作中切換,輪流使能GMSL會(huì)占用更少資源??梢躁P(guān)斷不用的µC以降低功耗,有助于延長(zhǎng)電池壽命。

          遠(yuǎn)端顯示示例(解串器)

          在下面應(yīng)用中,鏈路的解串器側(cè)是一個(gè)配置用于遙控電源開(kāi)/關(guān)的顯示面板。板子關(guān)斷輸入和單/雙µC控制都連接到MAX9260 GPIO0的輸出端(圖6)。一旦上電,GPIO輸出高電平,以保持遠(yuǎn)端器件關(guān)閉,解串器由于附加的反相器配置為遠(yuǎn)端器件。由于MS連接到GPIO,MAX9260在休眠模式下上電,其余所有器件處于低功耗狀態(tài)。

          為了開(kāi)啟遙控面板,串行器喚醒MAX9260并建立串行鏈路。然后,串行器端的µC設(shè)置GPIO0為低電平,使MS置低、反相器輸出高電平。反相器設(shè)置MAX9260為本地器件,并喚醒遠(yuǎn)程顯示面板的其它電路。MS必須置為低電平,以保持MAX9260 UART接口的基本模式。

          如需關(guān)斷遠(yuǎn)端面板,則串行器設(shè)置GPIO0為高電平來(lái)關(guān)斷遠(yuǎn)端器件并將MAX9260置為遠(yuǎn)端器件。然后,在MAX9260內(nèi)設(shè)置SLEEP = 1,使器件進(jìn)入睡眠模式。

          66.gif

          圖6. 單/雙µC遠(yuǎn)端顯示舉例

          遠(yuǎn)程攝像機(jī)舉例(串行器)

          類似于上述例子,鏈路的串行器側(cè)為配置成遠(yuǎn)端電源開(kāi)/關(guān)的攝像模組。MAX9259的INT輸出控制板子的關(guān)斷輸入和單/雙µC切換(圖7)。在此應(yīng)用中,INT作為GPO使用,通過(guò)設(shè)置SETINT(MAX9259的0x0D D7)或解串器的INT輸入對(duì)輸出進(jìn)行控制。一旦上電,INT輸出為低電平,保持遠(yuǎn)端器件關(guān)斷。反相器輸出連接到CDS,將串行器配置為遠(yuǎn)端器件。由于低電平有效AUTOS置為高電平,MAX9259在休眠模式下上電。

          如要開(kāi)啟遠(yuǎn)端面板,解串器通過(guò)GMSL UART指令喚醒MAX9259。然后,解串器設(shè)置MAX9259的INT輸出為高電平,使所有遠(yuǎn)端器件上電。反相器輸出將MAX9259置為本地器件,可通過(guò)本地µC接收UART指令。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: SerDes GMSL ECU 汽車電子

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();