OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8210|回复: 9

关于CAN的通信问题。。。

[复制链接]

46

主题

333

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2013-12-12
在线时间
63 小时
发表于 2013-12-25 00:38:00 | 显示全部楼层 |阅读模式
发送的是标准数据帧,但是为啥要配置这个ExtId ?
  /* Transmit */
  TxMessage.StdId = 0x321;
  TxMessage.ExtId = 0x01;
  TxMessage.RTR = CAN_RTR_DATA;
  TxMessage.IDE = CAN_ID_STD;
  TxMessage.DLC = 1;
还有就是在中断接受里需要初始化TxMessage.ExtId = 0x00;么?
在中断接受里面  
void CAN1_RX0_IRQHandler(void)  
{
  CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE);                       //这里为啥一开始需要关闭中断?
  CAN_ClearFlag(CAN1,CAN_FLAG_FF0);                                    
  CanRxMsg RxMessage;

  RxMessage.StdId=0x00;                                                         //这些初始化有必要么?
//   RxMessage.ExtId=0x00;                                                    //这句话是要还是不要?我看到过有些程序是不要的。。。
  RxMessage.IDE=0;
  RxMessage.DLC=0;
//  RxMessage.FMI=0; //FMI设定为消息将要通过的过滤器索引,这些消息存储于邮箱中  //这句话怎么理解?是不是只有死拓展祯的时候才配置???
  RxMessage.Data[0]=0x00;
  CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
  if ((RxMessage.StdId == 0x321)&&(RxMessage.IDE == CAN_ID_STD)&&(RxMessage.DLC == 1)&&(RxMessage.Data[0] == 0x55))
  {
    printf("\n\rCAN1 Receive Data is:0x%02x",RxMessage.Data[0]);
    printf("\n\rCAN1 Receive Msg Passed!\n\r");
  }
  else
  {
    printf("\n\rCAN1 Receive Msg Failed!\n\r");
  }
  CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}
以上是我的多日总结的问题,希望论坛里的各位高手可以给学弟一个好的答复~~~
谢谢!!!!




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2013-12-25 00:57:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

69

主题

336

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2013-12-11
在线时间
0 小时
发表于 2013-12-25 01:00:27 | 显示全部楼层
回复【楼主位】正点电子:
---------------------------------
我感觉清除中断就像关门一样!需要中断的时候开中断,不用的时候马上关上
回复 支持 反对

使用道具 举报

46

主题

333

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2013-12-12
在线时间
63 小时
 楼主| 发表于 2013-12-25 01:23:12 | 显示全部楼层
回复【3楼】雪雪:
---------------------------------
好吧~感觉想的有点简单,,,,
回复 支持 反对

使用道具 举报

46

主题

333

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2013-12-12
在线时间
63 小时
 楼主| 发表于 2013-12-25 08:57:50 | 显示全部楼层
论坛里的各位大手,求助~~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-25 10:48:38 | 显示全部楼层
回复【楼主位】正点电子:
---------------------------------
这个你用其一即可,另外一个,可有可无,是没用到的。
你觉得碍眼就去掉。如果觉得没事就留着。
我建议你留着,否则下次你要用EXID的时候,又可能找不到该去设置哪个了....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

333

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2013-12-12
在线时间
63 小时
 楼主| 发表于 2013-12-25 11:00:39 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,那了这些初始化有必要么?是不是不要也可以?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-25 21:18:32 | 显示全部楼层
有些是必须的,有些事非必须的,你有兴趣研究的话,两条路。
1,看资料,然后识别哪些可以删,哪些不能删。
2,直接不管三七二十一,一条条删,删到不能用为止。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

333

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2013-12-12
在线时间
63 小时
 楼主| 发表于 2013-12-25 22:47:13 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥, CAN_ClearFlag(CAN1,CAN_FLAG_FF0);   这句话我只在F4里找到过,在F1里没有。。。是么?
我现在已经实现F4-F1 F1-F1
但是过滤器都是配置的0x0000,不知道过滤器的根本作用是啥?有啥用途?还请原子哥指点一二~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-26 00:34:51 | 显示全部楼层
回复【9楼】正点电子:
---------------------------------
sorry,我不用库函数写代码。

过滤器你要设置了才有用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 23:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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