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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1ME05 SPI 做从机不触发中断回调

YTM32B1ME05 SPI 做从机不触发中断回调

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

    SPI做从机,APP中13M可以正常通讯。Boot中主机速率3M时可以正常接收,主机速率13M时出现正常通讯几包后,SPI的接收Buff里已经有正确的数据,但是不触发中断回调。使用Spi_GetStatus获取状态处于Busy状态。请问是什么原因?90a952a9-0d82-4492-8289-d8d3a665b8e3-image.png

    1 条回复 最后回复
    0
    • WangPeiyingW 离线
      WangPeiyingW 离线
      WangPeiying
      在 回复了 xianghan 最后由 编辑
      #21

      xianghan IWDG没有初始化,在while循环中连续调用 Wdg_180_Inst0_Service 函数会影响SPI 接收吗?初始化IWDG就可以,还是不能这么操作?

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

        APP和Boot 中MCU的时钟配置是相同的吗?APP和Boot中使用spi通信时最大的区别是什么

        WangPeiyingW 1 条回复 最后回复
        0
        • WangPeiyingW 离线
          WangPeiyingW 离线
          WangPeiying
          在 回复了 Frank 最后由 编辑
          #3

          Frank 时钟配置是相同的,差异是APP中有系统,Boot中没有,相关的逻辑都是一样,TaskDealy 我使用中断来做。SPI使用DMA来传输,我测试发现正常时可以进SPI2_IRQHandler中断,我填充的发送Buff里都是0,抓取波形MISO保持低电平。异常时不能进入此中断,抓取波形,主机发的时钟数是够的,但是MISO出现1个字节或多个字节的FF。

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

            出现问题时,STS 寄存器有错误标志吗?

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

              有的
              image.png

              1 条回复 最后回复
              0
              • WangPeiyingW 离线
                WangPeiyingW 离线
                WangPeiying
                在 回复了 Frank 最后由 编辑
                #6

                Frank 提示RX Fifo为空,TX Fifo 中的数据小于预设值,是因为已经完成了最后一次接收,数据已经收到了,所以寄存器是这样吗?接收Buff里有正确的数据,但是不进中断。

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

                  这个是正常的,看下DMA的状态呢?

                  WangPeiyingW 2 条回复 最后回复
                  0
                  • WangPeiyingW 离线
                    WangPeiyingW 离线
                    WangPeiying
                    在 回复了 Frank 最后由 编辑
                    #8

                    Frank bc5016df-0d37-42dc-9fb5-f71bf5fab533-image.png

                    1 条回复 最后回复
                    0
                    • WangPeiyingW 离线
                      WangPeiyingW 离线
                      WangPeiying
                      在 回复了 Frank 最后由 编辑
                      #9

                      Frank 我配置的通道0 和 通道1,应该关注哪个寄存器?
                      db79e8fe-bd01-4be8-a6f5-69e27f10a07b-image.png

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

                        把 DMA 每个通道的CTS相关的寄存器截个图

                        WangPeiyingW 1 条回复 最后回复
                        0
                        • WangPeiyingW 离线
                          WangPeiyingW 离线
                          WangPeiying
                          在 回复了 Frank 最后由 编辑
                          #11

                          Frank 4387aa41-f3cf-466f-b319-30b3be5e9a6e-image.png 8d7fc152-ff5a-43bb-9854-c1451d1a9f7b-image.png

                          1 条回复 最后回复
                          0
                          • FrankF 离线
                            FrankF 离线
                            Frank YunTu
                            写于 最后由 编辑
                            #12

                            发送有问题,还有3个字节的数据没搬完。
                            请提供下BOOT中使用的:core clock, Fast Bus clock, Slow Bus Clock, SPI的外设时钟频率

                            WangPeiyingW 1 条回复 最后回复
                            1
                            • WangPeiyingW 离线
                              WangPeiyingW 离线
                              WangPeiying
                              在 回复了 Frank 最后由 WangPeiying 编辑
                              #13

                              麻烦看下,SPI时钟给的40M。115448ad-496d-46ce-9083-72e8022368e7-image.png f7fa35db-92e6-42f4-9e83-15ed821f63ef-image.png0326d6c0-46f3-4d05-a6a8-54d91ad72b60-image.png a6dd8077-2219-40bc-a342-89a67982206d-image.png

                              1 条回复 最后回复
                              0
                              • FrankF 离线
                                FrankF 离线
                                Frank YunTu
                                写于 最后由 编辑
                                #14

                                感觉跟信号质量有一定关系,用示波器抓波形看下

                                WangPeiyingW 1 条回复 最后回复
                                0
                                • WangPeiyingW 离线
                                  WangPeiyingW 离线
                                  WangPeiying
                                  在 回复了 Frank 最后由 编辑
                                  #15

                                  Frank 不是时序或者配置哪里有问题吗?因为APP是可以的,所以没用示波器抓,用逻辑分析仪抓了波形,在接收的时候,发送buff里面填的是0x00,但是看波形出现了1个字节的0xFF。

                                  1 条回复 最后回复
                                  0
                                  • FrankF 离线
                                    FrankF 离线
                                    Frank YunTu
                                    写于 最后由 编辑
                                    #16

                                    APP能正常使用,然后Boot跟APP使用相同的配置的话,说明你的配置没有问题。最大可能是Boot的一些应用在某些状态下影响到了SPI信号,导致信号失真。你可以试着逐渐降低下通信速率,找出出现该问题时通信速率的临界点。然后再结合你的应用来分析最可能影响SPI通信的因素是那个,再逐一排查。

                                    WangPeiyingW 1 条回复 最后回复
                                    0
                                    • WangPeiyingW 离线
                                      WangPeiyingW 离线
                                      WangPeiying
                                      在 回复了 Frank 最后由 编辑
                                      #17

                                      Frank 我测试在接收后加 while (Spi_GetSequenceResult( SpiConf_SpiSequence_Spi2SlaveSequence_1) != SPI_SEQ_OK); 可以正常接收,不卡就会出现失败。我仿真查看了不卡的后续运行,在while循环里,有些状态的检查和判断,没有其它的操作。有什么可能有影响吗?

                                      1 条回复 最后回复
                                      0
                                      • FrankF 离线
                                        FrankF 离线
                                        Frank YunTu
                                        写于 最后由 编辑
                                        #18

                                        加while等待Sequence完成,会block MCU不去执行其他的任务。你看下应用在执行过程中有修改port或gpio的操作吗。另外着重检查SPI master和slave之间通信线路上的电路状态是否有其他任务去改变或影响到。

                                        WangPeiyingW 1 条回复 最后回复
                                        0
                                        • WangPeiyingW 离线
                                          WangPeiyingW 离线
                                          WangPeiying
                                          在 回复了 Frank 最后由 编辑
                                          #19

                                          Frank 检查了下,没有port的操作,只有if else ,switch 这些状态的判断。我是在GPIO中断里使用 Spi_AsyncTransmit 函数,这个会有影响吗?

                                          1 条回复 最后回复
                                          0
                                          • xianghanX 离线
                                            xianghanX 离线
                                            xianghan YunTu
                                            写于 最后由 编辑
                                            #20

                                            有影响,不要在中断服务函数里面直接调用

                                            WangPeiyingW 2 条回复 最后回复
                                            0

                                          • 云途开发生态介绍

                                            快速上手云途开发生态

                                          • 云途论坛规则/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
                                            MonsterM
                                            Monster
                                            ludensL
                                            ludens
                                            ZOUYIWENZ
                                            ZOUYIWEN
                                            • 登录

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