1.概述
現(xiàn)場(chǎng)總線是一種開(kāi)放式、數(shù)字化,、多點(diǎn)通信的控制系統(tǒng)局域網(wǎng)絡(luò),,是當(dāng)今自動(dòng)化領(lǐng)域中最具有應(yīng)用前景的技術(shù)之一 ,CAN總線是現(xiàn)場(chǎng)總線中的應(yīng)用熱點(diǎn)。由于CAN總線具有通信速率高,、開(kāi)放性好,、報(bào)文短、糾錯(cuò)能力強(qiáng)以及控制簡(jiǎn)單,、擴(kuò)展能力強(qiáng),、系統(tǒng)成本低等特點(diǎn),越來(lái)越受到人們的關(guān)注,。
TI公司的TMS320LF2407型DSP微控制器以其處理能力強(qiáng),,外設(shè)功能模塊集成度高及存儲(chǔ)器容量大等特點(diǎn)廣泛應(yīng)用于數(shù)字化控制與通信領(lǐng)域。CAN總線控制器與TMS320LF2407微控制器連接,,可以實(shí)現(xiàn)CAN總線的通信,。TMS320LF2407微控制器內(nèi)嵌的異步串行口(SCI)支持CPU與其它使用標(biāo)準(zhǔn)格式的異步外設(shè)之間的數(shù)字通訊,通過(guò)RS-485接口可以方便地進(jìn)行DSP之間或DSP與PC機(jī)之間的異步串行通信,。
RS-485是一種多發(fā)送器的接口標(biāo)準(zhǔn),,它擴(kuò)展了RS-422A的性能,允許雙絞線上一個(gè)發(fā)送器驅(qū)動(dòng)32個(gè)負(fù)載設(shè)備,,負(fù)載設(shè)備可以是被動(dòng)發(fā)送器,、接收器或收發(fā)器,,RS-485最大傳輸距離為1200m,最大傳送速率可達(dá)10Mb/s,。因此,,RS-485在遠(yuǎn)程通信和多機(jī)總線系統(tǒng)中具有很大的吸引力,在實(shí)際設(shè)計(jì)中得到了廣泛應(yīng)用,。
本設(shè)計(jì)以PC機(jī)為主機(jī),,以TMS320LF2407為從機(jī),實(shí)現(xiàn)了主從機(jī)之間的基于RS-485的串行通信,,以及TMS320LF2407與CAN總線的通信,。其中PC機(jī)與TMS320LF2407的RS-485通信,采用MAXIM公司生產(chǎn)的MAX48X/49X系列收發(fā)器芯片,,完成RS-485標(biāo)準(zhǔn)接口通信,。由于PC機(jī)上提供的是標(biāo)準(zhǔn)的RS-232C串行接口,因此,,需要RS-232C/RS-485轉(zhuǎn)換器進(jìn)行接口轉(zhuǎn)換,。如圖1所示。應(yīng)用TMS320LF2407內(nèi)嵌的CAN模塊和總線接口芯片PCA82C250,,實(shí)現(xiàn)了TMS320LF2407與CAN總線的串行通信,。
通信接口" border="0" height="205" hspace="0" src="http://files.chinaaet.com/images/20100816/e475ad00-1c30-4b55-9ec6-acdb871b239a.jpg" width="500" />
2.TMS320LF2407的RS-485通信設(shè)計(jì)
TMS320F2407有較強(qiáng)的串行通信能力,設(shè)計(jì)到的控制類(lèi)寄存器較多,,這使系統(tǒng)設(shè)計(jì)比較靈活,。設(shè)計(jì)時(shí),首先對(duì)控制類(lèi)寄存器進(jìn)行初始化,,包括數(shù)據(jù)格式,、中斷使能、中斷優(yōu)先級(jí),、波特率等參數(shù)的設(shè)置,。初始化完成以后,就可以發(fā)送和接收數(shù)據(jù)了,。如果要發(fā)送數(shù)據(jù),,只要把數(shù)據(jù)寫(xiě)入SCITXBUF即可,由串行通信SCI模塊自動(dòng)完成發(fā)送數(shù)據(jù),。如果要接收數(shù)據(jù),,只要把SCIRXBUF的內(nèi)容讀出即可(從引腳SCIRXD/IO移位來(lái)的信息由串行通信SCI模塊本身自動(dòng)去掉起始位、停止位,、校驗(yàn)位,,并將數(shù)據(jù)放到SCIRXBUF中)。代碼如下:
初始化TMS320LF2407的SCI模塊
3.上位機(jī)PC串行通信軟件設(shè)計(jì)
上位機(jī)PC采用高級(jí)語(yǔ)言VB的通信控件,,實(shí)現(xiàn)串行通信,。在VB5.0及以上版本中,提供了一個(gè)名為MSComm的通信控件,,它為應(yīng)用程序提供基本的串行通信功能,,可以通過(guò)串行接口發(fā)送和接收數(shù)據(jù)。
PC串行口發(fā)送器輸出端和接收器輸入端的數(shù)據(jù)格式為幀信息格式,,與TMS320LF2407的SCI格式相同,。通信時(shí),雙方預(yù)先約定通信數(shù)據(jù)傳輸格式,、傳輸速率及各自工作方式等,。本文設(shè)計(jì)中雙方約定:波特率為9600bps。1幀信息格式為1個(gè)起始位,、8個(gè)數(shù)據(jù)位和1個(gè)停止位,。傳送方式:PC機(jī)采用查詢方式接收數(shù)據(jù),TMS320F240采用中斷方式接收數(shù)據(jù),。
4.TMS320LF2407的CAN通信設(shè)計(jì)
TMS320LF2407 內(nèi)嵌的CAN模塊,,是一個(gè)16 位的外圍器件,其通信特性有:(1)完全支持CAN2.0B協(xié)議;(2)具有6個(gè)郵箱,,其中mailbox2與mailbox3可按工程需求配置為接收或發(fā)送郵箱,,數(shù)據(jù)長(zhǎng)度為0—8字節(jié);(3)當(dāng)發(fā)送出錯(cuò)或仲裁過(guò)程中數(shù)據(jù)丟失時(shí),該控制器具有自動(dòng)重發(fā)功能;(4)能夠通過(guò)軟件編程實(shí)現(xiàn)自檢測(cè)功能,。
4.1硬件設(shè)計(jì)
應(yīng)用TMS320LF2407微控制器組成一個(gè)CAN總線網(wǎng)絡(luò),,進(jìn)行實(shí)時(shí)接收和發(fā)送數(shù)據(jù)。CAN控制器接口用于提供CAN協(xié)議控制器與物理總線之間的接口,,總線接口芯片使用PHILIPS公司生產(chǎn)的PCA82C250,,它可以方便的將CAN控制器連接到CAN總線網(wǎng)絡(luò)上。硬件系統(tǒng)分為兩層,,第一層是CAN總線與TMS320LF2407的接口電路,,實(shí)現(xiàn)CAN總線和TMS320LF2407的物理接口,第二層是TMS320LF2407與CAN總線的信息處理層,。如圖2所示,。
PCA82C250提供差分發(fā)送和對(duì)CAN控制器的差分接收,由于PCA82C250是5V電源供電,,TMS320LF2407是用3.3V電源供電,,因此采用電阻分壓來(lái)實(shí)現(xiàn)電平轉(zhuǎn)換。其中R2,,R3分別取1KΩ和2KΩ,,R1取10KΩ。對(duì)于二極管D1選用具有快速恢復(fù)能力的肖特基二極管IN5819,。
4.2軟件設(shè)計(jì)
4.2.1初始化CAN模塊
CAN模塊的初始化包括初始化位時(shí)間和初始化郵箱,。
初始化位時(shí)間可按如下步驟進(jìn)行(如圖3所示):
?。?)在MCR寄存器中設(shè)置改變配置請(qǐng)求位:CANMCR=1000H;
(2)配置BCR寄存器:CANBCR2=0000H; CANBCR1=0157H;
?。?)請(qǐng)求正常模式:CANMCR=0000H;
初始化郵箱可以按照如下步驟配置郵箱(如圖4所示):
?。?)禁止郵箱寫(xiě)0到CANMDER:CANMDER=0000H;
(2)在CANMCR中設(shè)置改變數(shù)據(jù)域請(qǐng)求:CANMCR=0100H;
?。?)改變郵箱內(nèi)容:數(shù)據(jù)可以只在發(fā)送郵箱中設(shè)置;
?。?)返回正常模式:CANMCR=0000H;
(5)使能郵箱:CANMDER=0004H;
4.2.2 發(fā)送消息
為了實(shí)現(xiàn)CAN模塊的消息發(fā)送,,需要按照以下步驟配置發(fā)送過(guò)程:
?。?)對(duì)發(fā)送郵箱進(jìn)行初始化
禁止郵箱對(duì)CANMDER寫(xiě)0:CANMDER=0000H;
在CANMCR中設(shè)置改變數(shù)據(jù)域請(qǐng)求:CANMCR=0100H;
對(duì)發(fā)送郵箱設(shè)置消息ID: CANMSGIDnH="0E00H";CANMSGIDnL=000FH;
設(shè)置消息控制域,即對(duì)CANMSGCTRLn進(jìn)行寫(xiě)操作: CANMSGCTRLn="0008H";
創(chuàng)建消息并寫(xiě)到CANMBXnA、CANMBXnB,、CANMBXnC和CANMBXnD中:
CANMBXnA=0ABCDH;CANMBXnB=0123H;CANMBXnC=0EF32H;CANMBXnD=6789H;
重新設(shè)置CANMCR的第8位,,請(qǐng)求正常操作:CANMCR=0000H;
允許郵箱對(duì)CANMDER寄存器進(jìn)行寫(xiě)操作:CANMDER=0004H;
(2)設(shè)置TCR寄存器的TRS位,,請(qǐng)求發(fā)送消息:TCR=0010H;
?。?)等待發(fā)送確認(rèn)(TCR寄存器的TA=1);
(4)重新設(shè)置TA和發(fā)送標(biāo)志:TCR=1000H;
4.2.3 接收消息
應(yīng)用CAN模塊接收外界消息時(shí),,需要對(duì)CAN控制器進(jìn)行如下設(shè)置:
?。?)設(shè)置局部接收屏蔽寄存器。 LAM1H=8000H;
?。?)設(shè)置郵箱標(biāo)識(shí)符和控制,。
禁止郵箱對(duì)MDER寫(xiě)0:CANMDER=0000H;
寫(xiě)MCR寄存器申請(qǐng)改變數(shù)據(jù)域請(qǐng)求:CANMCR=0100H;
對(duì)發(fā)送郵箱設(shè)置消息ID: CANMSGIDnH="0E00H";CANMSGIDnL=000EH;
設(shè)置消息控制域:CANMSGCTRLn=0008H;
重置MCR第8位,請(qǐng)求正常操作:CANMCR=0000H;
允許郵箱寫(xiě)MDER寄存器:CANMDER=0044H;
?。?)等待接收確認(rèn)和CANIFR的郵箱中斷標(biāo)志,。
(4)重置RMP和接收標(biāo)志,,必須對(duì)RMP寫(xiě)1: CANRCR="0040H";
圖3 初始化位時(shí)間編程流程圖
5.結(jié)論
本文作者的創(chuàng)新點(diǎn)是:在工業(yè)控制領(lǐng)域中,,往往是由一臺(tái)主機(jī)控制多臺(tái)從機(jī),上位機(jī)和下位機(jī)的遠(yuǎn)距離通信通過(guò)串行通信實(shí)現(xiàn),。本設(shè)計(jì)綜合實(shí)現(xiàn)了PC主機(jī)與DSP從機(jī)的RS-485遠(yuǎn)距離通信接口和DSP從機(jī)與CAN現(xiàn)場(chǎng)總線的數(shù)據(jù)傳輸接口設(shè)計(jì),,同時(shí)具備主從機(jī)的遠(yuǎn)距離通信和CAN現(xiàn)場(chǎng)總線設(shè)備的實(shí)時(shí)通信功能,具有廣泛的應(yīng)用前景,。在設(shè)計(jì)中充分發(fā)揮了DSP的CAN模塊和SCI模塊的作用,使得接口設(shè)計(jì)簡(jiǎn)單,,工作更加可靠。