您好!
我发现自己处于一个难题中、开发一个可连接到多个 具有 SPI 接口的 RTC2344四路18位 ADC 的接口。
我的第一个想法是、这样做的理想方法是使用 DMA 通道来处理通信、而我可以在主 CPU1中执行其他操作。 我看到 了 Juan Gamba 的一篇文章,他在文章中举例说明了如何实现它,但是从我看到的情况来看,这些等待循环仍在主循环中发生,对使用 DMA 没有太大的意义,我对吗?
其次、我还意识到、对于 SPI、DMA 将传输数据大小限制为16位。 假设 ADC 能够以每通道18位+6位(配置)的方式传输所有四个通道的连续数据流、这意味着我们总共接收96位数据、我知道可以通过的接收通道中的6 16位突发来处理这些数据流、 但这对于后处理而言非常麻烦。 此外、我仍然不确定如何在 DMA 内高效处理来自从站。 有什么想法吗?
在另一个注意事项中、我还考虑仅使用实际的 SPI 模块和中断、这些模块和中断可配置为正确的位装(每个通道2x12位传输)。 不过、我对实际中断过程在这里是如何发生的非常不清楚。 我已经阅读了《技术参考手册》SPRUHM8I、但它不清楚在 FIFO 模式下在 SPI 中产生中断的原因。 (例如 、在 FIFO 模式下、当当前接收 FIFO 状态(RXFFST)与接收 FIFO 中断级别(RXFFIL)匹配时、SPI 可以中断 CPU。 如果 RXFFST 大于或等于 RXFFIL、则接收 FIFO 中断标志(RXFFINT)将被置位。 如果 RXFFINT 被置位并且接收 FIFO 中断被启用(RXFFIENA=1)、SPIRXINT 将在 PIE 块中被触发。)
对于 RX、SPI 模块是否会持续接收、直到它填满电压堆、然后这会生成一个中断来检查??
对 TX 提供了类似的说明、但在示例代码"Example_2837xDSpi_FFDLB_int.c"中、我看到数据已加载到 ISR 中的 SPITXBUF。 首先是什么生成中断?
最后、处理来自每个 SPI 从器件 ADC +多个从器件的几次信息突发的有效过程是什么?
此致、
Miguel