查看: 3259|回复: 6

[求助] 转载个KE06CAN问题

[复制链接]
  • TA的每日心情
    开心
    2018-4-17 08:39
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    788

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2796
    最后登录
    1970-1-1
    发表于 2015-6-5 09:50:51 | 显示全部楼层 |阅读模式
    明强 林 2014-11-27 上午12:40                                 
    板子用的是FRDM-KE06Z,

    KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\build\keil\ke06\CA
    N_Node1WithInt_demo,
    KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\build\keil\ke06\CA
    N_Node2_demo,
    KEXX_DRIVERS_V1.2.1_DEVD\kexx_drv_lib\build\keil\ke06\CA
    N_Node1_demo,
    这三个例程都无法接受到CAN数据,无法进入接受中断函数,但是可以发送CAN数据,用示波器看MCU的
    can_rx(PTH2)是有信号的

                     
             平均用户评级: 无评分 (0 评级)平均用户评级
    无评分
    0
    (0 评级)





    此内容已被标记为最终。      显示                 14 条回复     


      Re: FRDM-KE06Z 无法接受CAN数据                                                           
                            Xi Yang                    2014-11-27 下午8:18                 (回复 明强 林)                      Hi,
      1, Please confirm CAN connection and baudrate is correct. I suggested to use a USB-CAN and logic analyzer as debugger for your problem killer.
      2. KEXX_DRIVERS_V1.2.1_DEVD's baudrate define is wrong. please see following:

      I found two issues on KE06_drv_lib CAN demo:
      • #define BAUD_RATE_CLOCK in mscan.h should be BUS_CLK_HZ.
      • #define Baud_RATE in mscan.h should be (BAUD_RATE_CLOCK/(BAUD_RATE_BRP + 1) / (3 + BAUD_RATE_TSEG1 + BAUD_RATE_TSEG2))



      3. I am verified CAN demos on KEXX_DRIVERS_V1.2.1_DEVD, It all works OK.

                           
      • 喜爱 显示 0 喜欢(0)
                                     
      • 操作



           
      • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                              明强 林                     2014-11-27 下午8:28                 (回复 Xi Yang)                      你好,最原始的的Demo是无法发送和接受数据的,因为波特率设置不对,这个问题你也知道了,我已经改成了选择 the bus clock,并且波特率设置正确了,之后就可以正常发送数据了,用CAN分析仪可以正常接受数据,但是从CAN分析仪发送数据到MCU,用示波器测试MCU的can_rx引脚是有波形的,但是就无法进入CAN接受中断,所以无法接受数据,用的都是Demo

                             
        • 喜爱 显示 0 喜欢(0)
                                       
        • 操作



             
        • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                Xi Yang                    2014-11-27 下午8:33                 (回复 明强 林)                      Hi,
          1. Can you verify CAN RX frame's baud rate, type ID and data is all OK by CAN analyzer?
          2. If so, I think it's frame ID matching issue. please check Rx accept ID in code.

                               
          • 喜爱 显示 0 喜欢(0)
                                         
          • 操作



               
          • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                  明强 林                     2014-11-27 下午8:39                 (回复 Xi Yang)                      我的想法是这样的,rx有波形输出,那不管MCU能不能正确的接受到完整的一帧数据,至少是可以进入接受中断的,但是我发现一直进不去接受中断,

                                 
            • 喜爱 显示 0 喜欢(0)
                                           
            • 操作



                 
            • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                    Xi Yang                    2014-11-27 下午8:43                 (回复 明强 林)                      No, MCU can only generate interrupt on arriving CAN frame's ID is matching with CAN module's ID filter.

                                   
              • 喜爱 显示 0 喜欢(0)
                                             
              • 操作



                   
              • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                      明强 林                     2014-11-27 下午8:54                 (回复 Xi Yang)                      如果我用Demo里面的程序,CAN分析仪发送给MCU的CAN ID 是任意的么?还是只能是其中的莫几个ID呢?

                                     
                • 喜爱 显示 0 喜欢(0)
                                               
                • 操作



                     
                • Re: Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                        Jingjing Zhou                    2014-12-2 上午1:58                 (回复 明强 林)                      Hi 明强林,

                      关于KE06的KEIL CAN中断代码,我已经修改了下,现在能够正确中断发送接收,波特率修改为100kbps,代码工程请查看附件。
                      关于CAN分析仪发给KE06,ID要求默认设置为0x00000000.

                      如果还有问题,欢迎继续交流。



                  Have a great day,
                  Jingjing

                  -----------------------------------------------------------------------------------------------------------------------
                  Note: If this post answers your question, please click the Correct Answer button. Thank you!
                  -----------------------------------------------------------------------------------------------------------------------

                  • KE06CAN_drv_lib.rar                 247.4 K                 病毒扫描未检测出任何病毒或恶意软件。 文件最后扫描日期为6 个月 前。




                                       
                  • 喜爱 显示 0 喜欢(0)
                                                 
                  • 操作



                       
                  • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                          明强 林                     2014-12-2 下午7:37                 (回复 Jingjing Zhou)                      你好,我今天重新看了一下原始的CAN驱动代码,发现中断配置应该是没问题的,只要我们改到正确的波特率之后,是可以接受到CAN分析仪发送过来的ID数据的,但是只能接受ID:0X00000000,其他ID无法接受,所以我们现在的问题应该是;如何设置成可以接受任意ID数据。

                                         
                    • 喜爱 显示 0 喜欢(0)
                                                   
                    • 操作



                         
                    • Re: Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                            Jingjing Zhou                    2014-12-2 下午11:00                 (回复 明强 林)                      Hi 明强 林,

                            其实代码还可以接受0x802以及0x803的扩展帧ID。
                            如果你要接收任意ID数据,就设置屏蔽寄存器为接收任意ID,被代码中:
                      sMSCANConfig.u32IDMR0 = (CAN_IDMR0);
                          sMSCANConfig.u32IDMR1 = (CAN_IDMR1);
                      这两行给替换为如下两行:
                      sMSCANConfig.u32IDMR0 = 0xffffffff;
                          sMSCANConfig.u32IDMR1 = 0xffffffff;
                      这样所有的ID都可以接受。



                      Have a great day,
                      Jingjing
                      -----------------------------------------------------------------------------------------------------------------------
                      Note: If this post answers your question, please click the Correct Answer button. Thank you!
                      -----------------------------------------------------------------------------------------------------------------------

                                           
                      • 喜爱 显示 0 喜欢(0)
                                                     
                      • 操作



                           
                      • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                              明强 林                     2014-12-2 下午11:45                 (回复 Jingjing Zhou)                      你好,我按照你说的那样把这四个寄存器改成了这样:
                                sMSCANConfig.u32IDAR0 = (0xffffffff);
                             sMSCANConfig.u32IDAR1 = (0xffffffff);
                             sMSCANConfig.u32IDMR0 = (0xffffffff);
                             sMSCANConfig.u32IDMR1 = (0xffffffff);

                        发现是可以接受任意ID,但是发现只有接受到扩展帧的时候才可以完整的接受到ID,接受标准帧是无法完整接受ID,我是按照这样来打印接受到的ID的
                                        printf("ID is 0x%x!\r\n",sRxFrameInfo.ID_Type);
                                  printf("ID1 is 0x%x!\r\n",sRxFrameInfo.ID_Type.ID);
                                  printf("ID2 is 0x%x!\r\n",sRxFrameInfo.ID_Type.StandID);
                                  printf("ID3 is 0x%x!\r\n",sRxFrameInfo.ID_Type.ExtID);

                                             
                        • 喜爱 显示 0 喜欢(0)
                                                       
                        • 操作



                             
                        • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                                scofield wolff                    2015-4-2 上午6:58                 (回复 明强 林)                      你好,请问你这个问题解决了吗?我刚刚开始用这款产品,今天看到CAN_node1_demo程序,发现里面有个传送标准帧0和发送扩展帧寄存器0不同地址。而看到的数据手册关于这两个寄存器地址是一样的。不知道是不是这个原因。

                                               
                          • 喜爱 显示 0 喜欢(0)
                                                         
                          • 操作




                                   
                      • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                              明强 林                     2014-12-3 上午12:39                 (回复 Jingjing Zhou)                      你好,我最后改成这样的版本:
                             sMSCANConfig.u32IDAR0 = (0xffffffff);
                             sMSCANConfig.u32IDAR1 = (0xffffffff);
                             sMSCANConfig.u32IDMR0 = (0xffffffff);
                             sMSCANConfig.u32IDMR1 = (0xffffffff);
                        关于接受扩展帧和标准帧的改成这样:
                        (在函数uint8_t CAN_ReadOneFrameFromBuff(MSCAN_Type *pCANx,MSCAN_FramePtr pRxFrame)里面)
                                        if(pRxFrame->bIsExtOrStand)//扩展帧
                                  {
                                       pRxFrame->ID_Type.ExtID.EID28_21 = CAN_ReadIDR0Reg(pCANx);
                                       pRxFrame->ID_Type.ExtID.EID20_18 = sIDR1.IDR1.EID20_18_OR_SID2_0;
                                       pRxFrame->ID_Type.ExtID.EID17_15 = sIDR1.IDR1.EID17_15;
                                       pRxFrame->ID_Type.ExtID.EID14_7 = CAN_ReadIDR2Reg(pCANx);
                                       pRxFrame->ID_Type.ExtID.EID6_0 = sIDR3.IDR3.EID6_0;
                                  }
                                  else//标准帧
                                  {
                                       pRxFrame->ID_Type.StandID.EID2_0 = sIDR1.IDR1.EID20_18_OR_SID2_0;
                                       pRxFrame->ID_Type.StandID.EID10_3 = CAN_ReadIDR0Reg(pCANx);
                                  }

                        不知道这样改可不可取?或者你有更好的解决方法。

                                             
                        • 喜爱 显示 0 喜欢(0)
                                                       
                        • 操作



                             
                        • Re: Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                                Jingjing Zhou                    2014-12-8 上午6:11                 (回复 明强 林)                      你好!不好意思,回复迟了。
                          这样定义是可以的。
                          就是你需要在程序中设置下,接收是扩展ID还是标准ID。


                          Have a great day,
                          Jingjing

                          -----------------------------------------------------------------------------------------------------------------------
                          Note: If this post answers your question, please click the Correct Answer button. Thank you!
                          -----------------------------------------------------------------------------------------------------------------------

                                               
                          • 喜爱 显示 0 喜欢(0)
                                                         
                          • 操作



                               
                          • Re: FRDM-KE06Z 无法接受CAN数据                                                           
                                                  明强 林                     2014-12-9 下午6:36                 (回复 Jingjing Zhou)                      你好,好的,那我暂时就这样设置先了,后面有问题的话再交流沟通。谢谢


















    链接地址:http://community.freescale.com/thread/336035这个对话很好的为CAN初学者展示了实用过程,配合论坛里CAN的三篇文档,应该可以入门了,谢谢


    我知道答案 目前已有6人回答
    回复

    使用道具 举报

    该用户从未签到

    8

    主题

    300

    帖子

    0

    高级会员

    Rank: 4

    积分
    746
    最后登录
    2016-5-26
    发表于 2015-6-5 10:28:30 | 显示全部楼层
    谢谢分享。。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-17 08:39
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    788

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2796
    最后登录
    1970-1-1
     楼主| 发表于 2015-6-5 10:35:21 | 显示全部楼层

    搜KE06CAN问题的时候发现的帖子,觉得挺有用的,就转过来了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-5 10:41:58 | 显示全部楼层
    楼主在飞思卡尔community里面转的问题,就是我答的。
    不过,如果你想用里面的代码,建议你直接用论坛分享的:
    【经验分享】KE06 MSCAN标识符接收滤波器配置讲解 ...
    我已经总结过并调试好代码放出来了。

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-5 10:43:48 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-17 08:39
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    788

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2796
    最后登录
    1970-1-1
     楼主| 发表于 2015-6-5 10:59:02 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-6-5 10:41
    楼主在飞思卡尔community里面转的问题,就是我答的。
    不过,如果你想用里面的代码,建议你直接用论坛分享的 ...

    转了一圈又转回来了,非常感谢您的解答,我是觉得那位实用者的提问是很多初次使次用CAN模块人都要经历的思考,大家看一下可以少走弯路,更快的上手KE06的CAN模块,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-5 11:21:58 | 显示全部楼层
    qiu-368230 发表于 2015-6-5 10:59
    转了一圈又转回来了,非常感谢您的解答,我是觉得那位实用者的提问是很多初次使次用CAN模块人都要经历的 ...

    是的,官方之前的代码的确有些问题,导致大家有那么多的疑问,所以建议还是用我论坛修改后的代码。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-27 14:47 , Processed in 0.101660 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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