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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. ICU PORT程序不进中断

ICU PORT程序不进中断

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

    CANRX引脚(PTC_6)复用ICU休眠时切换ICU检测总线,现在发现程序不进入ICU中断,程序没有进IcuPortIrqProcess,PIFR没有置位,可能是什么原因?比较急!谢谢9a83edd1-3c90-46e9-b0b7-d34863a6c942-image.png

    1 条回复 最后回复
    0
    • WRW 离线
      WRW 离线
      WR YunTu
      编写于 最后由 编辑
      #7

      can_wakeup_demo.zip
      这个是can唤醒的demo你可以看一下

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

        image.png
        检查一下Platform中的GPIOC中断是否使能

        chenchaoC 1 条回复 最后回复
        0
        • chenchaoC 离线
          chenchaoC 离线
          chenchao
          回复了jan 最后由 编辑
          #3

          jan 在 ICU PORT程序不进中断 中说:

          image.png
          检查一下Platform中的GPIOC中断是否使能
          使能了025c5d00-7ba2-441b-b371-22cddf83b51f-image.png

          WRW 1 条回复 最后回复
          0
          • WRW 离线
            WRW 离线
            WR YunTu
            回复了chenchao 最后由 编辑
            #4

            chenchao 把你yct发出来看一下

            chenchaoC 1 条回复 最后回复
            0
            • chenchaoC 离线
              chenchaoC 离线
              chenchao
              回复了WR 最后由 编辑
              #5

              WR 在 ICU PORT程序不进中断 中说:

              chenchao 把你yct发出来看一下

              54ca97f5-9951-4b4e-aea5-f68b7c8a5ea3-S52_Lamp.yct 麻烦了,谢谢

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

                image.png

                AI提供的解决方案,仅供参考!!!!

                🔍 核心问题分析

                1️⃣ 【最可能】CAN1_RX引脚功能模式冲突 ⚠️

                您的Port配置中,PTC_6的 PortPinMode = "CAN1_RX"(CAN1接收的复用功能),但ICU使用的是 IcuIp = "PORT" 模式。

                问题本质:

                • 当引脚处于 CAN1_RX 复用功能时,PORT模块的数字输入中断检测电路可能无法有效捕获信号变化
                • ICU的PORT模式依赖的是PORT模块的 GPIO数字输入路径 上的边沿检测
                • CAN1_RX模式下,CAN控制器直接接管了该引脚,PORT模块的PIFR(Pin Interrupt Flag Register)不会因为CAN总线信号的变化而置位

                解决方案: 在休眠切换到ICU检测时,需要先将PTC_6的引脚功能切换为 GPIO输入模式,再使能ICU中断。唤醒后再切回CAN1_RX。


                2️⃣ 边沿触发配置不匹配 — ICU_RISING_EDGE

                "IcuDefaultStartEdge": "ICU_RISING_EDGE"
                

                CAN总线物理层特性:

                电平 含义
                HIGH 隐性(Recessive,空闲态)
                LOW 显性(Dominant,激活态)

                一个CAN帧的第一个动作是 SOF(Start of Frame)= 显性位 = 下降沿。如果您只配置了 ICU_RISING_EDGE,CAN帧起始的下降沿无法被捕获!虽然后续数据位中会有上升沿,但如果CAN控制器已经休眠,整个总线上可能只有一个下降沿就结束了。

                解决方案: 改为 ICU_BOTH_EDGES(双边沿检测):

                "IcuDefaultStartEdge": "ICU_BOTH_EDGES"
                

                3️⃣ IcuWakeupCapability = false

                "IcuWakeupCapability": false
                

                您在休眠场景下需要使用ICU检测总线唤醒,但该通道的Wakeup能力是 关闭的。

                需要改为: true

                同时确认 IcuWakeup 子容器已正确关联到EcuM唤醒源:

                "IcuWakeup": {
                    "IcuChannelWakeupInfo": "EcuM/EcuMConfiguration/EcuMCommonConfiguration/EcuMWakeupSource/EcuMWakeupSource_0"
                }
                

                4️⃣ 无内部上拉/下拉电阻

                "PortPinPS": "PORT_PIN_NO_PULL"
                

                当CAN进入休眠模式、CAN控制器停止驱动RX引脚时,引脚如果没有外部上拉,引脚电平会浮动/不确定。PIFR检测需要清晰的数字边沿,浮动电平可能根本产生不了有效边沿。

                解决方案:

                • 硬件上确保CAN RX有外部上拉到VCC(通常CAN收发器会处理)
                • 或软件配置弱上拉:PORT_PIN_PULLUP

                5️⃣ 休眠期间PORT模块时钟可能被关闭

                您有 IcuEnableSchmSupport: true 和 IcuEnableUserModeSupport: true。如果进入休眠模式(如STOP模式)时PORT模块的时钟被门控关闭,则PIFR永远无法置位。

                请检查:

                • Mcu的 McuModeSettingConf 中休眠模式下的时钟门控配置
                • 确保PORT模块在休眠模式下时钟保持开启

                ✅ 建议修改方案汇总

                参数路径 当前值 建议值
                Icu/IcuConfigSet/IcuChannel/IcuChannel_0/IcuDefaultStartEdge ICU_RISING_EDGE ICU_BOTH_EDGES
                Icu/IcuConfigSet/IcuChannel/IcuChannel_0/IcuWakeupCapability false true
                Port/PortConfigSet/PortContainer/CAN1/CAN1_RX_PTC6/PortPinPS PORT_PIN_NO_PULL PORT_PIN_PULLUP
                应用代码中休眠前 未处理 需要切PTC_6为GPIO输入

                最关键的一点 — 应用代码流程

                休眠前的正确流程应是:

                1. CAN_DeInit() / CAN_SetMode(SLEEP)      // 关闭CAN控制器
                2. Port_SetPinMode(PTC_6, PORT_GPIO_MODE) // 切PTC_6为GPIO输入
                3. Icu_Init()                              // 初始化ICU(PORT中断模式)
                4. Icu_EnableWakeup()                      // 使能唤醒
                5. 进入休眠
                

                唤醒后的流程:

                1. Icu_DisableWakeup()
                2. Port_SetPinMode(PTC_6, CAN1_RX)        // 恢复CAN功能
                3. Can_Init()
                

                如果不做第2步的引脚功能切换,直接使用CAN1_RX模式下的PORT中断检测,PIFR大概率不会置位,这就是您碰到的问题。

                1 条回复 最后回复
                1
                • WRW 离线
                  WRW 离线
                  WR YunTu
                  编写于 最后由 编辑
                  #7

                  can_wakeup_demo.zip
                  这个是can唤醒的demo你可以看一下

                  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
                  luxiaoguoL
                  luxiaoguo
                  • 登录

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