跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. 芯片YTM32B1ME0:如果配置为自动恢复,BUS OFF恢复,应用层如何得知BUS OFF恢复

芯片YTM32B1ME0:如果配置为自动恢复,BUS OFF恢复,应用层如何得知BUS OFF恢复

已定时 已固定 已锁定 已移动 已解决 YTM32B1M系列
9 帖子 3 发布者 3.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • alexbenA 离线
    alexbenA 离线
    alexben
    写于 最后由 编辑
    #1

    CAN H与L短接,产生BUS OFF,进行BUS OFF相应的处理,如果配置为自动恢复,这时CAN H与L恢复正常,CAN 总线上既没有发送和接收数据,应用层如何得知BUS OFF恢复正常了,底层有没有相应的接口,让上层应用能够调用此接口得知BUS OFF恢复正常了。
    应用场景:
    1.当BUS OFF发生时,进行BUS OFF计数,如计数器大于8,网络状态跳转到WAIT FOR BUS OFF,并记录DTC ,然后2秒后进入SLEEP状态。
    2.当BUS OFF发生时,进行BUS OFF计数,如果这时BUS OFF恢复了,并且计数器小于8,这时需要每隔1秒进行计数器自减,当减到0时,网络状态需跳转到之前的状态,(备注:应用层需要得知此时BUS OFF恢复了,然后才能进行每隔1秒自减操作)

    1 条回复 最后回复
    0
    • yt0069Y 离线
      yt0069Y 离线
      yt0069 YunTu
      写于 最后由 yt0069 编辑
      #4

      SDK中默认是busoff自动恢复模式,需要手动更改为手动恢复模式。

      FlexCAN BusOff Recovery方式配置

      • FlexCAN模块支持BusOff恢复方式的设置,可设置为自动恢复和非自动恢复方式参照CAN CTRL1 Register。

      • SDK中无BusOff恢复方式的配置,初始化后默认为自动恢复方式,后续SDK中会有更新。目前用户可以在void FLEXCAN_Init(CAN_Type * base)增加此寄存器位的操作
        a76743fd-1dc6-4b08-a21c-11ca819bd284-image.png
        cdd79f18-3ce8-490b-808e-19d404db37a1-image.png

      • 配置代码如下:
        13eded0f-976d-459d-afbc-b80217fcfebe-image.png
        如上配置以后,若CAN进入busoff状态,之后不会自动恢复。

      1 条回复 最后回复
      0
      • jiankang_wangJ 离线
        jiankang_wangJ 离线
        jiankang_wang YunTu
        写于 最后由 编辑
        #2

        请问是什么系列的代码?
        如果是MCAL的代码的话,根据AutoSar的规范,发生Busoff后Controller会进入STOPPED状态,不能自动恢复,需要用户重新调用Can_SetControllerMode()函数进行重启Controller。

        [SWS_Can_00272] ⌈ After bus-off detection, the CAN controller shall transition to the state STOPPED and the Can module shall ensure that the CAN controller doesn’t

        participate on the network anymore. ⌋ (SRS_Can_01060)

        1 条回复 最后回复
        0
        • alexbenA 离线
          alexbenA 离线
          alexben
          写于 最后由 编辑
          #3

          YTM32B1ME0_1_3_0 SDK

          1 条回复 最后回复
          0
          • yt0069Y 离线
            yt0069Y 离线
            yt0069 YunTu
            写于 最后由 yt0069 编辑
            #4

            SDK中默认是busoff自动恢复模式,需要手动更改为手动恢复模式。

            FlexCAN BusOff Recovery方式配置

            • FlexCAN模块支持BusOff恢复方式的设置,可设置为自动恢复和非自动恢复方式参照CAN CTRL1 Register。

            • SDK中无BusOff恢复方式的配置,初始化后默认为自动恢复方式,后续SDK中会有更新。目前用户可以在void FLEXCAN_Init(CAN_Type * base)增加此寄存器位的操作
              a76743fd-1dc6-4b08-a21c-11ca819bd284-image.png
              cdd79f18-3ce8-490b-808e-19d404db37a1-image.png

            • 配置代码如下:
              13eded0f-976d-459d-afbc-b80217fcfebe-image.png
              如上配置以后,若CAN进入busoff状态,之后不会自动恢复。

            1 条回复 最后回复
            0
            • alexbenA 离线
              alexbenA 离线
              alexben
              写于 最后由 编辑
              #5

              如果配置成手动恢复,在没有手动恢复CAN前,H与L短接,也是进不了BUS OFF中断,我的需求是:
              干拢BUS OFF发生,使其在100ms内,计数器小于8,然后再进行BUS OFF手动恢复,恢复成功了,这时需要每隔1秒进行计数器自减,当减到0时,网络状态需跳转到之前的状态,(备注:应用层需要得知此时BUS OFF恢复了,然后才能进行每隔1秒自减操作)

              1 条回复 最后回复
              0
              • yt0069Y 离线
                yt0069Y 离线
                yt0069 YunTu
                写于 最后由 编辑
                #6

                可以把CAN0->CTRL1 I= CAN_CTRL1_BOFFREC_MASK这段代码增加到can_init的函数里面
                Busoff的恢复测量需要自己代码实现

                1 条回复 最后回复
                0
                • alexbenA 离线
                  alexbenA 离线
                  alexben
                  写于 最后由 编辑
                  #7

                  1722393813700.png

                  1 条回复 最后回复
                  0
                  • alexbenA 离线
                    alexbenA 离线
                    alexben
                    写于 最后由 编辑
                    #8

                    我加入CAN0->CTRL1 I= CAN_CTRL1_BOFFREC_MASK这段代码,现在出现一个问题,如果我把H与L短接,BUS OFF中断进不了,1722411321957.png

                    1 条回复 最后回复
                    0
                    • yt0069Y 离线
                      yt0069Y 离线
                      yt0069 YunTu
                      写于 最后由 编辑
                      #9

                      busoff的中断要看ESR1的BOFFINT标志位
                      image.png
                      如果要产生Bus Off Done Interrupt需要使能CAN_CTRL2.BOFFDONEMSK
                      d25e0669-d846-4737-8bcd-25ff5099733a-image.png

                      1 条回复 最后回复
                      0
                      • ,FrankieF Frankie 将这个主题转为问答主题
                      • ,FrankieF Frankie 将这个主题标记为已解决

                    • 云途开发生态介绍

                      快速上手云途开发生态

                    • 云途论坛规则/Yuntu Forum Rules

                      发帖前请查看

                    • YT CONFIG TOOL调查问卷

                      帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                    • can
                      25
                      demo
                      22
                      lin stack
                      13
                      uds
                      13
                      md14
                      6
                      yt-link
                      6
                      fbl
                      5
                      adc模块
                      4
                      Online Users
                      • 登录

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门