S12X系列雙核單片機(jī)的整車控制器CAN結(jié)點設(shè)計
2 CAN總線數(shù)據(jù)處理的基本流程
S12X單片機(jī)利用XGATE進(jìn)行CAN總線數(shù)據(jù)處理的流程如圖2所示(執(zhí)行順序從左到右)。當(dāng)S12X的MSCAN模塊收到來自CAN總線上的消息時,XGATE首先執(zhí)行中斷處理程序,其可以對數(shù)據(jù)進(jìn)行預(yù)處理或獨自處理,也可以將數(shù)據(jù)保存到合適的內(nèi)存緩沖區(qū),以提交給主CPU(即S12X CPU)進(jìn)行進(jìn)一步操作。在XGATE上的代碼執(zhí)行期間,S12X CPU上的代碼也一直運行,這樣在每100μs接收一幀CAN總線信息的情況下(這也是高速CAN總線的理論最大值),就可以有效地提高程序代碼的性能。尤其在對實時性要求較高的工業(yè)場合中,如進(jìn)行混合動力汽車中的CAN總線通信等,有很大的應(yīng)用價值。這些情況下,閉環(huán)控制系統(tǒng)都需要快速的系統(tǒng)響應(yīng),以及合理有效地配置好XGATE,可以很好地滿足控制系統(tǒng)的需要。MC9S12XE單片機(jī)的結(jié)構(gòu)配置在混合動力汽車控制系統(tǒng)的應(yīng)用中具有很高的性價比。本文引用地址:http://2s4d.com/article/171006.htm
3 XGATE的典型配置方法
XGATE的應(yīng)用與編程方法在參考文獻(xiàn)和中均有介紹,但基于XGATE的CAN總線的C語言編程大都沒有具體說明。這里給出一個含有XGATE的
MC9S12XEP100單片機(jī)通過ZLG USBCAN接口卡與上位機(jī)進(jìn)行CAN總線通信的例子,XGATE模塊編寫的基本步驟如下:
①存Code Warrior軟件中新建一個雙核的工程文件,在main.c和xgate.h中對共享數(shù)據(jù)段進(jìn)行初始化,并將CAN1接收中斷提交給XGATE處理,然后啟動XGATE。
②初始化S12X CPU和CAN1通道,在xgate.cxgate中編寫接收中斷函數(shù),并對中斷向量表進(jìn)行設(shè)置。
③編寫與XGATE中CAN1接收中斷相對應(yīng)的主處理器中斷函數(shù),使主處理器能夠響應(yīng)來自XGATE的中斷請求。
其主要配置方法如下:
①新建一個雙核工程義件,在main.c中對共享數(shù)據(jù)段進(jìn)行初始化:
在prm文件中,SHARED DATA定義于一塊獨立的內(nèi)存塊中,并放置于未分貝的RAM頁中,這樣雙核運行時均能存取SHARED_DATA塊中的變量,實現(xiàn)了數(shù)據(jù)共享。
“#definc CAN0RECEIVE_VEC 0xAA”語句中對XGATE中的CAN1接收中斷向量地址進(jìn)行定義,其為CAN1在XGATE中的接收中斷號乘以2.CAN1的接收中斷向量號可在xgate.cxgate進(jìn)行查找。代碼如下:
將CAN1的接收中斷交由XGATE進(jìn)行處理,即將XGATE模塊的中斷請求配置寄存器置1(RQST=1),優(yōu)先級設(shè)置為1(PRIO=1)。
評論