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.

[参考译文] LAUNCHXL-CC1350:将 Crypto 项目与 SPI 通信集成时出现问题

Guru**** 2578945 points
Other Parts Discussed in Thread: CC1350

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/904161/launchxl-cc1350-problem-in-integrating-crypto-project-with-spi-communication

器件型号:LAUNCHXL-CC1350
主题中讨论的其他器件:CC1350

我有一个项目希望保护两个 CC1350板之间 SPI 通信中的数据交换、因此我将 Crypto 项目和 SPI 项目集成在一起、但发生了几个错误、并在成功接收两次后导致通信失败

代码流:

1.我加密数据  

2. while 循环等待加密成功完成

3.为 SPI 的 Rx 通道运行 DMA

4.为 SPI 的 Tx 通道运行 DMA

-->两次成功的接收后,主设备中用于 Rx 和 Tx 的 DMA 状态返回零,但在从设备中,用于 Rx 和 Tx 的 DMA 状态在 两次成功的接收后仍为1

问题:

一起使用加密模块和 SPI 时可能会出现什么错误?
加密模块和 SPI 都使用 DMA、但根据我从数据表中了解到的情况、两者都有不同的 DMA 可处理和交互? 那么、在将 SPI 和加密模块一起工作时、DMA 是否重叠或预计会导致问题?

P.S.

在我单独测试加密项目时、加密项目工作正常、数据已正确加密和解密  

2. SPI 工程在我单独测试时工作正常、数据已正确发送和接收

3.当我从 从主板的 CRYPTOAesCbc 函数中注释出 DMA 部分时、通信返回成功、一切正常、并且在主板中 、CRYPTOAesCbc 函数的 DMA 部分不会导致 SPI 通信出现问题

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

    是否在打开 SPI 驱动程序之前关闭加密驱动程序?

    Siri

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

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

    然后尝试将其关闭

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

    这将如何产生影响?

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

    此外、您是否意味着在使用 PCRM 函数加密数据后禁用整个模块?

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

    通常、在使用完驱动程序后、您将关闭该驱动程序。

    CryptoCC26XX_open ()

    CryptoCC26XX_CLOSE ()

    Siri

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

    我不使用这些函数、而是使用 driverlib。 那么、如何使用 driverlib 函数关闭加密模块呢?

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

    如果不使用驱动程序,则无法关闭驱动程序:-)

    我们强烈建议您使用驱动程序、这正是我们支持的。 如果您出于某种原因选择不使用驱动程序、而是自行实现所有功能、我只能建议您查看我们的驱动程序实现、并将其用作参考。

    很抱歉,我没有更多帮助。

    BR

    Siri

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

    我看了实现、当我尝试禁用 PCRM 时、关闭函数会禁用 PCRM、并禁用加密模块的 PCRM、然后初始化并打开 SPI 驱动程序、出现了相同的问题。 因此、关闭加密模块不是解决方案

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

    无论如何、我强烈建议您使用我们的驱动程序。 您为什么不想使用它们? 如果您使用它们、并且遇到问题、您可以向我们发送一些代码、这些代码将重现 LP 上的问题、我们可以帮助您尝试了解 正在发生的情况。

    BR

    Siri

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

    我修改了加密项目以使用您的驱动程序、并按照您的要求执行了操作。 现在案例已更改:

    我在传输前加密数据、因此每次传输时首先加密数据。 当我尝试您在加密数据后关闭加密驱动程序的建议时、会出现 POST 中提到的相同问题。 但是、当我只加密一次并将标志设置为不再加密或加密一次时、SPI 通信就可以正常工作、而不会出现任何问题。  

    出现错误的流程:

    初始化 SPI  
    初始化 DMA
    while (1)

    打开加密
    加密
    关闭加密

    传输

    接收


    没有错误的流程:

    初始化 SPI
    初始化 DMA
    打开加密
    加密
    关闭加密
    while (1)

    传输

    接收

    我需要在传输前加密数据

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

    您好、Nada、

    您能否提供一个代码示例、准确地显示您在做什么? Crypto DMA 不应与 SPI DMA 相关、但在您的案例中可能出现的问题很难说、因为您没有:

    1) 1)提供显示您所做操作的任何代码
    2) 2)请勿使用我们的驱动程序、这意味着我们无法假设您是如何设置所有内容的。