我正在尝试使用 DMA 从外部 DAC 读取数据。
每个读取的数据都需要为32位、我需要读取至少100 (有时大于100)个字(32位)
每30 μ s 应在 PWM 脉冲的上升沿启动每次读取。 我已经对其进行了设置、所有信号都存在、然后我将向 DMA 缓冲区中写入适量的数据。
问题在于、当我的 ADC 不提供数据时、读取请求脉冲之间存在 SPI 时钟。 这会导致我的缓冲器大多填充为0。
如何告知 SPI 时钟 在 PWM 脉冲后仅在32位时存在?
下面是显示该问题的逻辑布线。 
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在尝试使用 DMA 从外部 DAC 读取数据。
每个读取的数据都需要为32位、我需要读取至少100 (有时大于100)个字(32位)
每30 μ s 应在 PWM 脉冲的上升沿启动每次读取。 我已经对其进行了设置、所有信号都存在、然后我将向 DMA 缓冲区中写入适量的数据。
问题在于、当我的 ADC 不提供数据时、读取请求脉冲之间存在 SPI 时钟。 这会导致我的缓冲器大多填充为0。
如何告知 SPI 时钟 在 PWM 脉冲后仅在32位时存在?
下面是显示该问题的逻辑布线。 
尊敬的 Kobi:
感谢您的答复!
我想您不会遗漏任何东西。
是的、根据100个 PWM 脉冲的 PWM 脉冲、每30us 一个32b 字。
不确定在没有 CPU 交互的情况下可以实现哪些目标。
//创建事务对象
SPI_Transaction 传输;
transaction.count =长度;
transaction.txBuf = NULL;
transaction.rxBuf =数据;
手册中说明我可以执行与我需要的操作非常相似的操作: 我只需要设置我认为的突发尺寸。
9.3.3 DMA 操作
每个定时器都有一个专用的 μ µDMA 通道、并且可以向 μ µDMA 控制器提供一个请求信号。 脉冲
请求由一个定时器使用它自己的 dma_req 信号来生成。 µDMA μ DMA 提供 dma_done 信号
对每个计时器、以指示传输完成并在 GPTM Raw 中触发 µDMA 完成中断(DMAnRIS)
中断状态寄存器(GPTMRIS)寄存器。 该请求是突发类型的、每当计时器原始
中断条件发生。 μ µDMA 传输的仲裁数目应与需要传输的数据单元数相同
发生计时器事件时应传输 I2C 数据。
例如、要每10ms 传输256个项目、或者一次传输8个项目、配置一个定时器来产生一个周期性的
10ms 超时。 配置 μ µDMA 传输总量为256个项目、每次突发传送8个项目。 每次
该定时器超时、μ µDMA 控制器传输8个项目、直到所有256个项目传输完毕。
GPTM DMA 事件(GPTMDMAEV)寄存器启用可导致 dma_req 信号的事件类型
由计时器模块断言。 应用软件可以使用 GPTMDMAEV 寄存器为每个计时器的匹配、捕获或超时事件启用 dma_req 触发。 对于单个计时器、所有活动计时器触发事件
通过 GPTMDMAEV 寄存器启用的 DMA 一起进行"或"运算、以创建单个 dma_req 脉冲
并发送到 μ µDMA。 当 μ µDMA 传输完成时、DMA_DONE 信号会发送到定时器。
从而使 GPTMRIS 寄存器的 DMAnRIS 位置位。