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

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
1 帖子 1 发布者 25 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

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

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

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