DSP與CAN總線的測速和遠程傳送一體化
1 相關(guān)系統(tǒng)結(jié)構(gòu)
TMS320LF2407所帶有的事件管理器和CAN控制器模塊為測速和遠程傳送提供了便利。 TMS320LF2407有2個事件管理器EVA和EVB,各有3個捕獲單元。對應(yīng)6個捕獲輸入引腳CAPX(對EVA,X=1,2,3;對EVB,X=4,5,6)。6個捕獲輸入引腳分別與QEPl/IOPA3、QEP2/IOPA4、IOPA5、QEP3/IOPE37、QEP4/IOPFO和IOPFl 共用。當捕獲輸入引腳CAPX上檢測到所選的跳變時,所選的GP定時器的計數(shù)值被捕獲并存入到一個2級深的FIFO堆棧中。
TMS320LF2407的CAN控制器模塊包括有郵箱和相應(yīng)的控制/狀態(tài)寄存器。共有6個郵箱:2個接收郵箱(MBOX0、1),2個發(fā)送郵箱(MBOX4、5),2個可配置為接收或發(fā)送郵箱(MBOX2、3)。TM$320LF2407的CAN控制器模塊完全支持CAN2.0B協(xié)議。
通常情況下,測速傳感器系統(tǒng)輸出的是數(shù)字測速脈沖信號。因此,可把這個加到TMS320LF2407DSP芯片捕獲引腳上。利用TMS320LF2407芯片的捕獲單元測量輸入脈沖的周期,再由內(nèi)置的CAN總線控制器單元發(fā)出CAN周期信號,實現(xiàn)測速和遠程傳送一體化。
2 系統(tǒng)配置
2.1 捕獲單元及相應(yīng)定時器的配置
TM$320LF2407捕獲單元的工作原理是:以輸入脈沖上升沿、下降沿或上升沿下降沿為界,由相應(yīng)的定時器計數(shù)來度量周期,計數(shù)值被捕獲送入相應(yīng)的一個2級深的捕獲堆棧FIF0中。因此,涉及到捕獲和定時器兩部分的配置操作。需要配置的捕獲操作有:在I/O口復(fù)用控制寄存器MCRx(x=A、B或c)中把相應(yīng)引腳配置為捕獲輸入;在捕獲控制寄存器CAPCONA/B中選擇(使能)捕獲單元、選擇(使能)相應(yīng)的定時器和邊沿選擇(上升沿、下降沿或上升沿下降沿);在中斷標志寄存器EVA/BIFRX和中斷屏蔽寄存器EVA/BIMRX中設(shè)置中斷控制情況。需要配置定時器的操作有:對單個通用定時器TXCNT清零;在全局通用定時器控制寄存器GPTCONA/B中設(shè)置相應(yīng)定時器的操作及計數(shù)方向;在單個通用定時器周期控制寄存器TXPR中設(shè)置比較周期;在單個通用定時器控制寄存器TXCON中設(shè)置計數(shù)操作模式。
周期控制寄存器TXPR中設(shè)置的比較周期應(yīng)大于輸入脈沖信號的周期。在不知道輸入脈沖信號周期的情況下,應(yīng)設(shè)置為最大值。當度量周期超過最大捕獲時間時,用定時器溢出的方法再加軟件計數(shù)解決。
2.2 捕獲周期的取出和傳送
存放于捕獲堆棧FIFO的捕獲周期的取出有中斷和查詢兩種方法。捕獲單元所在的事件管理器的中斷延時時間為20個CPu周期(典型),或25個CPU周期(最小保護),或8個cPU周期(單個中斷),或l6個CPU周期(不考慮存儲器空間)。在具體設(shè)計中,中斷延時時間被設(shè)為某一定值。在通常中斷處理程序很短的情況下,中斷時間主要由中斷延時時間決定。為了系統(tǒng)的擴展,即使是單個外設(shè),也還是以采用中斷方法為宜,而不是查詢方法。
2.3 CAN控制器模塊和位定時器配置
CAN控制器模塊的配置包括初始化郵箱、位定時器設(shè)置和數(shù)據(jù)收發(fā)。有關(guān)內(nèi)容參見文獻[1]。這里介紹一下位定時器的設(shè)置。
位定時器的設(shè)置決定總線傳輸信號的波特率,是CAN控制器模塊的核心配置問題。TMS320LF2407有兩個位控制寄存器BCRl和BCR2。它們必須在CAN控制器處于復(fù)位模式下(即CCR=1)才能被配置。位控制寄存器BCR2包括波特率預(yù)分頻位BRP[7-0],用來確定CAN控制器的時間片TQ,作為位控制的基準時間。位控制寄存器BCR2包括同步跳轉(zhuǎn)寬度選擇位SJW[1-0]、采樣次數(shù)選擇位SAM[7]、包含傳播延時時間段(PROG SEG)和相位延時時間段1(PHASE SEGl)的時間段1 TSEGl[3-0]、決定相位延時時間段2(PHASE SEG2)的時間段2 TSEG2[2-0]。這樣波特率為
3 設(shè)計實例
本例的基本設(shè)置是選定捕獲單元4(CAP4)對輸入脈沖寬度進行捕獲,事件管理器EVB的通用定時器3對脈沖進行計數(shù)。捕獲計數(shù)值從FIFO堆棧取出送到臨時寄存器CAP4TEMP,以便于擴展。再從CAP4TEMP送到3號郵箱經(jīng)CANTX/IOPC6和CANRX/IOPC7發(fā)送,如圖1所示。
3.1 捕獲單元為中斷方式而CAN控制器為查詢方式
首先進行系統(tǒng)初始化,包括關(guān)中斷、清標志位、系統(tǒng)時鐘20MHz使能包含有捕獲單元的第4級中斷INT4,再進行捕獲單元初始化和CAN控制器初始化。有關(guān)內(nèi)容前已敘述。由于捕獲單元處于中斷方式,從捕獲堆棧FIFO的取捕獲周期值的操作在捕獲單元的中斷處理程序中進行;而CAN控制器處于查詢方式,要在主程序中循環(huán)檢查捕獲標志。確認捕獲后,從暫存寄存器CAP4TEMP中取出捕獲周期值送到郵箱3。值得一提的是,由于捕獲周期值為1 6位數(shù)據(jù),故需要傳送的數(shù)據(jù)是2字節(jié)。因此發(fā)送控制器MSGCTRL3的DL=2。這種情況的程序流程如圖2所示。
3.2捕獲單元中斷處理包括CAN控制器的信息發(fā)送
如前所述,當CAN控制器處于查詢方式時,CAN控制器的操作程序很復(fù)雜,又位于主程序,不利于主程序的擴展和外設(shè)的增加;因此可以把CAN控制器信息發(fā)送設(shè)置于捕獲單元中斷處理中,使主程序變得十分簡單。在這種情況下,捕獲單元中斷處理程序同時包括捕獲周期取出和CAN信息發(fā)送。由于減少了判斷和循環(huán),CAN信息發(fā)送變得簡單。捕獲單元中斷處理程序如下:CAP4_ISR
LDP #DP EVB
LACL CAP4FIFO ;取捕獲堆棧值
LDP DP_USER
SACL CAP4TEMP ;捕獲值送入臨時寄存器
LDP #DP EVB
SPLK #0,T3CNT ;清T3計數(shù)值,使其重新計數(shù)
LDP #DP_CAN
SPLK #0000H,MDER ;郵箱不使能
SPLK #0100H,MCR ;CDR=I,數(shù)據(jù)改變請求
LDP #5
LACL CAP4TEMP ;取捕獲值
LDP #DP_CAN2
SACL MBX3A ;把捕獲值移入到郵箱3
LDP #DP_CAN
SPLK #0880H,MCR ;DBO=1,CDR=0,ABO=1,STM=0
SPLK #08H,MDER ;MD3=0,ME3=1,郵箱3發(fā)送使能
LDP #DP CAN
SPLK #0020H,TCR ;郵箱3發(fā)送請求
W_TA3 LDP #DP_CAN
BIT TCR,2 ;郵箱3發(fā)送應(yīng)答TA3(位13)=1
BCND W_TA3, NTC ;等待發(fā)送應(yīng)答
LDP #DP_CAN
SPLK #2000h, TCR ;發(fā)送應(yīng)答TA3寫1復(fù)位
CLRC INTM ;開中斷
RET
4 結(jié)論
分析和設(shè)計表明,利用SoC芯片類的TMS320LF407特點,適當配置相應(yīng)的單元,就會簡捷、有效地實現(xiàn)速度更快的控制功能,體現(xiàn)了控制功能,體現(xiàn)了控制實現(xiàn)方法的必然發(fā)展趨勢。調(diào)試應(yīng)用說明,該方法正確、有效。
評論