⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsp28_ecan.c

📁 F2812实现电机控制源程序.rar
💻 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;
	GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1;
	GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1;
	
	ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all;
	ECanaShadow.CANTIOC.bit.TXFUNC = 1;
	ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all;
	
	ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all;
	ECanaShadow.CANRIOC.bit.RXFUNC = 1;
	ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;
	EDIS;
	
	EALLOW;
	ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
	ECanaShadow.CANMC.bit.STM = 0;//工作在非测试模式
	ECanaShadow.CANMC.bit.SCM = 1;//工作在ecan模式
	ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
	EDIS;
	
	ECanaMboxes.MBOX0.MCF.all = 0x00000000;
    ECanaMboxes.MBOX1.MCF.all = 0x00000000;
	ECanaMboxes.MBOX2.MCF.all = 0x00000000;
	ECanaMboxes.MBOX3.MCF.all = 0x00000000;
	ECanaMboxes.MBOX4.MCF.all = 0x00000000;
	ECanaMboxes.MBOX5.MCF.all = 0x00000000;
	ECanaMboxes.MBOX6.MCF.all = 0x00000000;
	ECanaMboxes.MBOX7.MCF.all = 0x00000000;
	ECanaMboxes.MBOX8.MCF.all = 0x00000000;
	ECanaMboxes.MBOX9.MCF.all = 0x00000000;
	ECanaMboxes.MBOX10.MCF.all = 0x00000000;
	ECanaMboxes.MBOX11.MCF.all = 0x00000000;
	ECanaMboxes.MBOX12.MCF.all = 0x00000000;
	ECanaMboxes.MBOX13.MCF.all = 0x00000000;
	ECanaMboxes.MBOX14.MCF.all = 0x00000000;
	ECanaMboxes.MBOX15.MCF.all = 0x00000000;
	ECanaMboxes.MBOX16.MCF.all = 0x00000000;
	ECanaMboxes.MBOX17.MCF.all = 0x00000000;
	ECanaMboxes.MBOX18.MCF.all = 0x00000000;
	ECanaMboxes.MBOX19.MCF.all = 0x00000000;
	ECanaMboxes.MBOX20.MCF.all = 0x00000000;
	ECanaMboxes.MBOX21.MCF.all = 0x00000000;
	ECanaMboxes.MBOX22.MCF.all = 0x00000000;
	ECanaMboxes.MBOX23.MCF.all = 0x00000000;
	ECanaMboxes.MBOX24.MCF.all = 0x00000000;
	ECanaMboxes.MBOX25.MCF.all = 0x00000000;
	ECanaMboxes.MBOX26.MCF.all = 0x00000000;
	ECanaMboxes.MBOX27.MCF.all = 0x00000000;
	ECanaMboxes.MBOX28.MCF.all = 0x00000000;
	ECanaMboxes.MBOX29.MCF.all = 0x00000000;
	ECanaMboxes.MBOX30.MCF.all = 0x00000000;
	ECanaMboxes.MBOX31.MCF.all = 0x00000000;

	/* Clear all TAn bits */
	ECanaRegs.CANTA.all = 0xFFFFFFFF;
	/* Clear all RMPn bits */
	ECanaRegs.CANRMP.all = 0xFFFFFFFF;
	/* Clear all interrupt flag bits */
	ECanaRegs.CANGIF0.all = 0xFFFFFFFF;
	ECanaRegs.CANGIF1.all = 0xFFFFFFFF;
	/* Configure bit timing parameters */
	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 = 2;
	ECanaShadow.CANBTC.bit.TSEG1 = 10;
	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);
	
	
	ECanaRegs.CANME.all = 0;
	
	/*发送邮箱的ID号*/
	ECanaMboxes.MBOX0.MID.all = 0x00C80000;
	/*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 =  0x00C80000;
	/*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为TX,16为RX*/
	ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
	ECanaShadow.CANMD.bit.MD0 =0;
    ECanaShadow.CANMD.bit.MD16 =1;
	ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
	
	
	/*数据长度 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 = 0x01234567;
	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;*/
	

    /*邮箱使能*/
	
	ECanaShadow.CANME.all = ECanaRegs.CANME.all;
	ECanaShadow.CANME.bit.ME0 =1;
	ECanaShadow.CANME.bit.ME16 =1;
	ECanaRegs.CANME.all = ECanaShadow.CANME.all;
}	

//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -