|
/********************************************************************* * 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... */
|