📄 rxloop.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 + -