10056|7

54

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32的CAN通信时,RX方没有接收到数据,TX端却显示数据发送 [复制链接]

在调试CAN通信,发现出现一个问题,详细描述如下

为了调试方便,我把CAN总线上的节点简化到只有2个节点,一个收一个发。

(1)当接收端滤波器设置为全接收,则可以接收到发送端数据,发送端显示发送成功。

(2)当接收端滤波器设置了过滤条件,则接收不到发送端的数据,但是发送端却显示发送成功。

请路过的帮忙指点一下,问题出来什么地方呢?

谢了先。


初始化代码部分:

 // CAN cell init 
  CAN_InitStructure.CAN_TTCM=DISABLE; 
  CAN_InitStructure.CAN_ABOM=DISABLE;   
  CAN_InitStructure.CAN_AWUM=DISABLE;   
  CAN_InitStructure.CAN_NART=DISABLE;   
  CAN_InitStructure.CAN_RFLM=DISABLE;  
  CAN_InitStructure.CAN_TXFP=DISABLE;   
  CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; 
  CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_3tq; 
  CAN_InitStructure.CAN_Prescaler=60;  
  CAN_Init(&CAN_InitStructure);
   
  // CAN filter init
  CAN_FilterInitStructure.CAN_FilterNumber=0;               
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; 
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; 
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;   
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;        
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;        
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FilterFIFO0;  
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; 
  CAN_FilterInit(&CAN_FilterInitStructure);
  

  CAN_ITConfig(CAN_IT_FMP0 | CAN_IT_FMP1, ENABLE);



我的发送程序部分:

   TransmitMailbox = CAN_Transmit(&TxMessage);  
   i = 0;
    while((CAN_TransmitStatus(TransmitMailbox) != CANTXOK) && (i != 0xFFFF))
    {
      i++;
    }
 
    if(i == 0xFFFF)  
    {
      return ERROR;
    }
    else            
    {
      return SUCCESS;
    }  


接收是在中断中执行的。

此帖出自stm32/stm8论坛

最新回复

道理是这样,关键是现在是软件问题还是硬件问题。  详情 回复 发表于 2014-2-25 14:59
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

CAN接收过滤器不设置,发送端也显示发送成功

继续进行测试,在初始化代码中,我即使把接收过滤器初始化部分去掉或者把14个接收过滤器都关闭掉,发送端也同样认为发送成功?

这是为什么了?

有路过的指导一下呀。
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

我的CAN 也遇到问题了

                                 我的是前16帧数据,CAN 采样器采不到东西 ,后面的就能采到
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 

我回答一下,不知对不

can 检测发送成功是检测应答位的,而应答位是由硬件自己完成的,即使你把滤波器全关了,只是滤除要接受的 can数据帧,不会影响到硬件对应答位的正确置位,所以利用发送成功只能检测硬件是否连接。
我新手,不知道说的对不?
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

5
 

发送成功

不代表接收程序没问题.
只是发送方发送完数据以后,收到ACK了.这说明发送的数据没被破坏,而有接收方完整接收了信息.但是接收方是否正确接收数据到寄存器,接收方寄存器是否完全配置正确,是不能由这个保证的.
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

can

不会
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

7
 
没看懂
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

8
 
道理是这样,关键是现在是软件问题还是硬件问题。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表