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

📄 rxloop.c

📁 功能 用来测试TI公司TMS320F281X芯片的CAN总线模块接受数据的源代码
💻 C
字号:
/*********************************************************************
* Filename: RXLOOP.c                                                 *
*                                                                    *
* Description: This test is a simple example of how data may be received  	
* in 28x CAN.
*
* This program runs on Node B. CANalyzer is used as node A in this example.
* All mailboxes are configured as receive mailboxes. Each mailbox
* has a different ID. All mailboxes in node A are allowed to transmit
* in a sequence to mailboxes in node B. Once the cycle is complete,
* the cycle is started all over again. 

* This program loops forever. The # of times the receive loop is executed
* is stored in the RXCOUNT value.
*      
* Last update: 12/24/2002
*********************************************************************/


#include "D:\DspTest\include\DSP281x_Device.h"

long      RXCOUNT = 0;

void InitECan(void);

main() 
{

/* Create a shadow register structure for the CAN control registers. This is
 needed, since, only 32-bit access is allowed to these registers. 16-bit access
 to these registers could potentially corrupt the register contents. This is
 especially true while writing to a bit (or group of bits) among bits 16 - 31 */

	struct ECAN_REGS ECanaShadow;
	Uint16 *a;
	Uint16 a1,a2,a3,a4;
	float b=2.2;

   	InitSysCtrl();
   
   	EALLOW;
   	GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1;
	GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1;
	EDIS;
	
   	InitPieCtrl();
   	
   	InitPieVectTable();

	a=(Uint16 *)&b;
	a1=(*a&0xFF00)>>8;
	a2=*a&0xFF;
	a++;
	a3=(*a&0xFF00)>>8;
	a4=*a&0xFF;

/* Initialize the CAN module */
	 InitECan();

	 ECanaRegs.CANME.all = 0;	
    
/* Write to the MSGID field - MBX number is written as its MSGID */
 /*    ECanaMboxes.MBOX1.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX2.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX3.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX4.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX5.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX6.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX7.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX8.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX9.MSGID.all  = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX10.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX11.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX12.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX13.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX14.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX15.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX16.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX17.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX18.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX19.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX20.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX21.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX22.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX23.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX24.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX25.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX26.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX27.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX28.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX29.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX30.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX31.MSGID.all = 0xC8016028;  // Std identifier 
     ECanaMboxes.MBOX0.MSGID.all = 0xC8016028;   // Std identifier
 	 ECanaLAMRegs.LAM0.all=0x800FFFE0;
	 ECanaLAMRegs.LAM1.all=0x800FFFE0;
	 ECanaLAMRegs.LAM2.all=0x800FFFE0;
	 ECanaLAMRegs.LAM3.all=0x800FFFE0;
	 ECanaLAMRegs.LAM4.all=0x800FFFE0;
	 ECanaLAMRegs.LAM5.all=0x800FFFE0;	
	 ECanaLAMRegs.LAM6.all=0x800FFFE0;
	 ECanaLAMRegs.LAM7.all=0x800FFFE0;
	 ECanaLAMRegs.LAM8.all=0x800FFFE0;
	 ECanaLAMRegs.LAM9.all=0x800FFFE0;
	 ECanaLAMRegs.LAM10.all=0x800FFFE0;
	 ECanaLAMRegs.LAM11.all=0x800FFFE0;
	 ECanaLAMRegs.LAM12.all=0x800FFFE0;
	 ECanaLAMRegs.LAM13.all=0x800FFFE0;
	 ECanaLAMRegs.LAM14.all=0x800FFFE0;
	 ECanaLAMRegs.LAM15.all=0x800FFFE0;
	 ECanaLAMRegs.LAM16.all=0x800FFFE0;
	 ECanaLAMRegs.LAM17.all=0x800FFFE0;
	 ECanaLAMRegs.LAM18.all=0x800FFFE0;
	 ECanaLAMRegs.LAM19.all=0x800FFFE0;
	 ECanaLAMRegs.LAM20.all=0x800FFFE0;
	 ECanaLAMRegs.LAM21.all=0x800FFFE0;
	 ECanaLAMRegs.LAM22.all=0x800FFFE0;
	 ECanaLAMRegs.LAM23.all=0x800FFFE0;
	 ECanaLAMRegs.LAM24.all=0x800FFFE0;
	 ECanaLAMRegs.LAM25.all=0x800FFFE0;
	 ECanaLAMRegs.LAM26.all=0x800FFFE0;
	 ECanaLAMRegs.LAM27.all=0x800FFFE0;
	 ECanaLAMRegs.LAM28.all=0x800FFFE0;
	 ECanaLAMRegs.LAM29.all=0x800FFFE0;
	 ECanaLAMRegs.LAM30.all=0x800FFFE0;
	 ECanaLAMRegs.LAM31.all=0x800FFFE0;*/
//以下屏蔽项为不考虑标识符时的配置
     ECanaMboxes.MBOX0.MSGID.all =  0xC0C80000;  // Std identifier 
	 ECanaMboxes.MBOX1.MSGID.all  = 0xC0040000;  // Std identifier 
     ECanaMboxes.MBOX2.MSGID.all  = 0xC0080000;  // Std identifier 
     ECanaMboxes.MBOX3.MSGID.all  = 0xC00C0000;  // Std identifier 
     ECanaMboxes.MBOX4.MSGID.all  = 0xC0100000;  // Std identifier 
     ECanaMboxes.MBOX5.MSGID.all  = 0xC0140000;  // Std identifier 
     ECanaMboxes.MBOX6.MSGID.all  = 0xC0180000;  // Std identifier 
     ECanaMboxes.MBOX7.MSGID.all  = 0xC01C0000;  // Std identifier 
     ECanaMboxes.MBOX8.MSGID.all  = 0xC0200000;  // Std identifier 
     ECanaMboxes.MBOX9.MSGID.all  = 0xC0240000;  // Std identifier 
     ECanaMboxes.MBOX10.MSGID.all = 0xC0400000;  // Std identifier 
     ECanaMboxes.MBOX11.MSGID.all = 0xC0440000;  // Std identifier 
     ECanaMboxes.MBOX12.MSGID.all = 0xC0480000;  // Std identifier 
     ECanaMboxes.MBOX13.MSGID.all = 0xC04C0000;  // Std identifier 
     ECanaMboxes.MBOX14.MSGID.all = 0xC0500000;  // Std identifier 
     ECanaMboxes.MBOX15.MSGID.all = 0xC0540000;  // Std identifier 
     ECanaMboxes.MBOX16.MSGID.all = 0xC0580000;  // Std identifier 
     ECanaMboxes.MBOX17.MSGID.all = 0xC05C0000;  // Std identifier 
     ECanaMboxes.MBOX18.MSGID.all = 0xC0600000;  // Std identifier 
     ECanaMboxes.MBOX19.MSGID.all = 0xC0640000;  // Std identifier 
     ECanaMboxes.MBOX20.MSGID.all = 0xC0800000;  // Std identifier 
     ECanaMboxes.MBOX21.MSGID.all = 0xC0840000;  // Std identifier 
     ECanaMboxes.MBOX22.MSGID.all = 0xC0880000;  // Std identifier 
     ECanaMboxes.MBOX23.MSGID.all = 0xC08C0000;  // Std identifier 
     ECanaMboxes.MBOX24.MSGID.all = 0xC0900000;  // Std identifier 
     ECanaMboxes.MBOX25.MSGID.all = 0xC0940000;  // Std identifier 
     ECanaMboxes.MBOX26.MSGID.all = 0xC0980000;  // Std identifier 
     ECanaMboxes.MBOX27.MSGID.all = 0xC09C0000;  // Std identifier 
     ECanaMboxes.MBOX28.MSGID.all = 0xC0A00000;  // Std identifier 
     ECanaMboxes.MBOX29.MSGID.all = 0xC0A40000;  // Std identifier 
     ECanaMboxes.MBOX30.MSGID.all = 0xC0C00000;  // Std identifier 
     ECanaMboxes.MBOX31.MSGID.all = 0xC0C40000; // Std identifier 
     
          
     
	 ECanaLAMRegs.LAM0.all=0x9FFFFFFF;//0x1FE00000;
	 ECanaLAMRegs.LAM1.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM2.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM3.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM4.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM5.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM6.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM7.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM8.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM9.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM10.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM11.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM12.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM13.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM14.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM15.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM16.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM17.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM18.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM19.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM20.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM21.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM22.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM23.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM24.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM25.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM26.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM27.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM28.all=0x9FFFFFFF;
 	 ECanaLAMRegs.LAM29.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM30.all=0x9FFFFFFF;
	 ECanaLAMRegs.LAM31.all=0x9FFFFFFF;     
	/* Note: If writing to only the 11-bit identifier as by
	"ECanaMboxes.MBOX0.MSGID.bit.MSGID_H = 0x00C8", IDE, AME & AAM
	bit fields also need to be initialized. Otherwise, they 
	may assume random values */
	
/* Configure Mailboxes as Receive mailboxes */

	ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;	
	ECanaShadow.CANMD.all = 0xFFFFFFFF;
	ECanaRegs.CANMD.all = ECanaShadow.CANMD.all; 
	ECanaRegs.CANOPC.all=0xFFFFFFFF;
/* Enable Mailboxes */
	
	ECanaShadow.CANME.all = ECanaRegs.CANME.all;	
	ECanaShadow.CANME.all = 0xFFFFFFFF;
	ECanaRegs.CANME.all = ECanaShadow.CANME.all; 
	
/* Begin receiving */

    while(1) 							
    {
     while(ECanaRegs.CANRMP.all != 0xFFFFFFFF ) {}  // Wait for all RMPn to be set..
                
     ECanaRegs.CANRMP.all = 0xFFFFFFFF;			   // Clear all RMPn bits and start 
     RXCOUNT++ ;		                           // all over again...
    }   										  
}

/* CANalyzer configuration file: RXLOOP.CFG... */ 

⌨️ 快捷键说明

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