问题一:最近实验室用上了英飞凌XC164的CAN功能;出现了一个问题,就是把写完代码时把A节点的0对象设置为发送,B节点的1对象设置为接受,后在线调试时CAN_ubRequestMsgObj(0)成功置1,CAN_ubNewData(1)老是不置1,好像表示新数据没装进去。不知道为什么?但是其他标识符如send1,send2,rcv2,rcv3,rcv4都在变化。以下为测试代码:void CAN_Test()
{
int digit = 0;
ID = 0;
mask = 0;
send1 = 1;
while(!CAN_ubRequestMsgObj(0));
CAN_vLoadData(0,CANTest_Send);
send2 = 1;
CAN_vTransmit(0);
send3 = 1;
while(!CAN_ubNewData(1));
rcv1 = CAN_ubNewData(1);
CAN_vGetMsgObj(1,CAN_Test_Struct);
rcv3 += 1;
if(rcv3>200)
rcv3 = 1;
for(digit=0;digit<8;digit++)
CANTest_Rcv[digit] = CAN_Test_Struct->ubData[digit];
rcv4 += 1;
if(rcv4>200)
rcv4 = 1;
CAN_vReleaseObj(1);
}
问题二:CAN在通信时有个说明图是说当帧ID与验收码对应位相同时可以接受,在屏蔽码都为1时就可以不用管帧ID与验收码对应位是否相同了。所以我想知道的是这些帧ID,验收码以及屏蔽码是指的发送方的还是接收方的?或者哪些是接收方的哪些是发送方的?
|