打印

CAN通信的理解问题

[复制链接]
1006|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
彭段环|  楼主 | 2016-5-5 18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题一:最近实验室用上了英飞凌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,验收码以及屏蔽码是指的发送方的还是接收方的?或者哪些是接收方的哪些是发送方的?


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

137

帖子

0

粉丝