一个项目要用到TMS320LF2407 DSP,之前没用过,花了一天时间了解了一下基本操作,就开始调试CAN控制器。
使用CAN自测模式,设置邮箱3发送、邮箱2接收,并使能邮箱2的接收中断、高优先级,main.c如下:
#include "global.c"
void SystemInit();
void Timer1Init();
void KickDog();
void CANMBX_ISR();
void CAN_INIT();
unsigned int numled=0;
unsigned int CAN_FLAG;// 定义标志寄存
main()
{
unsigned int i=0;
unsigned int RCA0=0,RCB0=0,RCC0=0,RCD0=0,RCA1=0,RCB1=0,RCC1=0,RCD1=0;
SystemInit();//系统初始化
MCRC=MCRC & 0xFF00; //IOE0-7设为IO口模式
PEDATDIR=0xFF00;//所有LED=0,
asm(" CLRC INTM ");// 中断使能
CAN_FLAG=0X00;// 清CAN用户标志,CAN_FLAG=01表示接收到数据
CAN_INIT();// CAN初始化程序
while(1)
{
CANTCR=0X20;// MBX3请求发送
while(CANTCR&0X2000==0)// 等待发送应答
continue;
CANTCR=0X2000; // 清 TA3 和MIF3标志位
while(CAN_FLAG==0)
//while(CANRCR&0x0040!=0x0040)
continue;// 等待接收数据
CANRCR=0x0040;//清接收悬挂位
CAN_FLAG=0;
i++;// 清接收到标志
CANMDER=0X0000;// 邮箱不使能
CANMCR=0X0140;//CDR=1,数据改变请求
CANBX3A=CANBX3A+1;