📄 dsp28_ecan.c
字号:
//
// TMDX ALPHA RELEASE
// Intended for product evaluation purposes
//
//###########################################################################
//
// FILE: DSP28_ECan.c
//
// TITLE: DSP28 Enhanced CAN Initialization & Support Functions.
//
//###########################################################################
//
// Ver | dd mmm yyyy | Who | Description of changes
// =====|=============|======|===============================================
// 0.55| 06 May 2002 | L.H. | EzDSP Alpha Release
// 0.56| 20 May 2002 | L.H. | No change
// 0.57| 27 May 2002 | L.H. | No change
//###########################################################################
#include "DSP28_Device.h"
//---------------------------------------------------------------------------
// InitECan:
//---------------------------------------------------------------------------
// This function initializes to a known state.
//
void InitECan(void)
{
struct ECAN_REGS ECanaShadow;
EALLOW;
ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all;
ECanaShadow.CANTIOC.bit.TXFUNC = 1;
ECanaRegs.CANTIOC.all = ECanaShadow.CANRIOC.all;
ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all;
ECanaShadow.CANRIOC.bit.RXFUNC = 1;
ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;
EDIS;
ECanaRegs.CANME.all = 0;
/*发送邮箱的ID号*/
ECanaMboxes.MBOX0.MID.all = 0x9555AAA0;
ECanaMboxes.MBOX1.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX2.MID.all = 0x9555AAA2;
ECanaMboxes.MBOX3.MID.all = 0x9555AAA3;
ECanaMboxes.MBOX4.MID.all = 0x9555AAA4;
ECanaMboxes.MBOX5.MID.all = 0x9555AAA5;
ECanaMboxes.MBOX6.MID.all = 0x9555AAA6;
ECanaMboxes.MBOX7.MID.all = 0x9555AAA7;
ECanaMboxes.MBOX8.MID.all = 0x9555AAA8;
ECanaMboxes.MBOX9.MID.all = 0x9555AAA9;
ECanaMboxes.MBOX10.MID.all = 0x9555AAAA;
ECanaMboxes.MBOX11.MID.all = 0x9555AAAB;
ECanaMboxes.MBOX12.MID.all = 0x9555AAAC;
ECanaMboxes.MBOX13.MID.all = 0x9555AAAD;
ECanaMboxes.MBOX14.MID.all = 0x9555AAAE;
ECanaMboxes.MBOX15.MID.all = 0x9555AAAF;
/*接收邮箱的ID号*/
ECanaMboxes.MBOX16.MID.all = 0x9555AAA0;
ECanaMboxes.MBOX17.MID.all = 0x9555AAA1;
ECanaMboxes.MBOX18.MID.all = 0x9555AAA2;
ECanaMboxes.MBOX19.MID.all = 0x9555AAA3;
ECanaMboxes.MBOX20.MID.all = 0x9555AAA4;
ECanaMboxes.MBOX21.MID.all = 0x9555AAA5;
ECanaMboxes.MBOX22.MID.all = 0x9555AAA6;
ECanaMboxes.MBOX23.MID.all = 0x9555AAA7;
ECanaMboxes.MBOX24.MID.all = 0x9555AAA8;
ECanaMboxes.MBOX25.MID.all = 0x9555AAA9;
ECanaMboxes.MBOX26.MID.all = 0x9555AAAA;
ECanaMboxes.MBOX27.MID.all = 0x9555AAAB;
ECanaMboxes.MBOX28.MID.all = 0x9555AAAC;
ECanaMboxes.MBOX29.MID.all = 0x9555AAAD;
ECanaMboxes.MBOX30.MID.all = 0x9555AAAE;
ECanaMboxes.MBOX31.MID.all = 0x9555AAAF;
/*0~15 is TX,16~31 is RX*/
ECanaRegs.CANMD.all = 0xFFFF0000;
/*32个邮箱使能*/
ECanaRegs.CANME.all = 0xFFFFFFFF;
/*数据长度 8个BYTE*/
ECanaMboxes.MBOX0.MCF.bit.DLC = 8;
ECanaMboxes.MBOX1.MCF.bit.DLC = 8;
ECanaMboxes.MBOX2.MCF.bit.DLC = 8;
ECanaMboxes.MBOX3.MCF.bit.DLC = 8;
ECanaMboxes.MBOX4.MCF.bit.DLC = 8;
ECanaMboxes.MBOX5.MCF.bit.DLC = 8;
ECanaMboxes.MBOX6.MCF.bit.DLC = 8;
ECanaMboxes.MBOX7.MCF.bit.DLC = 8;
ECanaMboxes.MBOX8.MCF.bit.DLC = 8;
ECanaMboxes.MBOX9.MCF.bit.DLC = 8;
ECanaMboxes.MBOX10.MCF.bit.DLC = 8;
ECanaMboxes.MBOX11.MCF.bit.DLC = 8;
ECanaMboxes.MBOX12.MCF.bit.DLC = 8;
ECanaMboxes.MBOX13.MCF.bit.DLC = 8;
ECanaMboxes.MBOX14.MCF.bit.DLC = 8;
ECanaMboxes.MBOX15.MCF.bit.DLC = 8;
ECanaMboxes.MBOX16.MCF.bit.DLC = 8;
ECanaMboxes.MBOX17.MCF.bit.DLC = 8;
ECanaMboxes.MBOX18.MCF.bit.DLC = 8;
ECanaMboxes.MBOX19.MCF.bit.DLC = 8;
ECanaMboxes.MBOX20.MCF.bit.DLC = 8;
ECanaMboxes.MBOX21.MCF.bit.DLC = 8;
ECanaMboxes.MBOX22.MCF.bit.DLC = 8;
ECanaMboxes.MBOX23.MCF.bit.DLC = 8;
ECanaMboxes.MBOX24.MCF.bit.DLC = 8;
ECanaMboxes.MBOX25.MCF.bit.DLC = 8;
ECanaMboxes.MBOX26.MCF.bit.DLC = 8;
ECanaMboxes.MBOX27.MCF.bit.DLC = 8;
ECanaMboxes.MBOX28.MCF.bit.DLC = 8;
ECanaMboxes.MBOX29.MCF.bit.DLC = 8;
ECanaMboxes.MBOX30.MCF.bit.DLC = 8;
ECanaMboxes.MBOX31.MCF.bit.DLC = 8;
/*没有远方应答帧被请求*/
ECanaMboxes.MBOX0.MCF.bit.RTR = 0;
ECanaMboxes.MBOX1.MCF.bit.RTR = 0;
ECanaMboxes.MBOX2.MCF.bit.RTR = 0;
ECanaMboxes.MBOX3.MCF.bit.RTR = 0;
ECanaMboxes.MBOX4.MCF.bit.RTR = 0;
ECanaMboxes.MBOX5.MCF.bit.RTR = 0;
ECanaMboxes.MBOX6.MCF.bit.RTR = 0;
ECanaMboxes.MBOX7.MCF.bit.RTR = 0;
ECanaMboxes.MBOX8.MCF.bit.RTR = 0;
ECanaMboxes.MBOX9.MCF.bit.RTR = 0;
ECanaMboxes.MBOX10.MCF.bit.RTR = 0;
ECanaMboxes.MBOX11.MCF.bit.RTR = 0;
ECanaMboxes.MBOX12.MCF.bit.RTR = 0;
ECanaMboxes.MBOX13.MCF.bit.RTR = 0;
ECanaMboxes.MBOX14.MCF.bit.RTR = 0;
ECanaMboxes.MBOX15.MCF.bit.RTR = 0;
ECanaMboxes.MBOX16.MCF.bit.RTR = 0;
ECanaMboxes.MBOX17.MCF.bit.RTR = 0;
ECanaMboxes.MBOX18.MCF.bit.RTR = 0;
ECanaMboxes.MBOX19.MCF.bit.RTR = 0;
ECanaMboxes.MBOX20.MCF.bit.RTR = 0;
ECanaMboxes.MBOX21.MCF.bit.RTR = 0;
ECanaMboxes.MBOX22.MCF.bit.RTR = 0;
ECanaMboxes.MBOX23.MCF.bit.RTR = 0;
ECanaMboxes.MBOX24.MCF.bit.RTR = 0;
ECanaMboxes.MBOX25.MCF.bit.RTR = 0;
ECanaMboxes.MBOX26.MCF.bit.RTR = 0;
ECanaMboxes.MBOX27.MCF.bit.RTR = 0;
ECanaMboxes.MBOX28.MCF.bit.RTR = 0;
ECanaMboxes.MBOX29.MCF.bit.RTR = 0;
ECanaMboxes.MBOX30.MCF.bit.RTR = 0;
ECanaMboxes.MBOX31.MCF.bit.RTR = 0;
ECanaMboxes.MBOX0.MDRL.all = 0x9555AAA0;
ECanaMboxes.MBOX0.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX1.MDRL.all = 0x9555AAA1;
ECanaMboxes.MBOX1.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX2.MDRL.all = 0x9555AAA2;
ECanaMboxes.MBOX2.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX3.MDRL.all = 0x9555AAA3;
ECanaMboxes.MBOX3.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX4.MDRL.all = 0x9555AAA4;
ECanaMboxes.MBOX4.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX5.MDRL.all = 0x9555AAA5;
ECanaMboxes.MBOX5.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX6.MDRL.all = 0x9555AAA6;
ECanaMboxes.MBOX6.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX7.MDRL.all = 0x9555AAA7;
ECanaMboxes.MBOX7.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX8.MDRL.all = 0x9555AAA8;
ECanaMboxes.MBOX8.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX9.MDRL.all = 0x9555AAA9;
ECanaMboxes.MBOX9.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX10.MDRL.all = 0x9555AAAA;
ECanaMboxes.MBOX10.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX11.MDRL.all = 0x9555AAAB;
ECanaMboxes.MBOX11.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX12.MDRL.all = 0x9555AAAC;
ECanaMboxes.MBOX12.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX13.MDRL.all = 0x9555AAAD;
ECanaMboxes.MBOX13.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX14.MDRL.all = 0x9555AAAE;
ECanaMboxes.MBOX14.MDRH.all = 0x89ABCDEF;
ECanaMboxes.MBOX15.MDRL.all = 0x9555AAAF;
ECanaMboxes.MBOX15.MDRH.all = 0x89ABCDEF;
EALLOW;
/*邮箱屏蔽使能*/
ECanaRegs.CANMIM.all = 0xFFFFFFFF;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
ECanaShadow.CANMC.bit.CCR = 1;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
EDIS;
do
{
ECanaShadow.CANES.all = ECanaRegs.CANES.all;
}while(ECanaShadow.CANES.bit.CCE != 1);
EALLOW;
/*(BRPREG+1)=10 feeds a 15MHz CAN clock*/
ECanaShadow.CANBTC.bit.BRP = 9;
/*150/10=15*/
ECanaShadow.CANBTC.bit.TSEG2 = 5;
ECanaShadow.CANBTC.bit.TSEG1 = 7;
ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
ECanaShadow.CANMC.bit.CCR = 0;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
EDIS;
do
{
ECanaShadow.CANES.all = ECanaRegs.CANES.all;
}while(ECanaShadow.CANES.bit.CCE != 0);
EALLOW;
ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
ECanaShadow.CANMC.bit.STM = 1;
ECanaShadow.CANMC.bit.SCM = 1;
ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
EDIS;
#if CAN_INT
EALLOW;
ECanaRegs.CANMIM.all = 0xFFFFffff;
ECanaRegs.CANMIL.all = 0;
ECanaRegs.CANGIF0.all = 0xFFFFFFFF;
ECanaRegs.CANGIM.bit.I0EN = 1;
ECanaRegs.CANGIM.bit.I1EN = 1;
ECanaRegs.CANGIM.all = 0x3ff07;
EDIS;
PieCtrl.PIEIER9.bit.INTx6 = 1;
PieCtrl.PIEIER9.bit.INTx5 = 1;
#endif
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -