ecan_tx.c

来自「TMSC320F2812串口SCI通信,SCIA,SCIB,波特率设置」· C语言 代码 · 共 63 行

C
63
字号
//**************************************************************************************
//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 + =
减小字号Ctrl + -
显示快捷键?