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.

[参考译文] TMS570LC4357:在多缓冲模式下通过 SPI 进行数据接收

Guru**** 2470760 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1068225/tms570lc4357-data-reception-over-spi-in-multibuffered-mode

部件号:TMS570LC4357

大家好,团队

对于 TMS570LC4357控制器上的应用,我们有外部主设备,该主设备连接在 MiBSPI1外设上,该设备 以10MHz 的波特率通信,Hercules 处理器以从模式运行。 外部设备应发送连续 音频流(1个正弦周期=320个单词;1个单词=2个字节=16位),其中处理器将数据采样为,在前 半周期中为160个单词,然后在下一周期中为160个单词。  

为了达到这一要求,我们希望有两个独立的缓冲区,如平峰,每个缓冲区保留160个字,其中第一 个缓冲区在收到前160个字后触发另一个字。  根据该手册,我们可以在多缓冲模式下使用 SPI,其中 TG0和 TG1将分别容纳160个单词。 在这里,我们想了解在 TG0上收到数据后,我们可以使用哪种机制来触发 TG1,两者之间不会缺少任何字节。

此致,
Shivam

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

    希万,你好!

    当 MibSPI 以多缓冲从模式运行时,它使用芯片选择引脚生成相应 TG 的触发器。 例如,将 CS0=LOW 触发 TG0,将 CS0=HIGH 触发器 TG1。

    在从属模式下,只有 SPISCS 引脚可以触发传输组。 切屑选择触发器作为电平敏感触发器运行。  

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

    您好,王

    感谢您的快速响应。
    因此,在多缓冲从模式下,当 TG0和 TG1分别配置为长度160且两个 TG 均配置为 OneShot Transfer,TRG_Always 和 TRG_disabled 时,我们是否能够在外部主中继器传输时连续接收数据? 此外,如果我们要通过配置 TGITENST 的 SETINTENRDY 字段来启用 TG0上的传输组完全中断,那么我们是否希望在从外部设备接收到160个字后获得中断?

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

    PRST 字段应清除为0

    [引用 userid="484499" url="~ë/support/moncs/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1068225/tms570lc4357-data-reception-over-spi-in 多缓冲模式/3953316#3953316"]TRG_Always 禁用并禁用]

    在从属模式下 ,序列发生器不会考虑触发源和触发事件。 在从属模式下,PRST  字段应清除为0。

    [引用 userid="484499" url="~ë/support/icls/arm-based icler-group/arm-based icls/f/arm-mil控制 器-forum/1068225/tmsINT570lc4357-data-receptive-over-spi-in multibast缓冲 模式/RD3953316#3953316"],如果我们希望在接收到设备上的外部中断字段后,通过在设备上配置该字段并从该字段进行转换,我们是否希望在该字段中启用该字段的外部中断[

    是的,你是对的。 如果同时使用 TG0和 TG1,则如果 CS0 = 0,数据将写入 TG0;如果 CS0 = 1,则写入 TG1。

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

    在这里有点困惑。 当您提到 CS0时,这是否意味着芯片选择? 如果是,那么通常,如果我们还想使用 tg3,那么将如何触发 tg3,因为0和1分别用于 CS0和 CS1。 实际上,我的印象是,将根据为每个组配置的长度和 LTGPEND 值为传输组提供控制。 请帮助我理解这一点。

    在我们的应用程序中,“从属”连接到 CS1,通过将 CS1拉低,主中继器的实际数据将持续接收。 我们想将 PCURRENT0配置为0,将 PCURRENT1配置为160,用于 TGxCTRL 寄存器,其中,LTGPEND 的 LPEND 字段注册为(320-1)。 要实现 TG0包含160个单词并生成 TG0的传输完成中断,然后处理 TG1中的下一个160个单词;是否无法使用此方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="484499" url="~ë/support/moncs/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1068225/tms570lc4357 - data-reception-over-over-SPI-in 多缓冲模式/CS3954788#3954788",如果您提到,报价是什么?]

    是,芯片选择0

    [引用 userid="484499" url="~ë/support/moncs/arm-based monic-group/arm-based monics/f/arm-based monicroms-forum/1068225/tms570lc4357 - data-receptive-over-spi-in 多缓冲模式/3954788#3954788"],如果我们希望分别将它们用于 CS0和 CS1,那么将被触发。 [/引用]

    对于 tg3,应使用2个芯片选择。

    如果您只使用一个 TG,则可以使用任何芯片选择来触发 TG。 如果您使用的是1个以上的 TG,则需要使用编码和解码芯片选择。 请参阅 设备 TRM 的28.2.6.7

    TGxCTRL 寄存器的 PCURRENT 用于配置缓冲区指针。  

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

    您好,王
    正如前面提到的,我们的应用程序中只将 CS1连接到外部主机上,只是想根据您之前的帖子进行澄清。 因此,如果主中继 器将 CS1拉至低位,然后传输160个单词,TG0(0000)将被触发,并且它将这些160个单词存储在 MiBSPI1 RAM 中,当主中继器将 CS1拉至高位时,再传输160个单词,TG2 (0010)将被触发。

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

    您好,王  

    我们尝试根据要求配置 CS, 但是,收到的第一个字(2个字节)正在 存储在 SPIBUF 中,但不存储在 MIBSPI RAM 中,希望了解此处出现的问题,即使我们正在启用传输组。请在此处找到所附的图像。




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

    Shivam 您好,

    您的理解不正确。 请参阅 TRM 多缓冲配置中的28.2.6.7 MibSPI 从

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

    接收到的数据被放置在 RX_RAM 和 RFBUF 中