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.

[参考译文] CC2652R:延迟最小的 SPI 从驱动器

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1194415/cc2652r-spi-slave-driver-with-minimal-latency

器件型号:CC2652R

您好!

我正在尝试构建 SPI 从器件驱动程序、该驱动程序将接收和处理传入的 SPI 帧(1字节)、并准备新数据以在下一个 SPI 帧中进行应答(当 SPI 主器件生成下一个时)。

对于当前实现、我在 SPI_MODE_CALLACK 中使用 RTOS 线程和 SPI。  您可以在其中找到源代码。

我注意到 Hwi 和 swi 中有相当长的延迟。 反应和处理的总时间约为150us。 但是、对硬件事件的反应是30us 延迟的几倍。

我假设它来自 RTOS。

因此、问题非常广泛...

*在传输完成后(并避免 RTOS 的延迟)、是否有任何 SPI 从 DMA 接收直接 ISR 的示例?

*如何最大限度地缩短 SPI 从设备上的反应时间并将其与另一个执行无线电通信的线程结合使用。

谢谢、Ivan

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

    e2e.ti.com/.../Task_5F00_SPI_5F00_semaphore.c

    描述:

    * CS 上的 ISR、从 SPI 内部处理3引脚模式

    *在 RTOS 线程上以回调模式运行的 SPI

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

    通道4 - CS 从 SPI 主器件到信号开始和停止通信

    CH2 -用于处理3引脚模式并在每个字节后重新加载 SPI 的权变措施(当主器件信号启动时以及在每个帧之后都将 CS 置为有效)

    CH1 -时钟

    CH3 - MISO

    以下是 HWI 和 SWI 上~60us 延迟的示例。

    在 Ch4和 CH2之间、我们可以观察到大约60us 的恒定延迟。 OG 通道2的设置是从 Hwi 完成的。 理想情况下、该延迟将是我们的两个人

    在 CH1和 CH2上的尖峰之间、我们可以观察到 SPI 回调触发的时间(也为60us)。 CH2上的尖峰仅用于显示回调中的开始和结束处理时间。

    目标是最大限度地减少 Hwi 和 SW 上的延迟、从而减少通过 SPI 传输1字节所需的时间。

    如何实现这一点?

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

    您好、Ivan、

    您似乎已经为 spislave 示例提供了足够的资源、而 SPI TI 驱动程序已使用底层 SPICC26X2DMA.h 层。  主器件可以 连续发送多个字节、然后从器件就可以处理所有字节、而无需额外的延迟。  否则、您需要放弃 RTOS 并 直接使用 DriverLib、开发过程将更加复杂。

    此致、
    Ryan

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

    您好、Ryan、

    感谢您的回复。

    我分析了您的建议、这似乎是我正在寻找的最佳选择。

     是否有一些针对具有 DriverLib 的 SPI 从器件的公开可用示例

    谢谢、Ivan

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

    您好!

    我不知道有什么。

    我建议参考 SPI TI 驱动程序如何与 driverlib 进行交互。

    SPI TI 驱动程序源文件位于中 /source/ti/drivers/spi.

    谢谢、
    Toby