社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 精华区
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
搜索
查看: 942|回复: 14

[求助] 关于f407和f103can通信不上的问题?

[复制链接]

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-10 14:40:43 | 显示全部楼层 |阅读模式
5芯币
本帖最后由 刘W杰 于 2017-2-10 14:56 编辑

有人用过f407和f103can通信么? 为什么波特率一样,掩码那些都相同就是没反应。用逻辑分析仪接H,L,2条线的波形是这样的。
file:/// M)JE()]5M693YL$$R]3VMIL.png


F407配置程序
CAN1_Mode_Init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);//CAN,波特率500Kbps    42/(7+6+1)/6=0.5M

        CAN_InitStructure.CAN_TTCM=DISABLE;        //非时间触发通信模式   
          CAN_InitStructure.CAN_ABOM=DISABLE;        //软件自动离线管理         
          CAN_InitStructure.CAN_AWUM=DISABLE;//睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
          CAN_InitStructure.CAN_NART=DISABLE;        //禁止报文自动传送
          CAN_InitStructure.CAN_RFLM=DISABLE;        //报文不锁定,新的覆盖旧的  
          CAN_InitStructure.CAN_TXFP=DISABLE;        //优先级由报文标识符决定
          CAN_InitStructure.CAN_Mode= mode;         //模式设置
          CAN_InitStructure.CAN_SJW=tsjw;        //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1tq~CAN_SJW_4tq
          CAN_InitStructure.CAN_BS1=tbs1; //Tbs1范围CAN_BS1_1tq ~CAN_BS1_16tq
          CAN_InitStructure.CAN_BS2=tbs2;//Tbs2范围CAN_BS2_1tq ~        CAN_BS2_8tq
          CAN_InitStructure.CAN_Prescaler=brp;  //分频系数(Fdiv)为brp+1        
          CAN_Init(CAN1, &CAN_InitStructure);   // 初始化CAN1

                //配置过滤器
         CAN_FilterInitStructure.CAN_FilterNumber=0;          //过滤器0
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
          CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;////32位ID
          CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
           CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
          CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化
(把掩码已经全部改为0来测试了)


f103vet6的配置程序

static void CAN_Mode_Config(void)
{
           CAN_InitTypeDef        CAN_InitStructure;
                 /************************CAN通信参数设置**********************************/
        /*CAN寄存器初始化*/
        CAN_DeInit(CAN1);
        CAN_StructInit(&CAN_InitStructure);
        /*CAN单元初始化*/
        CAN_InitStructure.CAN_TTCM=DISABLE;                           //MCR-TTCM  时间触发通信模式使能
    CAN_InitStructure.CAN_ABOM=DISABLE;                           //MCR-ABOM  自动离线管理
    CAN_InitStructure.CAN_AWUM=ENABLE;                           //MCR-AWUM  自动唤醒模式
    CAN_InitStructure.CAN_NART=DISABLE;                           //MCR-NART  禁止报文自动重传          DISABLE-自动重传
    CAN_InitStructure.CAN_RFLM=DISABLE;                           //MCR-RFLM  接收FIFO 锁定模式  DISABLE-溢出时新报文会覆盖原有报文  
    CAN_InitStructure.CAN_TXFP=DISABLE;                           //MCR-TXFP  发送FIFO优先级 DISABLE-优先级取决于报文标示符
    CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;  //正常发送模式
     CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;                   //BTR-SJW 重新同步跳跃宽度 1个时间单元
    CAN_InitStructure.CAN_BS1=CAN_BS1_9tq;                   //BTR-TS1 时间段1 占用了9个时间单元
    CAN_InitStructure.CAN_BS2=CAN_BS2_8tq;                   //BTR-TS1 时间段2 占8个时间单元
    CAN_InitStructure.CAN_Prescaler =4;                   ////BTR-BRP 波特率分频器  定义了时间单元的时间长度 36/(1+9+8)/4=0.5Mbps
        CAN_Init(CAN1, &CAN_InitStructure);
}

/*
* 函数名:CAN_Filter_Config
* 描述  :CAN的过滤器 配置
* 输入  :无
* 输出  : 无
* 调用  :内部调用
*/
static void CAN_Filter_Config(void)
{
   CAN_FilterInitTypeDef  CAN_FilterInitStructure;

        /*CAN过滤器初始化*/
        CAN_FilterInitStructure.CAN_FilterNumber=0;                                                //过滤器组0
    CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;        //工作在标识符屏蔽位模式
        CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;        //过滤器位宽为单个32位。
        /* 使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。 */

    CAN_FilterInitStructure.CAN_FilterIdHigh= 0x0;                                //要过滤的ID高位
    CAN_FilterInitStructure.CAN_FilterIdLow= 0x0; //要过滤的ID低位
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0x0;                        //过滤器高16位每位必须匹配
    CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0x0;                        //过滤器低16位每位必须匹配
        CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;                                //过滤器被关联到FIFO0
        CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                        //使能过滤器
        CAN_FilterInit(&CAN_FilterInitStructure);
        /*CAN通信中断使能*/
        CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}



现在就是通信不上,一点显示都没有



        



回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-10 14:42:05 | 显示全部楼层
2块can的芯片都是 A1050  ,回环测试都可以。

回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2017-2-10 15:35:35 | 显示全部楼层
给出具体电路,先排除硬件问题。这个也可以借助串口助手之类的软件监视一下。

点评

A1050电路很简单,我现在就是用串口1接受can的数据,一点都没有。  详情 回复 发表于 2017-2-10 15:45
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-10 15:43:16 | 显示全部楼层
A$IQ3[LFCMQXYAQO7}K~$YC.png 0_P{ABM{M$QGVH1D91~MKHS.png

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-10 15:45:47 | 显示全部楼层
本帖最后由 刘W杰 于 2017-2-10 15:51 编辑
chunyang 发表于 2017-2-10 15:35
给出具体电路,先排除硬件问题。这个也可以借助串口助手之类的软件监视一下。

A1050电路很简单,我现在就是用串口1接受can的数据,一点都没有。我把图发上去了,黑白的是从极,粉色的是主机。应该主从都要并120的电阻吧?谢谢指导。

点评

你用串口监视软件先查看一下串口TTL端的数据是否正常,正常则检查硬件,不对则是软件问题。  详情 回复 发表于 2017-2-10 16:02

回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2017-2-10 16:02:26 | 显示全部楼层
刘W杰 发表于 2017-2-10 15:45
A1050电路很简单,我现在就是用串口1接受can的数据,一点都没有。我把图发上去了,黑白的是从极,粉色的 ...

你用串口监视软件先查看一下串口TTL端的数据是否正常,正常则检查硬件,不对则是软件问题。
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

使用道具 举报

1万

TA的帖子

146

TA的资源

版主

Rank: 6Rank: 6

技术导师勋章

发表于 2017-2-10 16:02:56 | 显示全部楼层
先看通讯发起方的发送端。

点评

恩恩,谢谢指导。 现在发送那部分可以了,原来发送端虚焊了。  详情 回复 发表于 2017-2-10 16:48
上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-10 16:48:30 | 显示全部楼层
chunyang 发表于 2017-2-10 16:02
先看通讯发起方的发送端。

恩恩,谢谢指导。       现在发送那部分可以了,原来发送端虚焊了。

回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-2-10 17:11:06 | 显示全部楼层
A1050嵌入式电路很简单,我现在就是用串口1接受can的数据,一点都没有。我把图发上去了,黑白的是从极,粉色的是主机。应该主从都要并120的电阻吧?

点评

我已经搞好了,主要是2个的波特率要一致。  详情 回复 发表于 2017-2-12 00:11

回复

使用道具 举报

3794

TA的帖子

8

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

测评达人

发表于 2017-2-10 18:01:57 | 显示全部楼层
建议先排除硬件的问题,我看到你的程序想到原子的例程了,你的这个程序有点像原子的例程。然后因为你的can的过滤的配置中,F407的地址和F103的地址看起来是一样的。
你能正常通讯就鬼了。。。。。

CAN_FilterIdHigh,CAN_FilterIdLow,CAN_FilterMaskIdHigh,CAN_FilterMaskIdLow这些才是重点。。。。
你两个程序都设置一样的。。。。。我感觉是有问题的。。。。。。。


还有你既然使能了中断,为什么NVIC不配置?

不需要can接收中断???

点评

一开始调试没有中断而已, 现在弄好了,主要是 波特率问题+线虚焊了,上面贴的程序也是波特率那里有问题而已,ID一样没影响,can通信没说不可以这样,因为那里掩码被我置为0x00。现在弄好 CAN接受中断+FIFO+索引。比  详情 回复 发表于 2017-2-12 00:15

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-12 00:11:33 | 显示全部楼层
sunyk 发表于 2017-2-10 17:11
A1050嵌入式电路很简单,我现在就是用串口1接受can的数据,一点都没有。我把图发上去了,黑白的是从极,粉 ...

我已经搞好了,主要是2个的波特率要一致。

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-12 00:15:09 | 显示全部楼层
huaiqiao 发表于 2017-2-10 18:01
建议先排除硬件的问题,我看到你的程序想到原子的例程了,你的这个程序有点像原子的例程。然后因为你的can ...

一开始调试没有中断而已, 现在弄好了,主要是 波特率问题+线虚焊了,上面贴的程序也是波特率那里有问题而已,ID一样没影响,can通信没说不可以这样,因为那里掩码被我置为0x00。现在弄好 CAN接受中断+FIFO+索引。比485通信麻烦了点。

点评

对的,其实我后来想了,因为你过滤器是0x00,相当于没有设置,即就是什么都接受。  详情 回复 发表于 2017-2-13 19:49

回复

使用道具 举报

3794

TA的帖子

8

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

测评达人

发表于 2017-2-13 19:49:12 | 显示全部楼层
刘W杰 发表于 2017-2-12 00:15
一开始调试没有中断而已, 现在弄好了,主要是 波特率问题+线虚焊了,上面贴的程序也是波特率那里有问题 ...

对的,其实我后来想了,因为你过滤器是0x00,相当于没有设置,即就是什么都接受。

点评

恩恩  详情 回复 发表于 2017-2-18 22:10

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-2-18 22:10:34 | 显示全部楼层
huaiqiao 发表于 2017-2-13 19:49
对的,其实我后来想了,因为你过滤器是0x00,相当于没有设置,即就是什么都接受。

恩恩

回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-21 11:33 , Processed in 0.490411 second(s), 15 queries , Redis On.

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