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.

[参考译文] TMS320F28388D:同步 SPI 模块以进行同步传输

Guru**** 2601915 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1067644/tms320f28388d-synchronize-spi-module-for-simulataneous-transmit

部件号:TMS320F28388D

大家好!

正如我提到的,我们希望同时启动所有4个 SPI 模块以发送数据。 或者至少有2个(如果所有这些都不可能)。 因此,我检查 CLB 单元以形成一个组合逻辑电路,从而同时启动 SPI 传输。 但我不确定是否有可能。 我检查了 SPI 相关的 CLB 输出,但没有在列表中获得进出的含义。

总之,我可以同步所有 SPI 数据传输吗?  

谢谢,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,我不确定您要完成的任务与屏幕截图中的信号相关。 这些是您可以使用 CLB 覆盖的信号。 例如,如果您想用 CLB 生成波形而不是 SPI 模块的输出信号,并替换这些信号,则可以使用这些信号。

    就你的案例而言,我一直在考虑所有交易,我只能想出一种可行的方法。

    这方面的情况如何?

    设置两个不同的 DMA 以写入两个不同的 SPI TX 模块。 让它们都由相同的信号源触发,可能是 INT,ePWM 或您可以生成的其它信号源。

    当触发器到达时,两个 DMA 应同时向相应的 SPI 模块写入数据,这将触发传输。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,尼玛!

    他/您将为您的取出和答案提供帮助。 我只是没有得到信号名称旁边(输入)和(输出)的确切含义。 例如,SPISTE(OUT)和 SPISTE(in)之间有何区别?

    对于我的问题,实际上我将使用带有 DMA 的 SPI 来连续发送数据,而无需 CPU 交互。 我将一起启动它们一次,它们将同步发送数据。 但是,哪个信号可以同时启动它们?

    谢谢,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果 SPI 模块处于主模式,则 SPISTE OUT 表示您正在替换尽管信号发送,并且计划通过 CLB 创建此输出信号。

    In 表示 您正在使用 CLB 输出创建送入从属 SPI 模块的 SPISTE 信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    DMA 的触发器可以是两个 DMA 的相同信号。 您可以查看 TRM 中所有可用的 DMA 触发器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我明白了您的意思,但在我的应用程序中,每个 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);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以对所有 DMA 使用相同的 DMA 触发器。 使用相同的信号触发所有这些信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢。 我要试试。