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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. SPI通信,数据发送完成,但状态一直处于BUSY状态

SPI通信,数据发送完成,但状态一直处于BUSY状态

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

    上电初始化SPI,DMA,后,在初始化函数中继续使用SPI_DRV_MasterTransfer发送数据,数据发送成功,且可以使用逻辑分析仪抓取到数据,但是在SPI_DRV_MasterGetTransferStatus函数判断中一直处理BUSY状态。把SPI发送放到TASK中执行,就一切正常,SPI_DRV_MasterGetTransferStatus函数判断为SUCCESS状态,数据也正常。

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

      由于上电需要使用SPI初始化外部设备模块,所以请帮忙分析下原因,在云途的demo程序中是正常的,已进行过配置对比,修改后也一直不行。

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

        20241205-192434.jpg 20241205-192447.jpg 20241205-192453.jpg 20241205-192459.jpg

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

          SPI_DRV_MasterTransfer() 会在中断中更新SPI busy的状态。
          检查一下是否关了全局中断。

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

            全局中断开了的,而且在Task中执行SPI读写就是正常的

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

              用的是freertos吗?Freertos在调用vTaskStartScheduler()之前,全局中断可能会被关掉的。请再次检查一下全局中断(可以直接看内核寄存器:priMask,baseMask)
              https://github.com/FreeRTOS/FreeRTOS-Kernel/issues/254

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

                用的是Freertos,我在初始化的时候,有手动打开全局中断,这样的话可以排除这个问题吗?
                1.jpg 2.jpg

                1 条回复 最后回复
                0
                • runR 离线
                  runR 离线
                  run YunTu
                  写于 最后由 编辑
                  #8

                  不能排除,freertos可能用的是baseMask(看portDISABLE_INTERRUPTS()实现)
                  可以调用portENABLE_INTERRUPTS() 来打开全局中断。
                  最好还是通过看寄存器方式来排除。

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

                    portENABLE_INTERRUPTS() ;我在发送SPI之前加上了这个函数调用就OK了,那应该是这个问题了;请问下这个问题有什么优化的办法吗?还是说必须在portENABLE_INTERRUPTS() 调用之后才能发送SPI数据?

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

                      用freeRTOS,所有的外设中断不能为0

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

                        这里的外设中断,指的是中断优先级吗?

                        1 条回复 最后回复
                        0

                      • 云途论坛规则/Yuntu Forum Rules

                        发帖前请查看

                      • YCT离线License申请流程

                        帮助没办法联网的电脑使用YCT

                      • YT CONFIG TOOL调查问卷

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

                      • demo
                        12
                        can
                        9
                        lin stack
                        6
                        yt-link
                        5
                        vscode
                        3
                        adc模块
                        2
                        i2c
                        2
                        uuid
                        2
                        Online Users
                        • 登录

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