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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. YTM32B1ME0 SPI Slave DMA 是否支持连续双缓冲或 Ram Reload?

YTM32B1ME0 SPI Slave DMA 是否支持连续双缓冲或 Ram Reload?

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

    使用环境:

    • MCU:YTM32B1ME0
    • SDK:1.4.1
    • SPI3 Slave,Mode 0,8-bit
    • DMA:TX Channel 0、RX Channel 1
    • Master 时钟约 8 MHz
    • 每次 CS 完成固定 512 Byte 全双工传输,Master 可能连续发起下一帧

    目前使用 SPI_DRV_SlaveTransfer()。查看 SDK 实现发现,RX DMA 完成后,SPI_DRV_SlaveCompleteDMATransfer() 会先调用 SPI_DRV_SlaveAbortTransfer(),然后才调用应用层的 SPI_EVENT_END_TRANSFER 回调。应用在回调中再次调用 SPI_DRV_SlaveTransfer() 装载下一组 TX/RX buffer。

    这样在相邻两个 CS transaction 之间会有一段 Slave DMA 未装载的窗口。长时间连续通信时,Master 偶发收到整帧 0xFF;如果 Master 等待 MCU 重新装载完成后再发下一帧,则不会出现。

    想请教:

    1. YTM32B1ME0 的 SPI Slave DMA 是否有官方 continuous、ping-pong、double-buffer、queue 或 descriptor ram-reload 接口,使当前帧结束后自动切换到下一组 TX/RX buffer,中间不 Abort、不关闭 DMA、不清 FIFO?
    2. 通用 DMA 驱动已有 DMA_DRV_ConfigRamReloadTransfer(),是否有与 SPI Slave 正式集成的官方 Demo、SDK补丁或推荐配置?应用层不希望绕过 SPI Driver 直接操作 DMA/SPI 寄存器。
    3. 如果当前 SDK 不支持连续 Slave DMA,官方推荐的用法是否是增加一根 READY GPIO:Slave 完成后先 deassert READY,在任务上下文重新调用 SPI_DRV_SlaveTransfer(),成功后再 assert READY,Master 每一帧发送前都等待 READY?
    4. SPI Slave 的 SPI_EVENT_END_TRANSFER 回调运行在 DMA ISR 上下文。是否允许在该回调中立即再次调用 SPI_DRV_SlaveTransfer()?如果不允许,建议的最小安全重装流程是什么?

    希望能提供适用于 YTM32B1ME0 SDK 1.4.1 的官方接口名称、示例或补丁,谢谢。

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

      不好意思才看到问题,也不知道你有没有解决。
      1,对于从机,可以在DMA的发送搬运完成中断回调里重新装载好下一次的发送,这样能保证主机在长时间连续通信的时从机发送不出现underflow的情况。操作可参考主机连续发送的例程,从机的配置也是一样的:
      https://forum.ytmicro.com/topic/1943/spi时钟线连续输出?_=1790230365342
      2,可以用DMA_DRV_ConfigRamReloadTransfer,也可以用上面文章推荐的接口,建议Slave的DMA重装载操作尽量精简,保证下一次时钟到来之前装载完成;
      3,可以应用层加一个READY IO,在Slave 的完成回调里去更新READY IO的状态,指示主机等待还是发送。
      4,不允许。

      1 条回复 最后回复
      0

    • 云途开发生态介绍

      快速上手云途开发生态

    • 云途论坛规则/Yuntu Forum Rules

      发帖前请查看

    • YT CONFIG TOOL调查问卷

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

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

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