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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1H系列
  4. YTM32B1HA01 因没有清空中断标志位,导致串口中断一直触发的问题

YTM32B1HA01 因没有清空中断标志位,导致串口中断一直触发的问题

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

    有可能是你配置接收 8 个字节,实际收到超过 8 个字节

    1 条回复 最后回复
    0
    • huorunfaH 离线
      huorunfaH 离线
      huorunfa
      编写于 最后由 编辑
      #3
      1. 软件内部有接收动作,但是测试过程中对端没有发出过数据,为什么会触发接收中断?
      2. “配置接收 8 个字节,实际收到超过 8 个字节”出现这种情况会导致中断一直触发吗?实际开发过程中是避免不了有这种情况出现的。
      1 条回复 最后回复
      0
      • DigaD 离线
        DigaD 离线
        Diga
        编写于 最后由 编辑
        #4
        1. 看状态应该是有噪声,noise flag 有置起,建议用示波器看一下总线
        2. 如果你确定个数的,那就正确设置个数,上层协议应该是要规定的。如果不定长的帧,那就不能设置较小的接收值,采用不定长帧的接收方式,demo 里有不定长接收
        1 条回复 最后回复
        0
        • huorunfaH 离线
          huorunfaH 离线
          huorunfa
          编写于 最后由 编辑
          #5

          示波器看着没啥问题,这个也是偶发性的,当前SDK是不是没有处理这种情况?

          1 条回复 最后回复
          0
          • huorunfaH 离线
            huorunfaH 离线
            huorunfa
            编写于 最后由 编辑
            #6

            噪声会导致 DRF_RFE 接收中断标志置位吗?现场问题是 DRF_RFE 置位,但是 uartState->isRxBusy 没有置位,这个中断清不掉

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

              我猜测:在你的代码里,应该是 LINFlexD_UART_DRV_CompleteReceiveUsingInterrupts 这个函数去把 isRxBusy 设置成 false,但是在这之前,接收中断就已经关了。但现在你的状态是 isRxBusy 是 false,但中断仍使能,就会导致一直进接收中断,却没法接收数据。还是建议自查一下代码

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

                image.png
                如果此处触发串口异常中断调用 LINFlexD_UART_DRV_ErrIRQHandler -> LINFlexD_UART_DRV_CompleteReceiveUsingInterrupts 清除 isRxBusy 后,LINFlexD_UART_DRV_StartReceiveUsingInterrupts 继续运行,执行 /* Enable the receiver */
                LINFlexD_SetReceiverState(base, true);

                    /* Enable receive data full interrupt */
                    LINFlexD_SetInterruptMode(base, LINFlexD_DATA_RECEPTION_COMPLETE_INT, true); 是否会导致这个问题
                
                1 条回复 最后回复
                0
                • huorunfaH 离线
                  huorunfaH 离线
                  huorunfa
                  编写于 最后由 编辑
                  #9

                  image.png

                  1 条回复 最后回复
                  0
                  • DigaD 离线
                    DigaD 离线
                    Diga
                    编写于 最后由 编辑
                    #10

                    image.png

                    1 条回复 最后回复
                    0
                    • DigaD 离线
                      DigaD 离线
                      Diga
                      编写于 最后由 编辑
                      #11

                      把你流程讲一下,正常流程是不可能出现 isRxBusy = false,中断仍使能的情况。你有异步调用开启接收,或者 abort 接收?

                      1 条回复 最后回复
                      0
                      • huorunfaH 离线
                        huorunfaH 离线
                        huorunfa
                        编写于 最后由 编辑
                        #12

                        我们当前的流程是任务A负责调用 LINFlexD_UART_DRV_ReceiveData 开启接收,之后等待接收回调函数触发。另有一个软件定时器监控接收超时,超时后会调用 LINFlexD_UART_DRV_AbortReceivingData 将接收abort。(已知软件定时器不会抢占 任务A 的时间片,因此不会出现任务A执行 LINFlexD_UART_DRV_ReceiveData 接口的同时被软件定时器回调函数打断)。
                        我刚刚的意思是任务A执行LINFlexD_UART_DRV_ReceiveData 的过程被LINFlexD_UART_DRV_ErrIRQHandler 打断进而有概率出现“状态是 isRxBusy 是 false,但中断仍使能”的情况

                        1 条回复 最后回复
                        0

                      • 云途开发生态介绍

                        快速上手云途开发生态

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YT CONFIG TOOL调查问卷

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

                      • can
                        28
                        demo
                        26
                        uds
                        14
                        lin stack
                        13
                        fbl
                        6
                        md14
                        6
                        yt-link
                        6
                        adc模块
                        4
                        Online Users
                        ljmL
                        ljm
                        • 登录

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