最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

CAN通讯收发程序

来源:动视网 责编:小OO 时间:2025-10-04 18:23:53
文档

CAN通讯收发程序

staticvoidCANInit(void){CAN0CTL0=0x01;/*EnterInitializationMode*/while(!(CAN0CTL1&0x01));//Setthebaudrate20KbpsCAN0CTL1=0x84;//wakeupenabledCAN0BTR0=0x4F;//SJW=1.CAN0BTR1=0xDF;//Sample3timestoensurethecorrecty.CAN0IDAC=0x10;CAN0IDAR0=ACC_CODE_ID_JIA
推荐度:
导读staticvoidCANInit(void){CAN0CTL0=0x01;/*EnterInitializationMode*/while(!(CAN0CTL1&0x01));//Setthebaudrate20KbpsCAN0CTL1=0x84;//wakeupenabledCAN0BTR0=0x4F;//SJW=1.CAN0BTR1=0xDF;//Sample3timestoensurethecorrecty.CAN0IDAC=0x10;CAN0IDAR0=ACC_CODE_ID_JIA
static void CANInit (void)

{

CAN0CTL0 = 0x01; /* Enter Initialization Mode */

while (! (CAN0CTL1&0x01));

// Set the baudrate 20Kbps

CAN0CTL1 = 0x84; //wake up enabled

CAN0BTR0= 0x4F; // SJW =1 .

CAN0BTR1= 0xDF; // Sample 3 times to ensure the correcty.

CAN0IDAC = 0x10;

CAN0IDAR0 = ACC_CODE_ID_JIAOXIANG_HIGH ;

CAN0IDMR0 = MASK_CODE_ST_ID_HIGH;

CAN0IDAR1 = ACC_CODE_ID_JIAOXIANG_LOW;

CAN0IDMR1 = MASK_CODE_ST_ID_LOW;

CAN0IDAC = 0x10;

CAN0IDAR2 = 0x00;

CAN0IDMR2 = MASK_CODE_ST_ID_HIGH;

CAN0IDAR3 = 0x00;

CAN0IDMR3 = MASK_CODE_ST_ID_LOW;

CAN0IDAR4 = 0x00;

CAN0IDMR4 = MASK_CODE_ST_ID_HIGH;

CAN0IDAR5 = 0x00;

CAN0IDMR5 = MASK_CODE_ST_ID_LOW;

CAN0IDAR6 = 0x00;

CAN0IDMR6 = MASK_CODE_ST_ID_HIGH;

CAN0IDAR7 = 0x00;

CAN0IDMR7 = MASK_CODE_ST_ID_LOW;

CAN0CTL0 = 0x00; /* Exit Initialization Mode Request */

while ((CAN0CTL1&0x01) != 0) ;

}

void interrupt CAN_RX_ISR(void)

{

uchar length, index;

uchar rxdata[8];

length = (CANRXDLR & 0x0F);

for (index=0; indexrxdata[index] = *(&CANRXDSR0 + index); /* Get received data */

CANRFLG = 0x01; /* Clear RXF */

}

uchar CANSendFrame (unsigned long id, uchar priority, uchar length, uchar *txdata )

{

uchar txbuffer;

if (!CANTFLG) //Is Transmit Buffer full ? Full ( TXEx=0;)

return ERR_BUFFER_FULL;

CANTBSEL = CANTFLG; /* Select lowest empty buffer */

txbuffer = CANTBSEL; // Backup selected buffer

/* Load Id to IDR Register */

*((unsigned long *) ((unsigned long)(&CANTXIDR0))) = id; // I appreciate this , easy and good.

if(length>8)

length=8;

for ( index=0; index*(&CANTXDSR0 + index) = txdata[index]; //Load data to Tx buffer Data Segment Registers

}

CANTXDLR = length; /* Set Data Length Code */

CANTXTBPR = priority; /* Set Priority */

CANTFLG = txbuffer; /* Start transmission */

while ( (CANTFLG & txbuffer) != txbuffer); // Wait for Transmission completion

PTM = 0xFF;

}

文档

CAN通讯收发程序

staticvoidCANInit(void){CAN0CTL0=0x01;/*EnterInitializationMode*/while(!(CAN0CTL1&0x01));//Setthebaudrate20KbpsCAN0CTL1=0x84;//wakeupenabledCAN0BTR0=0x4F;//SJW=1.CAN0BTR1=0xDF;//Sample3timestoensurethecorrecty.CAN0IDAC=0x10;CAN0IDAR0=ACC_CODE_ID_JIA
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top