Hardware Reference
In-Depth Information
CAN1BTR0 5 0xC7;
// set SJW to 4, set prescaler to 8
CAN1BTR1 5 0xB4;
// set phase_seg2 to 4 t Q , phase_seg1 to 4 t Q ,
// prop_seg to 1 t Q
CAN1IDAR0 5 0x56;
// set acceptance identifier V1
CAN1IDAR1 5 0x3C;
// “
CAN1IDAR2 5 0x40;
// “
CAN1IDAR3 5 0x00;
// “
CAN1IDMR0 5 0x00;
// acceptance mask for V1
CAN1IDMR1 5 0x00;
// “
CAN1IDMR2 5 0x3F;
// “
CAN1IDMR3 5 0xFF;
// “
CAN1IDAR4 5 0x56;
// set acceptance identifier V1
CAN1IDAR5 5 0x3C;
// “
CAN1IDAR6 5 0x40;
// “
CAN1IDAR7 5 0x00;
// “
CAN1IDMR4 5 0x00;
// acceptance mask for V1
CAN1IDMR5 5 0x00;
// “
CAN1IDMR6 5 0x3F;
// “
CAN1IDMR7 5 0xFF;
// “
CAN1IDAC 5 0x00;
// select two 32-bit filter mode
CAN1CTL0 5 0x25;
// stop clock on wait mode, enable wake-up
CAN1CTL0 & 5 , INITRQ;
/* exit initialization mode */
}
void snd2can1(char *ptr)
{
int tb,i,*pt1,*pt2;
pt1 5 (int *)ptr;
/* convert to integer pointer */
while(1) {
if(CAN1TFLG & TXE0){
tb 5 0;
break;
}
if(CAN1TFLG & TXE1){
tb 5 1;
break;
}
if(CAN1TFLG & TXE2){
tb 5 2;
break;
}
}
CAN1TBSEL 5 CAN1TFLG;
// make empty transmit buffer accessible
pt2 5 (int *)&CAN1TIDR0;
// pt2 points to the IDR0 of TXFG
for (i 5 0; i < 7; i 11 )
// copy the whole transmit buffer
*pt2 11 5 *pt1 11 ;
if (tb 55 0)
CAN1TFLG 5 TXE0;
// mark buffer 0 ready for transmission
Search WWH ::




Custom Search