大家好!
正如我提到的,我们希望同时启动所有4个 SPI 模块以发送数据。 或者至少有2个(如果所有这些都不可能)。 因此,我检查 CLB 单元以形成一个组合逻辑电路,从而同时启动 SPI 传输。 但我不确定是否有可能。 我检查了 SPI 相关的 CLB 输出,但没有在列表中获得进出的含义。
总之,我可以同步所有 SPI 数据传输吗?
谢谢,
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.
大家好!
正如我提到的,我们希望同时启动所有4个 SPI 模块以发送数据。 或者至少有2个(如果所有这些都不可能)。 因此,我检查 CLB 单元以形成一个组合逻辑电路,从而同时启动 SPI 传输。 但我不确定是否有可能。 我检查了 SPI 相关的 CLB 输出,但没有在列表中获得进出的含义。
总之,我可以同步所有 SPI 数据传输吗?
谢谢,
是的,我不确定您要完成的任务与屏幕截图中的信号相关。 这些是您可以使用 CLB 覆盖的信号。 例如,如果您想用 CLB 生成波形而不是 SPI 模块的输出信号,并替换这些信号,则可以使用这些信号。
就你的案例而言,我一直在考虑所有交易,我只能想出一种可行的方法。
这方面的情况如何?
设置两个不同的 DMA 以写入两个不同的 SPI TX 模块。 让它们都由相同的信号源触发,可能是 INT,ePWM 或您可以生成的其它信号源。
当触发器到达时,两个 DMA 应同时向相应的 SPI 模块写入数据,这将触发传输。
我明白了您的意思,但在我的应用程序中,每个 DMA 通道的触发器将是其专用 SPI 模块的 TX 事件。 如下所示。
SPIA_TX -> DMA-1
SPIB_TX -> DMA2.
spic_TX -> DMA3
SPID_TX -> DMA4.
它们将在后台持续工作,而无需 CPU 交互。 您的意思是我可以使用一个 SPI 来触发所有4个 DMA 通道吗?
DMA_configAddresses(DMA_CH5_BASE, (uint16_t *)(SPIA_BASE + SPI_O_TXBUF),
&dummy_data);
DMA_configBurst(DMA_CH5_BASE, BURST, 0, 0);
DMA_configTransfer(DMA_CH5_BASE, TRANSFER, 0, 0);
DMA_configMode(DMA_CH5_BASE, DMA_TRIGGER_SPIATX, DMA_CFG_ONESHOT_DISABLE |
DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT);