主题中讨论的其他器件:MSP432P401R
我设置了一个 PWM 中断(PWM 刚刚用于计时) 来执行虚拟 SSI 写入、该写入会执行整个 SSI 事务、从而使我从 FIFO 中的从器件进行的读取可用。 我正在尝试使它尽可能快。
我正在尝试尽可能缩短这段总 ISR 时间(中断延迟+ SSI 写入+ SSI 等待+ SSI 读取)、并且尝试使用 DMA 完全删除 SSI 等待和 SSI 读取、只是在下一个 ISR 开始时抓取之前的读取。 我使用 HWREG 读取/写入简化了 ISR 处理代码和 SSI 处理代码、以避免开销调用驱动程序函数、但似乎找不到与 DMA 等效的代码。
如果我执行以下操作、它将起作用:
MAP_uDMAChannelTransferSet (UDMA_CH12_SSI2RX | UDMA_PRI_SELECT、 UDMA_MODE_BASIC、 (void *)(&SSI2->DR)、 Receive_data、3); MAP_uDMAChannelEnable (UDMA_CH12_SSI2RX);
但我似乎找不到 HWREG 等效运算。 我看到 ChannelTransferSet 和 ChannelEnable make 的唯一更改是控制表中的单字节、因此是 UDMA_ENASET。 如果我尝试将单字节写入控制表并设置使能位、它将不会继续运行。
DMA 中是否缺少其他内容? 可能是对控制表的完全写入、还是对 DMA 本身进行某种控制表传输? 我在这两个驱动程序调用中看不到任何暗示这一点的东西。
谢谢!