打印

请教stm32多个报文收发CAN通讯问题

[复制链接]
2116|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gsp023|  楼主 | 2013-5-22 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如我要发送两个报文,都是8字节,是不是这样做的
        TxMessage.StdId=0XE0;                              //标识符
        TxMessage.RTR=CAN_RTR_DATA;              //传输消息的帧类型为数据帧
        TxMessage.IDE=CAN_ID_STD;                   //标准帧格式
        TxMessage.DLC=8;                                   //帧长度,单位:字节
       

        for(i=0;i<8;i++)
        {TxMessage.Data[i]=TX_DATA[i];        }                         //第一组待传数据
        j=CAN_Transmit(CAN1, &TxMessage);

        TxMessage.StdId=0XE1;                          //标识符
        TxMessage.RTR=CAN_RTR_DATA;              //传输消息的帧类型为数据帧
        TxMessage.IDE=CAN_ID_STD;                //标准帧格式
        TxMessage.DLC=8;                         //帧长度,单位:字节
       
        for(i=0;i<8;i++)
        {TxMessage.Data[i]=TX_DATA[i];        }                         //第二组待传数据
        j=CAN_Transmit(CAN1, &TxMessage);
        接收的时候,接收条件这样
       if((RxMessage.IDE == CAN_ID_STD)&& (RxMessage.DLC==8))
        {
                for (i = 0; i < 8; i++)RX_DATA[i]=RxMessage.Data[i];
                RX_DATA[8] =RxMessage.StdId;
然后过滤报文的时候再根据接收到的RxMessage.StdId的值来确定是那一组数据吗,如果不行应该怎么做,麻烦帮出个主意,谢谢

相关帖子

沙发
gsp023|  楼主 | 2013-5-22 20:08 | 只看该作者
我看了参考手册里有:如果FIFO中有2个以上的报文,由于FIFO的特点,软件需要释放输出邮箱才能访问第2个报文。接收第二组数据的时候是否要调用CAN_FIFORelease先释放再继续接收呢?

使用特权

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

本版积分规则

2

主题

10

帖子

0

粉丝