LF2407型DSP內嵌eCAN模塊的檢測程序設計
發布時間:2007/8/20 0:00:00 訪問次數:473
來源:國外電子元器件 作者:姜飛 黃繼 張世全
摘 要:以TI公司LF2407型DSP控制器為對象,介紹基于CAN 2.0B總線協議的外設通信模塊e-CAN檢測程序設計,給出硬件系統的構成框圖及軟件實現過程的相關代碼。實驗室調試表明,該程序可以用來判定ID標識符與屏蔽碼的正確與否以及郵箱的工作狀況,同時能夠減少項目早期研究過程中對硬件模塊的需求。
關鍵詞:CAN總線通信:DSP程序設計;CAN控制器自檢;數字信號處理器
1 引言
LF2407型數字信號處理器(DSP)以其處理能力強(30 MI/s),外設功能模塊集成度高及存儲器容量大等特點廣泛應用于數字化控制與通信領域。筆者以某車載武器系統的前期預研為背景,討論了該處理器內嵌模塊eCAN的檢測功能及其軟硬件實現過程。
2 檢測系統的功能與硬件構成
2.1 eCAN控制模塊
該控制器是一個16 bit的外圍器件,其特性有:(1)完全支持CAN2.0B協議;(2)具有6個郵箱,其中mailbox2與mailtiox3可按工程需求配置為接收或發送郵箱,數據長度為0—8字節;(3)當發送時出錯或仲裁過程中數據丟失時,該控制器具有自動重發功能;(4)能夠通過軟件編程實現自檢測功能。
對eCAN模塊的操作分為對控制,狀態寄存器的訪問以及對郵箱RAM的讀寫三個部分。這些寄存器與郵箱在內存空間的分配如圖1所示,其中,7200H~7230H所在RAM區域為6個郵箱的分布地址。
2.2 硬件電路的連接
對于LF2407型處理器而言,如果源代碼編譯后放在程序區0x0000地址開始的空間.當引腳nap/mc配置為mp方式時.則00~7FFF下空間被映射到外部存儲器,此時必須在DSP外有相應的存儲器方可正常加載,否則就會一直提示“Data verificationfailed at address Ox0.P1ease verify target memory andmempry map”的信息。當引腳配置為mc方式,則00~7FFF這段空間由片內Flash提供,代碼程序要放在片內F1ash中,就必須用燒寫操作完成。一般說來,前者適用于在線調試的開發方式:對于已經定型的軟件代碼,當要脫機運行時用后者較為方便。筆者選用外擴存儲器的方式來完成*.out文件的加載.其中74陽8器件的功用是將CY7C1021型電路的內存區域一分二,分別用作外擴的程序空間與數據空間。
如圖2所示,PCA82C250為總線驅動器.是LF2407內嵌CAN控制器與特殊總線之間所需要的接口電路,實現對總線的差動發送與接收能力。在硬件連接時要注意將RS引腳接地使PCA82C250處于高速模式下,而且為完成檢測功能,CANH引腳和CANL引腳應通過阻值為120Ω的終端匹配電阻器相連接。
在項目開發過程中,筆者使用帶ISA接口的仿真器驅動板.盡管不需要驅動程序.但還是要安裝SetupC2XX.exe文件.否則在Code Composer集成開發環境內會出現調試困難。
3 軟件編程
3.1 配置存儲器
因為設計硬件時采用的是外擴存儲器的方式。所以為了正確地加載輸出文件.必須對CY7C1021作引導配置。具體說來就是修改initgel文件中的StartUp函數(該函數在系統默認狀態下為空函數。一般說來,每次進人Cede Composer集成開發環境時,它都會被調用。對于硬件系統的初始化代碼經常放置于其內)。下面給出主要的代碼語句:
StartUp0
{
GEL_MapReset0;
GEL_MapAdd(0x0000,0,0x7fff,1,1);
GEL_MapAdd(0x8000,0,0xT000,1,1);
GEL_MapAdd(0x0000,1,0x10000,l,1);
GEL_MapAdd(0xffff,2,1,1,1);
GEL_MapOnO;
GEL_MemoryFill(0xffff,2,l,Ox40);
*(volatile unsigned int*)SCSRI=0x0200;
*(volatile unsigned int*)SCSR2=0x000C;
*(volatile unsigned int*)WDNTR=Ox006f;
*(volatile unsigned int*)WDKEY=0x055;
*(volatile unsigned int*)WDKEY=Ox0AA;
}
如果需要開發相應的Flash燒寫子程序.可以參考此部分的格式完成。
3.2 系統初始化或重新配置位定時器
相應的操作步驟如下:
(1)設置CANMCR寄存器中的改變配置請求位為1,即CCR=I:
(2)判斷CANGSR寄存器中的改變配置使能位是否為1,即CCE是否為l:
(3)設置CANBCR2和CANBCRl寄存器以確定波特率、同步跳轉寬度及采樣次數等
(4)清CANMCR寄存器中的改變配置請求位為0.即CCR=0
(5)判斷CANGSR寄存器中的改變配置使能位是否為0,即CCE是否為0;
(6)配置完成進入正常工作模式。主要程序代碼如下:
(*MCRB)=(*MCRB)10x00c0;
(
(*CANIFR)=0xffff;
(*CANLAMlH)=0x7fff
(*CANLAMlL)=Oxffff;
(*CANMCR)=Oxl040;
while(((*CANGSR)&Ox0010)==0);//CCR如果不等于1則進行軟件等待狀態
(*CANBCR2)=Ox0002;
(*CANBCRl)=0x0023; //BaudRate=500
來源:國外電子元器件 作者:姜飛 黃繼 張世全
摘 要:以TI公司LF2407型DSP控制器為對象,介紹基于CAN 2.0B總線協議的外設通信模塊e-CAN檢測程序設計,給出硬件系統的構成框圖及軟件實現過程的相關代碼。實驗室調試表明,該程序可以用來判定ID標識符與屏蔽碼的正確與否以及郵箱的工作狀況,同時能夠減少項目早期研究過程中對硬件模塊的需求。
關鍵詞:CAN總線通信:DSP程序設計;CAN控制器自檢;數字信號處理器
1 引言
LF2407型數字信號處理器(DSP)以其處理能力強(30 MI/s),外設功能模塊集成度高及存儲器容量大等特點廣泛應用于數字化控制與通信領域。筆者以某車載武器系統的前期預研為背景,討論了該處理器內嵌模塊eCAN的檢測功能及其軟硬件實現過程。
2 檢測系統的功能與硬件構成
2.1 eCAN控制模塊
該控制器是一個16 bit的外圍器件,其特性有:(1)完全支持CAN2.0B協議;(2)具有6個郵箱,其中mailbox2與mailtiox3可按工程需求配置為接收或發送郵箱,數據長度為0—8字節;(3)當發送時出錯或仲裁過程中數據丟失時,該控制器具有自動重發功能;(4)能夠通過軟件編程實現自檢測功能。
對eCAN模塊的操作分為對控制,狀態寄存器的訪問以及對郵箱RAM的讀寫三個部分。這些寄存器與郵箱在內存空間的分配如圖1所示,其中,7200H~7230H所在RAM區域為6個郵箱的分布地址。
2.2 硬件電路的連接
對于LF2407型處理器而言,如果源代碼編譯后放在程序區0x0000地址開始的空間.當引腳nap/mc配置為mp方式時.則00~7FFF下空間被映射到外部存儲器,此時必須在DSP外有相應的存儲器方可正常加載,否則就會一直提示“Data verificationfailed at address Ox0.P1ease verify target memory andmempry map”的信息。當引腳配置為mc方式,則00~7FFF這段空間由片內Flash提供,代碼程序要放在片內F1ash中,就必須用燒寫操作完成。一般說來,前者適用于在線調試的開發方式:對于已經定型的軟件代碼,當要脫機運行時用后者較為方便。筆者選用外擴存儲器的方式來完成*.out文件的加載.其中74陽8器件的功用是將CY7C1021型電路的內存區域一分二,分別用作外擴的程序空間與數據空間。
如圖2所示,PCA82C250為總線驅動器.是LF2407內嵌CAN控制器與特殊總線之間所需要的接口電路,實現對總線的差動發送與接收能力。在硬件連接時要注意將RS引腳接地使PCA82C250處于高速模式下,而且為完成檢測功能,CANH引腳和CANL引腳應通過阻值為120Ω的終端匹配電阻器相連接。
在項目開發過程中,筆者使用帶ISA接口的仿真器驅動板.盡管不需要驅動程序.但還是要安裝SetupC2XX.exe文件.否則在Code Composer集成開發環境內會出現調試困難。
3 軟件編程
3.1 配置存儲器
因為設計硬件時采用的是外擴存儲器的方式。所以為了正確地加載輸出文件.必須對CY7C1021作引導配置。具體說來就是修改initgel文件中的StartUp函數(該函數在系統默認狀態下為空函數。一般說來,每次進人Cede Composer集成開發環境時,它都會被調用。對于硬件系統的初始化代碼經常放置于其內)。下面給出主要的代碼語句:
StartUp0
{
GEL_MapReset0;
GEL_MapAdd(0x0000,0,0x7fff,1,1);
GEL_MapAdd(0x8000,0,0xT000,1,1);
GEL_MapAdd(0x0000,1,0x10000,l,1);
GEL_MapAdd(0xffff,2,1,1,1);
GEL_MapOnO;
GEL_MemoryFill(0xffff,2,l,Ox40);
*(volatile unsigned int*)SCSRI=0x0200;
*(volatile unsigned int*)SCSR2=0x000C;
*(volatile unsigned int*)WDNTR=Ox006f;
*(volatile unsigned int*)WDKEY=0x055;
*(volatile unsigned int*)WDKEY=Ox0AA;
}
如果需要開發相應的Flash燒寫子程序.可以參考此部分的格式完成。
3.2 系統初始化或重新配置位定時器
相應的操作步驟如下:
(1)設置CANMCR寄存器中的改變配置請求位為1,即CCR=I:
(2)判斷CANGSR寄存器中的改變配置使能位是否為1,即CCE是否為l:
(3)設置CANBCR2和CANBCRl寄存器以確定波特率、同步跳轉寬度及采樣次數等
(4)清CANMCR寄存器中的改變配置請求位為0.即CCR=0
(5)判斷CANGSR寄存器中的改變配置使能位是否為0,即CCE是否為0;
(6)配置完成進入正常工作模式。主要程序代碼如下:
(*MCRB)=(*MCRB)10x00c0;
(
(*CANIFR)=0xffff;
(*CANLAMlH)=0x7fff
(*CANLAMlL)=Oxffff;
(*CANMCR)=Oxl040;
while(((*CANGSR)&Ox0010)==0);//CCR如果不等于1則進行軟件等待狀態
(*CANBCR2)=Ox0002;
(*CANBCRl)=0x0023; //BaudRate=500
上一篇:用單向可控硅代替雙向可控硅