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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. SPI总是进入中断问题

SPI总是进入中断问题

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

    3ed7d7a96997c671e51f3ba4a5eb0ea.jpg
    这两个接口中间是不是不能被打断?
    运行的时候,无论是在它们中间打断点,还是用线程去打断它,mcu都会一直循环进spi中断,有点像某个导致中断的标志位没有被清。
    这个spi这个任务优先级不高,运行一段时间后恰好被高级任务从这两接口之间抢段,mcu就死机了,一直进spi中断。
    试过加调度器临界保护,结果这个现象还是会出现,不知道是不是有其他原因也会造成这个问题

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

      可能是因为某次打断时间较长,SPI 没来得及读取接收 FIFO 内的数据,导致FIFO内数据上溢,产生 overflow 错误。
      如果task 较多,可以用 DMA 的方式去搬运数据,这样就不会受到影响

      z1009591161Z 1 条回复 最后回复
      0
      • z1009591161Z 离线
        z1009591161Z 离线
        z1009591161
        在 回复了 Diga 最后由 编辑
        #3

        Diga 这个overflow可以清除吗?还是底驱时间不够

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

          可以清除,但此次 SPI 通信已经失败了,已经有接收数据被丢弃了,而且下次再被长时间打断,还是会产生 overflow

          z1009591161Z 1 条回复 最后回复
          0
          • z1009591161Z 离线
            z1009591161Z 离线
            z1009591161
            在 回复了 Diga 最后由 编辑
            #5

            Diga 丢数据没关系,清除的接口是哪个?9589c2535953f91e64ff6746d383111.jpg
            是这个吗

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

              更正一下,SDK 中断内部是有对错误进行处理的,接收上溢或者发送下溢都会终止当前 SPI 传输。
              你可以看一下一直进中断,进的是什么中断,当前状态寄存器是什么

              z1009591161Z gaoShengG 3 条回复 最后回复
              0
              • z1009591161Z 离线
                z1009591161Z 离线
                z1009591161
                在 回复了 Diga 最后由 编辑
                #7

                Diga 43689aa186471bf283fb48aebbfd1b9.jpg
                反复进这里

                1 条回复 最后回复
                0
                • z1009591161Z 离线
                  z1009591161Z 离线
                  z1009591161
                  在 回复了 Diga 最后由 编辑
                  #8

                  Diga b211bb570b045da4bacb4a126c3a90b.jpg
                  然后进这里,这里所有的if全部没进,直接出来的,也就是说进一次中断什么都没处理

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

                    看一下状态寄存器,SPI->STS

                    1 条回复 最后回复
                    0
                    • gaoShengG 离线
                      gaoShengG 离线
                      gaoSheng
                      在 回复了 Diga 最后由 编辑
                      #10

                      Diga 您好,HA系列测试SPI时偶发出现从SPI->STS寄存器来看TX FIFO下溢标志位被置,但是无法进SPI TRANSMIT ERROR的处理的 if 。spiState->txBuff == 0x00.并且会一直进中断.
                      61de9b54-9b72-4634-b302-829dbdc5aa22-ba820524002d54b53f3915628b59034.png

                      请问有什么排查思路没

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

                        把 debug 窗口关了,你的 debug 窗口也会读取 DATA 里的数据的

                        1 条回复 最后回复
                        1
                        • li5920oL 离线
                          li5920oL 离线
                          li5920o
                          编写于 最后由 编辑
                          #12

                          您好,我在使用mcal的时候配置spidma,主从机四个通道dma,程序也一直在spi中断出不来,使用demo添加dma后也是出不来,是mcal配置有什么问题吗,应该怎么解决
                          自己配置的dma有问题,在demo上配置后

                          53865228832b1f267de005f269d0d0c3.png
                          四个通道每个通道只修改了外设指定的配置
                          4b04ebff4070be08dc6ad80a6dfa0768.png
                          然后在spi中开启了dma通道

                          a937dd4d6333978d03b3c6abcd56e9ec.png

                          39409bf687528b1551ecc63c0486907a.png

                          458f8eabd542e9070fc10f49f878ec5b.png
                          demo其余的代码基本没有更改,只开启了dma初始化,在spi初始化前

                          60e885d8e3278dca728e7d1a39250ef8.png
                          这是程序运行后暂停,停在spi中断那一片

                          1 条回复 最后回复
                          0
                          • FrankF 离线
                            FrankF 离线
                            Frank YunTu
                            编写于 最后由 编辑
                            #13
                            1. 检查DMA的中断是否使能了,2.DMA通道的中断优先级不能比相应的SPI通道优先级低
                            1 条回复 最后回复
                            1

                          • 云途开发生态介绍

                            快速上手云途开发生态

                          • 云途论坛规则/Yuntu Forum Rules

                            发帖前请查看

                          • YT CONFIG TOOL调查问卷

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

                          • can
                            23
                            demo
                            20
                            uds
                            13
                            lin stack
                            12
                            md14
                            6
                            fbl
                            5
                            yt-link
                            5
                            adc模块
                            4
                            Online Users
                            ZOUYIWENZ
                            ZOUYIWEN
                            • 登录

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