<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[YTM32B1ME0 SPI Slave DMA 是否支持连续双缓冲或 Ram Reload？]]></title><description><![CDATA[<p dir="auto">使用环境：</p>
<ul>
<li>MCU：YTM32B1ME0</li>
<li>SDK：1.4.1</li>
<li>SPI3 Slave，Mode 0，8-bit</li>
<li>DMA：TX Channel 0、RX Channel 1</li>
<li>Master 时钟约 8 MHz</li>
<li>每次 CS 完成固定 512 Byte 全双工传输，Master 可能连续发起下一帧</li>
</ul>
<p dir="auto">目前使用 <code>SPI_DRV_SlaveTransfer()</code>。查看 SDK 实现发现，RX DMA 完成后，<code>SPI_DRV_SlaveCompleteDMATransfer()</code> 会先调用 <code>SPI_DRV_SlaveAbortTransfer()</code>，然后才调用应用层的 <code>SPI_EVENT_END_TRANSFER</code> 回调。应用在回调中再次调用 <code>SPI_DRV_SlaveTransfer()</code> 装载下一组 TX/RX buffer。</p>
<p dir="auto">这样在相邻两个 CS transaction 之间会有一段 Slave DMA 未装载的窗口。长时间连续通信时，Master 偶发收到整帧 <code>0xFF</code>；如果 Master 等待 MCU 重新装载完成后再发下一帧，则不会出现。</p>
<p dir="auto">想请教：</p>
<ol>
<li>YTM32B1ME0 的 SPI Slave DMA 是否有官方 continuous、ping-pong、double-buffer、queue 或 descriptor ram-reload 接口，使当前帧结束后自动切换到下一组 TX/RX buffer，中间不 Abort、不关闭 DMA、不清 FIFO？</li>
<li>通用 DMA 驱动已有 <code>DMA_DRV_ConfigRamReloadTransfer()</code>，是否有与 SPI Slave 正式集成的官方 Demo、SDK补丁或推荐配置？应用层不希望绕过 SPI Driver 直接操作 DMA/SPI 寄存器。</li>
<li>如果当前 SDK 不支持连续 Slave DMA，官方推荐的用法是否是增加一根 READY GPIO：Slave 完成后先 deassert READY，在任务上下文重新调用 <code>SPI_DRV_SlaveTransfer()</code>，成功后再 assert READY，Master 每一帧发送前都等待 READY？</li>
<li>SPI Slave 的 <code>SPI_EVENT_END_TRANSFER</code> 回调运行在 DMA ISR 上下文。是否允许在该回调中立即再次调用 <code>SPI_DRV_SlaveTransfer()</code>？如果不允许，建议的最小安全重装流程是什么？</li>
</ol>
<p dir="auto">希望能提供适用于 YTM32B1ME0 SDK 1.4.1 的官方接口名称、示例或补丁，谢谢。</p>
]]></description><link>https://forum.ytmicro.com/topic/2189/ytm32b1me0-spi-slave-dma-是否支持连续双缓冲或-ram-reload</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 19:08:56 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2189.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 14 Aug 2026 05:08:25 GMT</pubDate><ttl>60</ttl></channel></rss>