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.

[参考译文] CC1352P7:如何使用 SSI 和 DMA

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1492126/cc1352p7-how-to-use-ssi-and-dma

器件型号:CC1352P7

工具与软件:

您好、TI:

在我的项目中、我使用了 SSI、但编写代码的人已经离开了、我在官方 SDK 中找不到这些代码的任何示例、例如:(HWREG (hwAttrs->baseAddr + SSI_O_SR)和 SSI_SR_TNF)。 因此、我不清楚如何使用 SSI 以及如何将 SSI 与 DMA 结合使用。 现在我需要优化 SSI 上芯片的时间消耗。 您能否提供更详细的材料、文档或示例?

谢谢。

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

    您好、Yi

    SDK 中的 SPI/SSI 驱动程序已使用 DMA 来进行10字节以上的传输。

    下面是代码示例: 控制器

    如果您要更新自己的驱动程序、还请查看我们在 SDK 中的实现: SPICC26X2DMA.h

    此致、

    Arthur

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

    您好、Arthur:

    为什么用于数据传输的 SPI 驱动程序库中的库函数 SPI_TRANSFER 花费如此长的时间?

    我有两段实现相同功能的代码。

    第一个是调用库函数 SPI_TRANSFER、如下所示:

    示波器显示的波形如下所示:

    黄色的图形代表中断信号。 当它被拉至低电平时、SPI 读取/写入操作开始。 另一种颜色表示 SPI 上的时钟信号。

    在 SPI 时钟上有许多分散的6字节信号。 每个6字节序列之间的时间间隔约为27微秒。

    第二个代码就是这样的。

    示波器显示的波形如下所示:

    下面是我的 SPI 的配置。

    总之、当执行同一任务时、使用库函数 SPI_TRANSFER 比直接读取和写入寄存器需要花费更长的时间、而且在 SPI 时钟上存在许多奇怪的信号。 这是什么原因呢? 是否有任何方法比直接读取和写入寄存器所需的时间更短?

    此外、我还尝试将最小 DMA 传输大小的值更改为1。 总时间消耗仍然相当长、但每个字节之间的时间间隔变得更短。 这表明 DMA 的配置必须已经生效。

    谢谢

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

    我非常感谢您的回答,当你有一个时间。

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

    您好、

    这是非常奇怪的,因为你应该能一次传输整个512块。 使用 SPI.h 驱动程序将使您能够在应用程序中完全实现电源管理(由 Power.h 处理)、因此使用它非常重要。

    此 headerLength + readLength 块的值是什么?

    在您的代码中定义了 SPI_OPEN 在哪里? 我看到它在这里添加了注释:

    此致、d.

    Arthur

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

    你(们)好

    每次调用它时、headerLength 和 readLength 的总和不应超过30。 使用 SPI 时已经调用了 SPI_open 函数、速率为12,000,000。

    谢谢

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

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

    您好、Yi  

    我曾想、您是否尝试在中断上下文中使用 SPI_TRANSFER 调用?  

    此外、请注意 CC1352P7不支持12 MHz SPI 时钟速率:



    此处、请查看随附的一个 Code Composer Studio 项目、它在4 MHz 下每秒传输30个字节。

     e2e.ti.com/.../spi_5F00_example_5F00_cc1352p7.zip

    此致、

    Arthur

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

    您好、Arthur:

    我们不在中断内调用、而是触发一个中断来触发一个信标、然后在一个线程内进行调用。

    但在检查 CC1352P7的功能时、说明它可以支持12 MHz。 CLK 测量还显示它与12 MHz 一致。 一个字节的时间消耗约为666ns。 因为一位需要1/12us、8位是2/3、即666ns。

    此致、

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

    您好、

    感谢您提供的数据。

    该备注很可能包括 CC1354、它最高可支持12 MHz。
    在 CC1352P7的数据表(https://www.ti.com/lit/ds/symlink/cc1352p7.pdf)中、我们指定了4 MHz 支持的最大时钟速度。

    您评估了我发送给您的 Code Composer Studio 项目了吗?

    此致、

    Arthur