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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT MCAL
  4. ME0的SPI作为从机,接收数据出现异常

ME0的SPI作为从机,接收数据出现异常

已定时 已固定 已锁定 已移动 YT MCAL
12 帖子 2 发布者 337 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • EkkoE 离线
    EkkoE 离线
    Ekko
    写于 最后由 编辑
    #1

    配置:MCU从机配置DMA模式,Channel配置为EB类型,位宽8位,数据缓冲区为256,主机频率为13M。
    问题描述:当从机接收时,主机发送N字节后,CS,SCK突然拉高,若干us后,继续发送(256-N)剩余字节,此现象可能在256字节中发送中发生多次。发现主机在中途拉高CS,SCK后会导致从机无法接收完成,且无法恢复,产生此原因可能为硬件异常?另外有办法可以在产生异常后接收剩余字节吗?直到满256字节。

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

      1.按照你的描述,主机应该配置的是Pcs continue 模式,如果通信过程中出现PCS被拉起,属于主机方没有遵循通信协议导致的通信失败。
      2. 我无法判断pcs中途被拉高是否是主机侧的硬件问题导致的。slave不会拉pcs引脚。
      3. MCAL spi不支持接收不定长的数据

      EkkoE 2 条回复 最后回复
      0
      • EkkoE 离线
        EkkoE 离线
        Ekko
        在 回复了 Frank 最后由 编辑
        #3

        Frank 能确定是主机拉高

        1 条回复 最后回复
        0
        • EkkoE 离线
          EkkoE 离线
          Ekko
          在 回复了 Frank 最后由 编辑
          #4

          Frank 假设这种情况无法避免,那么从机如何从异常中恢复呢,能确保下一次能正常通信

          FrankF 1 条回复 最后回复
          0
          • FrankF 离线
            FrankF 离线
            Frank YunTu
            在 回复了 Ekko 最后由 编辑
            #5

            Ekko 如果能够保证master发送的数据数量跟slave需要接收的数量一致就可以(中间master即使pcs拉高也OK)。因为DMA会一直等待搬移的数据直到完成。因此不需要slave做额外的事情。

            EkkoE 2 条回复 最后回复
            0
            • EkkoE 离线
              EkkoE 离线
              Ekko
              在 回复了 Frank 最后由 编辑
              #6

              Frank 好的 感谢回复

              1 条回复 最后回复
              0
              • EkkoE 离线
                EkkoE 离线
                Ekko
                在 回复了 Frank 最后由 编辑
                #7

                Frank 这种自恢复的需要取决master保证数据完整,客户担心master出现一次数据不完整后,后续取到的数据都会错位,所以还是需要一个手动恢复的策略,现在有调用Spi_Cancel(),但是会偶发出现hard fault(DMA传输过程中,关掉DMA会导致hard fault?),所以有更加简洁高效的方式吗?

                FrankF 1 条回复 最后回复
                0
                • FrankF 离线
                  FrankF 离线
                  Frank YunTu
                  在 回复了 Ekko 最后由 编辑
                  #8

                  Ekko 调用Spi_Cancel关闭传输不会导致导致Hardfault。你可以在hardfault出现时,看下是什么原因导致的hardfault。

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

                    Frank 现在查看堆栈,最后是从Disable DMA跳至hard fault,查看DMA寄存器并没有错误标志位。现在明确就是加了Spi_Cancel,就会出现hard fault,不加是不会出现的。
                    a7e873b6-3aa9-4076-984a-dc1f34faf779-77469c1ed71c03f0b9eda6c1631a08d.jpg
                    47354b50-0728-46f1-aa73-9aee9c3fb965-8bfa93ce08d4633527decb782927abc.jpg
                    17dda825-180e-45d0-ac68-f8af9aa990e1-a54112abd7ba573e406d66c22cd60c2.jpg

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

                      image.png
                      看样子是发生非法地址访问了。你用的是那个版本的驱动?

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

                        jianpeng.zhao@ytmicro.com 这是我的邮箱,如果方便的话,你可以发个腾讯会议的链接,我远程帮你看下

                        EkkoE 1 条回复 最后回复
                        0
                        • EkkoE 离线
                          EkkoE 离线
                          Ekko
                          在 回复了 Frank 最后由 编辑
                          #12

                          Frank 目前又修改了中断优先级,还在挂测,如果还复现我再邮件发送🤝

                          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
                          HSASKH
                          HSASK
                          • 登录

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