楊小衛(wèi),楊世文
(中北大學(xué)機(jī)械與動力工程學(xué)院,山西太原 030051)
在汽車電子技術(shù)飛速發(fā)展的時代,CAN總線在車載網(wǎng)絡(luò)中的應(yīng)用越來越普及。為方便信息監(jiān)測和故障檢測,CAN總線與PC機(jī)的信息交互必不可少。設(shè)計CAN主節(jié)點(diǎn)作為轉(zhuǎn)換接口來解決PC機(jī)與車載CAN總線信息交互,以實(shí)現(xiàn)CAN數(shù)據(jù)轉(zhuǎn)異步串口數(shù)據(jù)和異步串口數(shù)據(jù)轉(zhuǎn)USB數(shù)據(jù)。選擇飛思卡爾公司針對汽車電子和CAN節(jié)點(diǎn)研發(fā)的16位控制器MC9S12XS256作為CAN總線通信模塊的主節(jié)點(diǎn)控制器,選擇CP2101芯片作為PC機(jī)和MC9S12XS256芯片的通信轉(zhuǎn)換器。
MC9S12XS256單片機(jī)是飛思卡爾公司針對汽車電子和CAN總線通信而研發(fā)的16位控制器[1],作為主節(jié)點(diǎn)的控制器,其主要作用有2個:(1)接收CAN總線的消息并通過串口發(fā)送給PC機(jī);(2)接收從PC機(jī)傳輸?shù)臄?shù)據(jù)或命令并轉(zhuǎn)換為CAN幀格式向CAN總線發(fā)送數(shù)據(jù)。它有1個MSCAN控制器模塊和2個SCI模塊用于實(shí)現(xiàn)上述功能。CAN總線數(shù)據(jù)轉(zhuǎn)串口數(shù)據(jù)是在MC9S12XS256內(nèi)部完成,過程為MSCAN從CAN總線接收數(shù)據(jù)然后以中斷的方式通知MC9S12XS256單片機(jī)讀走數(shù)據(jù)并重置中斷標(biāo)識位,接下來MC9S12XS256單片機(jī)通過SCI模塊把數(shù)據(jù)轉(zhuǎn)換為串口數(shù)據(jù)。
CP2101是美國Silicon公司推出的USB-UART橋接電路。該電路的集成度高,內(nèi)置USB2.0全速功能控制器和收發(fā)器、48 MHz晶體振蕩器和異步串行數(shù)據(jù)總線,波特率可高達(dá)900 kb/s[2]。CP2101可以通過驅(qū)動程序?qū)C的USB口虛擬成COM口,這樣串口設(shè)備就可以通過CP2101與PC機(jī)進(jìn)行數(shù)據(jù)的收發(fā)。雖然USB在全速模式下的傳輸速率可達(dá)12 Mb/s,但是受串口設(shè)備傳輸速率的限制,串口設(shè)備和PC機(jī)的通信速率不會因?yàn)閁SB口連接的關(guān)系而提高,CP2101的作用只是擴(kuò)展了PC的串口,方便了串口設(shè)備的使用。
CAN總線傳輸模塊包括CAN控制器、光耦隔離器和CAN總線收發(fā)器。CAN控制器是MC9S12XS256自帶的MSCAN模塊;光耦隔離器是為了隔離CAN控制器和CAN收發(fā)器之間的電氣干擾,選擇典型的6N137光耦隔離器;CAN總線收發(fā)器用于完成總線電平和邏輯0和1的相互轉(zhuǎn)換,這里選擇飛利浦公司生產(chǎn)的典型收發(fā)器PCA82C250芯片。CAN總線傳輸模塊設(shè)計如圖1所示。
對圖1中的電路圖作一些說明,這里PCA82C250的CANH及CANL引腳各串聯(lián)一個5 Ω的電阻再與CAN總線相連,電阻起到了一定的限流作用,可以避免82C250受到過流的沖擊[3]。同時,CANH和CANL與地之間各接一個30 pF的電容,這兩個電容分別與電阻R5和R6構(gòu)成一階低通濾波器,能在一定程度上過濾總線上的高頻干擾并起到防電磁輻射的作用。另外,在兩根CAN總線接入端與地之間分別反接一個保護(hù)二極管,它能將總線的最低電平鉗位在-0.7 V以上,當(dāng)CAN總線有較高負(fù)電壓時,通過二極管短路可起到一定的過壓保護(hù)作用。
USB轉(zhuǎn)異步串口的傳輸模塊包括MC9S12XS256的SCI模塊、CP2101芯片、PC機(jī)的USB接口和外圍電路。MC9S12XS256有兩個SCI模塊,選擇使用SCI0模塊,PS0為串口模塊0的接收接口RXD0,PS1為串口模塊0的傳輸接口TXD0。USB轉(zhuǎn)異步串口的傳輸模塊設(shè)計如圖2所示。
對圖2中的電路圖進(jìn)行一些說明,CP2101由PC機(jī)的USB接口供電,VBUS為USB功能控制器供電,REGIN為電壓調(diào)節(jié)器供電,電壓調(diào)節(jié)器輸出3.3 V電壓從VDD口引出,這樣可以方便電路設(shè)計[4]。SUSPEND在CP2101掛起時輸出高電平,其他時候輸出低電平,這里外接一個二極管用來提示芯片的工作狀態(tài)。正常工作狀態(tài)時二極管點(diǎn)亮,掛起狀態(tài)時二極管熄滅。
在完成上述硬件設(shè)計后,需要對硬件電路進(jìn)行調(diào)試和收發(fā)驗(yàn)證。調(diào)試驗(yàn)證的方法是利用MSCAN的自發(fā)自收功能,讓MSCAN發(fā)送一串字符“USB to UART succeed-yangxiaowei”,然后自接收后通過串口發(fā)給計算機(jī)顯示。這里需要使用飛思卡爾公司開發(fā)的CodeWarrior軟件對MC9S12XS256進(jìn)行編程,和串口助手軟件幫助串口的調(diào)試和顯示[5]。驗(yàn)證結(jié)果如圖3所示。
圖3中位于發(fā)送欄的字符串為要發(fā)送的字符串,下面3行字符串為接收的字符串,發(fā)送和接收的字符串是一樣的,可以說明上述硬件設(shè)計的正確性。
通過CAN總線傳輸模塊的設(shè)計和USB轉(zhuǎn)異步串口模塊設(shè)計,完成了基于MC9S12XS256單片機(jī)的CAN總線主節(jié)點(diǎn)設(shè)計,并實(shí)現(xiàn)了CAN總線自發(fā)自收和單片機(jī)與PC機(jī)的串口通信,從而可以得出主節(jié)點(diǎn)設(shè)計方案是可行的結(jié)論。
【1】 Freescale,MC9S12XS256 Reference Manual[OL].http://www.freescale.com/,2012.
【2】 林凌.新型單片機(jī)接口器件與技術(shù)[M].西安:西安電子科技大學(xué)出版社,2005.
【3】 門雅彬,徐俊臣,劉金濤.USB轉(zhuǎn)UART橋接芯片CP2101及其應(yīng)用[J].電子設(shè)計應(yīng)用,2005(7):127-128.
【4】 張培仁.CAN總線設(shè)計及分布式控制[M].北京:清華大學(xué)出版社,2012.
【5】 劉榮.圈圈教你玩USB[M].北京:北京航空航天大學(xué)出版社,2009.