📄 ecan_tx.c
字号:
//**************************************************************************************
//eCAN Transmit
//**************************************************************************************
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
#define TxCount 1000
void eCAN_TX(void)
{
long i;
struct ECAN_REGS ECanaShadow ;
InitECan();
EALLOW ;
//Write MSGID Area
ECanaMboxes.MBOX5.MID.all = 0x9FFFFFFF ; //Extended Flag
//Config MailBox5 As Send MailBox
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all ;
ECanaShadow.CANMD.bit.MD5 = 0 ;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all ;
//Write MCF.DLC Set Frame Data Length = 8
ECanaMboxes.MBOX5.MCF.bit.DLC = 8 ;
//Set MailBox5 Priority level
ECanaMboxes.MBOX5.MCF.bit.TPL = 0x1F ; //priority level = 31,the heighest
//Mask MailBox5 Interaput
ECanaRegs.CANMIM.bit.MIM5 = 0 ;
//MailBox5 int Level
ECanaRegs.CANMIL.bit.MIL5 = 0 ;
//装载消息标志符MSGID Setting
ECanaMboxes.MBOX5.MID.bit.IDE = 1 ;
ECanaMboxes.MBOX5.MID.bit.AAM = 0 ;
ECanaMboxes.MBOX5.MID.bit.MSGID_L = 0x0005 ; //16bit
ECanaMboxes.MBOX5.MID.bit.MSGID_H = 0x0000 ; //13bit
//Write Data To MailBox5
ECanaMboxes.MBOX5.MDRL.all = 0x01234567 ;
ECanaMboxes.MBOX5.MDRH.all = 0x76543210 ;
//Enable Mailbox
ECanaShadow.CANME.all = ECanaRegs.CANME.all ;
ECanaShadow.CANME.bit.ME5 = 1 ;
ECanaRegs.CANME.all = ECanaShadow.CANME.all ;
//Start Send
for (i=0;i<TxCount;i++)
{
//使能发送
ECanaShadow.CANTRS.all = 0 ; //写0无影响,写1清零
ECanaShadow.CANTRS.bit.TRS5 = 1 ;
ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all ;
//Wait Set TA
while(ECanaRegs.CANTA.bit.TA5 == 0){}
//Clear TA
ECanaShadow.CANTA.all = 0 ;
ECanaShadow.CANTA.bit.TA5 = 1 ;
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all ;
//Wait Clear TA
//while(ECanaRegs.CANTA.bit.TA5 == 1){}
}
EDIS ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -