野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14806|回复: 2

CAN例程疑问,发送信息和接收信息

[复制链接]
发表于 2018-12-5 11:35:02 | 显示全部楼层 |阅读模式
2火花
你好,我看CAN例程,发现要发送的数据使用的扩展模式,标准ID被注释掉了
void CAN_SetMsg(CanTxMsg *TxMessage)
{          
        uint8_t ubCounter = 0;


  //TxMessage.StdId=0x00;                                                 
  TxMessage->ExtId=0x1314;                                         //使用的扩展ID
  TxMessage->IDE=CAN_ID_EXT;                                         //扩展模式
  TxMessage->RTR=CAN_RTR_DATA;                                 //发送的是数据
  TxMessage->DLC=8;                                                         //数据长度为8字节
       
        /*设置要发送的数据0-7*/
        for (ubCounter = 0; ubCounter < 8; ubCounter++)
  {
    TxMessage->Data[ubCounter] = ubCounter;
  }
}

接收数据,使用标准ID
void Init_RxMes(CanRxMsg *RxMessage)
{
  uint8_t ubCounter = 0;


        /*把接收结构体清零*/
  RxMessage->StdId = 0x00;
  RxMessage->ExtId = 0x00;
  RxMessage->IDE = CAN_ID_STD;
  RxMessage->DLC = 0;
  RxMessage->FMI = 0;
  for (ubCounter = 0; ubCounter < 8; ubCounter++)
  {
    RxMessage->Data[ubCounter] = 0x00;
  }
}



这种情况下可以正常接收数据吗?
2、是不是标准ID和扩展ID只能用一个,用了标准ID,扩展ID就空着,用了扩展ID标准ID就空着

回复

使用道具 举报

发表于 2018-12-6 08:51:44 | 显示全部楼层
是的
回复

使用道具 举报

 楼主| 发表于 2018-12-7 12:32:19 | 显示全部楼层

1、竟然是这样,我以为是标准占一部分,扩展占一部分呢。那这个例程当中,发送初始化结构体用的是拓展ID,接收初始化结构体用的标准ID,他俩通信,是把发送结构体的内容传给接收结构体,ID不一样,也能正常通信吗?
2、32位过滤器的时候,是不是只能用扩展ID模式呢,标准ID的时候只需要16位,扩展ID才需要32位。如果在标准ID的时候使用32位,多出来的16位不知道干什么用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-1 20:21 , Processed in 0.026388 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表