《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > LIN总线与USB总线接口的设计与实现

LIN总线与USB总线接口的设计与实现

2009-04-09
作者:黄 丽1; 黄 辉2; 刘 敏3

  摘??要: 從系統整體結構、硬軟件設計等方面論述了車身控制模塊的LIN總線接口與PC機的USB接口互連的設計方法。該設計已經應用到車身控制設備的測試之中。
  關鍵詞:? LIN總線; USB/CDC; 單片機

?

  LIN總線廣泛應用于車門、方向盤、座椅、溫度和發動機冷卻風扇等控制中。目前工程師大多采用專用的測試設備來測試帶LIN總線的車身控制模塊(BCM)。但該類測試設備功能單一,而且成本較高。目前USB接口已經在PC機上普及,如果能設計LIN總線和USB總線互連的接口,直接將BCM模塊中的信息通過USB接口上傳到PC機,就能充分利用PC機的資源來對BCM進行測試,不僅可提供豐富的人機界面和智能化的測試管理手段,而且能大大降低測試成本。PIC18F2550單片機既內嵌有USB接口,又提供了支持LIN協議的USART接口,且具有良好的電氣性能。本文即以此單片機為核心設計了一種LIN總線和USB總線互連的接口轉換器。
1 LIN 總線技術簡介
  LIN總線基于通用的UART/SCI接口,其最高通信速率為20Kbps,在硬件和軟件上都易于實現。其低成本的優勢使得一些先進的機械電子裝置,如智能傳感器和執行器等可應用到車輛系統中。目前LIN總線的協議已逐漸從1.3升級到2.0,最新的標準為2.1。當前大多數的LIN接口芯片支持LIN 2.0協議,本文采用的協議即為LIN 2.0。
2 USB-LIN 轉換接口的總體設計
  本文設計的USB-LIN轉換接口主要包括三大部分:單片機的USB接口部分、LIN總線的接口部分和電源隔離部分,如圖1所示。其中,單片機的5V電源來自PC機的USB接口,LIN收發器的電源來自汽車的12V蓄電池。光耦PS9701實現了兩套電源系統的隔離,有效地保護了PC機的USB接口和BCM模塊。

?

3 USB-LIN 轉換接口的硬件設計
3.1 PIC18F2550單片機
  PIC18F2550是Microchip公司生產的增強型閃存USB 單片機[1],它具有兼容USB2.0協議的USB接口,內嵌1KB雙端口存取RAM。USB協議棧實現了四種傳輸方式:控制傳輸方式、中斷傳輸方式、批量傳輸方式和實時傳輸方式。此外,PIC18F2550還內嵌增強型USART 模塊,支持LIN總線協議。PIC18F2550對USB接口和LIN接口均提供了良好的支持,因此,選用該單片機可簡化LIN和USB轉換接口的外圍電路的設計。
3.2 USB接口部分的硬件設計
  USN-LIN接口電路的USB部分的設計如圖2所示。

?


  其中,USBH為USB接口,PC機的USB口提供的電壓為5V±5%,電流最小為100mA,最大為500mA。PIC18F2550正常工作時應提供的電源范圍為4.2V~5.5V,如果選用PIC18LF2550,電源范圍可拓寬至2.6V~5.5V,實際測試中,本電路消耗的電流僅為50mA。因此,無論是筆記本電腦還是臺式機,其USB口提供的電源都能夠保證該電路正常工作。
  圖2中信號RC1/FT、RC0/CS、RC6/TX 和RC7/RX連接至光隔回路,以實現PC機的USB口和LIN總線的電源隔離。其中,RC1/FT為LIN總線故障偵測端口,通過該端口,ATA6625(LIN接口芯片)將LIN總線的狀態傳送到PIC18F2550,以指明當前LIN總線是處于故障狀態,還是處于總線退出或空閑狀態。RC0/CS為LIN總線收發器的片選端。RC6/TX為LIN總線收發器的發送數據端。RC7/RX為LIN總線收發器的接收數據端。為改善光隔的耦合波形,在輸入端RC1/FT和RC7/RX上都加入了1kΩ的上拉電阻。
3.3 與LIN總線接口部分的硬件設計
  與LIN總線接口部分電路如圖3所示。圖3中,ATA6625為LIN收發器[2],其設計符合LIN 2.0規范和SAEJ2602標準,該芯片的ESD穩定性高于6kV。ATA6625還包括一個超低壓降型穩壓器,穩壓器的輸出為5V,電流可達50mA,可為應用方案中的MCU和其他芯片提供電源,能有效降低系統的成本。

?


  圖3中,LINH為LIN總線接口,Vbat由12V蓄電池供電。D3和D4防止保護蓄電池過載。LIN總線端的電源與PC機的USB端口是隔離的。LIN總線收發器和單片機之間通過光耦PS9701進行數據交換。當本節點為主節點時,接上1kΩ電阻R13以提高總線的驅動能力;當本節點為從節點時,應去掉此電阻。
  由于LIN收發芯片的RX管腳和FAULT管腳驅動能力有限,不能直接驅動PS9701,因此,在LIN收發器至光隔驅動回路上添加了74LVC2G04反相器。
3.4?兩套電源系統隔離部分的硬件設計
  為了防止PC機的USB接口的損壞,在PC機的5V電源和汽車蓄電池的供電系統之間加入了光電隔離,其電路如圖4所示。考慮到LIN總線的波特率上限為20Kb/s,電路中采用了PS9701高速光隔,該光電隔離上升時延僅為50ns。

?


4 LIN總線和USB總線通信轉換的軟件設計
  USB-LIN接口的總體程序設計框圖如圖5所示,整個程序分為主程序和中斷服務程序兩部分。其中,LIN總線的主任務狀態機在定時中斷服務程序中實現,從任務狀態機在LIN總線的上升沿中斷服務程序中實現。

?


  USB-LIN接口的數據緩沖區的設計如圖6所示,主要包括LIN端數據交換、USB端的數據交換以及LIN端用戶緩沖區與USB端用戶緩沖區之間的數據解析和交換。

?


4.1 LIN總線的軟件實現
  LIN總線軟件部分包括網絡管理的實現、主/從任務狀態機的實現[3]、調度表和信息綁定表的更新等。其中,主任務只分布在主節點上,而從任務分布在所有的節點上。LIN2.0協議規定了主/從任務的狀態轉移圖[3]。主任務的核心工作是產生正確的報文頭,報頭傳輸是報文傳輸的引導,其傳輸機制基于時間調度表,調度表規定了幀傳送的順序和兩幀間的時間間隔。LIN主任務的調度原理如圖7所示。其中,定時器1作為調度的時間片定時器,設定為1ms;定時器0作為幀超時定時器,其設定依賴于節點的時鐘頻率和通信的波特率。

?


  程序設計中涉及到調度表NormalTable和信息綁定表L_HandleList。處理句柄handle實現了這兩個重要表的聯絡。調度表給出了每個幀的時間片,主任務根據該表循環啟動幀的傳輸。調度表包括:幀的處理句柄handle、幀的PID和該幀的時間片。調度表只保存在主節點之中。
  信息綁定表L_HandleList定義了一個節點對接收到的具有某個特定PID的幀的響應方式,綁定表將PID和本地的數據緩沖區進行了綁定,從而實現了主節點對從節點緩沖區的直接操作,或者實現了對從節點上的物理量的直接操作。主從節點上都保存有綁定表,依據此表可知道某個信息的長度、流向和存放在本地的位置,以決定是否接收此信息,或是否響應此信息的召喚和相應方式。
  程序中,L_HandleList為結構型數組,包括:(1)幀的數據流向,分為接收和發送兩種模式;(2)幀數據在本節點中的存儲指針;(3)響應幀的長度,不包括校驗場;(4)用于配置的消息ID;(5)PID的存儲指針。其中,第(4)項和第(5)項用于為從節點中的某個幀分配PID。每個節點都保存有各自的信息綁定表,最多可保存20組。
  調度表NormalTable和信息綁定表L_HandleList都保存在PIC18F2550的EEPROM中,這兩個表通過PC機的USB口進行更新。
  LIN驅動程序主要實現以下七個重要的API函數。
  (1) void l_ifc_init_MyLinIfc(void),對本節點的LIN總線驅動程序進行初始化。
  (2) unsigned int l_ifc_read_status_MyLinIfc,返回LIN驅動器的狀態。
  (3) void l_ifc_wake_up_MyLinIfc(void),請求LIN總線喚醒。
  (4) void l_ifc_goto_sleep_req_MyLinIfc,強制命令LIN總線上的從節點進入睡眠狀態。
  (5) unsigned char ld_AssignFrameID(l_u8 *l_NAD),給指定的幀分配PID。
  (6) void l_ifc_rx_MyLinIfc(void),根據本節點的配置處理整個數據交換,包括數據收發、傳輸超時處理和校驗等。如果節點為主節點,則依據主/從任務狀態機實現主/從任務的功能;如果節點為從節點,則只需依據從任務狀態機實現從任務的功能。
  (7) unsigned char l_ifc_pid_to_handle(void),根據給定的PID,指定該PID的幀對應的處理句柄,從而在信息綁定表中查找該幀的處理方法。
4.2 USB總線的軟件實現
  PIC18F2550的USB接口可采用通用模式或者CDC模式[4]與PC機進行數據交換。雖然通用模式擁有全速USB速率,但是PC機端的驅動程序實現起來較為復雜。USB-LIN接口中處理的是低速的LIN通信,不需要1Mb/s以上的通信速率。因此,單片機中的USB接口不采用通用模式,而采用CDC模式。
  在CDC模式下,CDC子類實現虛擬串口通信的協議[4]。由于大部分的操作系統都帶有支持CDC類的設備驅動程序,可自動識別CDC類的設備,因此在PC機端可不用編寫USB的驅動程序,只需將接口視為虛擬串口即可。單片機的USB口工作于CDC模式時,最高的通信速率為1Mb/s,完全可以滿足LIN總線數據交換的要求。
  Microchip為PIC18F2550提供了完整的USB/CDC類固件,主要實現以下API函數[5]
  (1) void putrsUSBUSART(const rom char *data),將字符串從程序存儲區寫到USB端口。
  (2) void putsUSBUSART(char *data),將字符串從數據存儲區寫到USB端口。
  (3) void mUSBUSARTTxRom(rom byte *pData, byte len),將一個特定長度的字符串從程序存儲區中寫到USB端口。
  (4) void mUSBUSARTTxRam(byte *pData, byte len),將一個特定長度的字符串從數據存儲區中寫到USB端口。
  (5) BOOL mUSBUSARTIsTxTrfReady(void),檢查CDC類是否有更多的數據要發送。
  (6) byte getsUSBUSART(char *buffer, byte len),將數據從USB/CDC緩沖區中拷貝到用戶緩沖區。
  (7) byte mCDCGetRxLength(void),獲得從USB/CDC緩沖區中拷貝到用戶緩沖區的數據的實際長度。此函數緊跟在getsUSBUSART之后調用。
  在調用putrsUSBUSART、putsUSBUSART、mUSBUSAR-TTxRam和mUSBUSARTTxRom之前,先要調用mUSBUSA
RTIsTxTrfReady檢查固件是否準備好發送數據到USB口,調用getsUSBUSART時要求目標緩沖區的長度要大于USB/CDC緩沖區的長度。
  本文給出了LIN接口與USB接口轉換的設計方案,介紹了基于LIN總線和USB總線的接口芯片的通信轉換的硬件設計,并給出了軟件設計方法。該方案已經用于BCM模塊的測試和LIN 網絡協議的教學培訓中,具有一定的實用價值。

參考文獻
[1]?PIC18F2455/2550/4455/4550 Data sheet,http://www.microchip.com,2007.
[2] ?ATA6623/ATA6625 Data sheet.http://www.atmel.com/,2008.
[3] ?LIN specification package reversion 2.0. http://www.linsubbus.org/,2003.
[4] ?吳明琪,馬潮.嵌入式系統的USB虛擬串口設計.單片機與嵌入式系統應用,2005,(4).
[5] ?Migrating Applications to USB from RS-232 UART with?minimal impact on PC software.http://www.microchip.com,?2004.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产一区香蕉久久| 无码日韩人妻精品久久蜜桃V | 欧美一级视频一区二区| 岛国一区二区三区高清视频| 国产日产久久高清欧美一区| 日本欧美国产在线| 国产亚洲欧美在线视频| 99热一区二区三区| 99精品免费在线观看| 天天干天天色天天爽| 欧美激情第三页| 91精品国产91久久久久福利| 国产精品久久网| 91精品久久久久久久久久久久久久| 麻豆成人av| 日本国产欧美一区二区三区| 欧美日韩第二页| 欧美精品久久久久a| 久久五月天色综合| 国产精品嫩草视频| 国产精品日韩欧美| 久久精品午夜福利| 99视频在线播放| 韩日欧美一区二区| 亚洲欧美日韩精品久久久| 无码日韩人妻精品久久蜜桃V| 欧美激情在线一区| 国产在线播放一区二区| 一级日韩一区在线观看| 国产日产久久高清欧美一区| 日韩在线视频观看| 亚洲精品自在在线观看| 99热一区二区三区| 国产精品一区二区免费在线观看| 国产欧美一区二区三区久久| 欧美精品中文字幕一区| 久久精品第九区免费观看| 99视频国产精品免费观看| 国产专区在线视频| 欧美一区二区三区精美影视| 五月天色婷婷综合|