在线时间0 小时
UID333620
注册时间2011-3-1
NXP金币0
该用户从未签到
新手上路

- 积分
- 92
- 最后登录
- 1970-1-1
|
我在挑CAN通讯采用单片机的CAN0与CAN4进行收发报文,大概收发30条左右,但是采用CAN0定时发送时,只发送一条报文没问题,可是发送多条报文,CAN总线上就什么都没有了。CAN4定时发送没有问题,折是为什么呢?以下是周期发送的程序:
switch(CAN_cyclic_timeslice) //CAN_cyclic_timeslice是循环周期,5ms发送一条报文,每个CAN发送周期为100ms
{
case 0: // // 0x1F6
CANFillFrame(&CANsendFrame2,Gateway_2.CAN_ID,Id_Standard,CAN_RTR_Data,Gateway_2.Data.Bytes,Gateway_2.DLC, 0);
//CANSendFrame0(&CANsendFrame2);
break;
case 1: //0x620 100ms
IGW_1.Data.Bits.BCM_BrakeSwitch=SP_status.Bit.BIT0;
CANFillFrame(&CANsendFrame1,IGW_1.CAN_ID,Id_Standard,CAN_RTR_Data,IGW_1.Data.Bytes,IGW_1.DLC, 0);
CANSendFrame0(&CANsendFrame1);
break;
case 2: // 0x1F0
CANFillFrame(&CANsendFrame3,DSCU_Cmd.CAN_ID, Id_Standard, CAN_RTR_Data,DSCU_Cmd.Data.Bytes,DSCU_Cmd.DLC,1);
CANSendFrame4(&CANsendFrame3);
break;
case 3: // BCM1_1 0x1D8 100ms
BCM1_1.Data.Bits.BCM_FootLightErrorSt=RFootLight & FFootLight;
CANFillFrame(&CANsendFrame1,BCM1_1.CAN_ID, Id_Standard, CAN_RTR_Data,BCM1_1.Data.Bytes,BCM1_1.DLC, 1);
CANSendFrame4(&CANsendFrame1);
break;
case 4: // 0x1D2
CANFillFrame(&CANsendFrame2,DDCU_3.CAN_ID, Id_Standard, CAN_RTR_Data,DDCU_3.Data.Bytes,DDCU_3.DLC,1);
CANSendFrame4(&CANsendFrame2);
break;
case 5: //0x82 100ms
CANFillFrame(&CANsendFrame3,PassiveStartCheck_PEPS.CAN_ID, Id_Standard, CAN_RTR_Data,PassiveStartCheck_PEPS.Data.Bytes,PassiveStartCheck_PEPS.DLC,1);
CANSendFrame4(&CANsendFrame3); //0x82
break;
case 6: // 0x192
CANFillFrame(&CANsendFrame2,PEPS_TyreInformation.CAN_ID, Id_Standard, CAN_RTR_Data,PEPS_TyreInformation.Data.Bytes,PEPS_TyreInformation.DLC,1);
CANSendFrame4(&CANsendFrame2);
break;
case 7: //0x1DC 100ms
BCM2_1.Data.Bits.BCM_BrakeSwitch=SP_status.Bit.BIT0;
CANFillFrame(&CANsendFrame1,BCM2_1.CAN_ID, Id_Standard, CAN_RTR_Data,BCM2_1.Data.Bytes,BCM2_1.DLC, 1);
CANSendFrame4(&CANsendFrame1);
break;
case 8: // 0x190
CANFillFrame(&CANsendFrame2,PEPS_TyreStauts.CAN_ID, Id_Standard, CAN_RTR_Data,PEPS_TyreStauts.Data.Bytes,PEPS_TyreStauts.DLC,1);
CANSendFrame4(&CANsendFrame2);
break;
case 9: // //0x1D0 100ms
CANFillFrame(&CANsendFrame3,PEPS_1.CAN_ID, Id_Standard, CAN_RTR_Data,PEPS_1.Data.Bytes,PEPS_1.DLC,1);
CANSendFrame4(&CANsendFrame3);
break;
case 10: //0x1E6:
CANFillFrame(&CANsendFrame1,DDCU_2.CAN_ID, Id_Standard, CAN_RTR_Data,DDCU_2.Data.Bytes,DDCU_2.DLC,1);
CANSendFrame4(&CANsendFrame1);
break;
case 11: // 0x1E8:
CANFillFrame(&CANsendFrame1,PDCU_1.CAN_ID, Id_Standard, CAN_RTR_Data,PDCU_1.Data.Bytes,PDCU_1.DLC,1);
CANSendFrame4(&CANsendFrame1);
break;
case 12: // 0x1EA:
CANFillFrame(&CANsendFrame3,PDCU_2.CAN_ID, Id_Standard, CAN_RTR_Data,PDCU_2.Data.Bytes,PDCU_2.DLC,1);
CANSendFrame4(&CANsendFrame3);
break;
case 13: // 0x1EC:
CANFillFrame(&CANsendFrame3,RLDCU_1.CAN_ID, Id_Standard, CAN_RTR_Data,RLDCU_1.Data.Bytes,RLDCU_1.DLC,1);
CANSendFrame4(&CANsendFrame3);
break;
case 14: //0x1EE:
CANFillFrame(&CANsendFrame3,RRDCU_1.CAN_ID, Id_Standard, CAN_RTR_Data,RRDCU_1.Data.Bytes,RRDCU_1.DLC,1);
CANSendFrame4(&CANsendFrame3);
break;
case 15:
CANFillFrame(&CANsendFrame1,Gateway_3.CAN_ID, Id_Standard, CAN_RTR_Data,Gateway_3.Data.Bytes,Gateway_3.DLC, 0);
CANSendFrame0(&CANsendFrame1);
break;
case 16: //0x29A
CANFillFrame(&CANsendFrame2,DVD_2.CAN_ID, Id_Standard, CAN_RTR_Data,DVD_2.Data.Bytes,DVD_2.DLC, 0);
CANSendFrame0(&CANsendFrame2);
break;
case 17: // /// 0x1E4:
CANFillFrame(&CANsendFrame4,DDCU_1.CAN_ID, Id_Standard, CAN_RTR_Data,DDCU_1.Data.Bytes,DDCU_1.DLC,1);
CANSendFrame4(&CANsendFrame4);
break;
default:break;
}
注:CANSendFrame0()是采用CAN的第0通道发送 CANSendFrame4是采用CAN的第四通道发送报文
|
|