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**** 2610415 points
Other Parts Discussed in Thread: CC2652RB, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1567945/cc2652r-read-with-spi

器件型号:CC2652R
Thread 中讨论的其他器件: BLE-STACK

工具/软件:

您好的团队、

我们正在开发 BLE 应用、 以便与第三方设备连接来收集 NIBP 数据。

我们能够扫描、发现和连接到该器件。

我们遇到的问题是、在读取数据流(ATT 消息)时、我们似乎错过了消息并怀疑这是任何时序导致的。

在我们的主机上

  • 我们每 128ms 轮询一次 CC2652、以节省电池电量。
  • 我们遵循 NPI 同步 (MRDY/SRDY) 来发送和接收数据。
  • SPI 用于与 cc2652RB 通信。
  • 在从 SPI 总线读取/写入之前、我们会检查 MRDY 和 SRDY 的状态

问题/说明

  1. 您是否在其他设备发送连续数据时遇到可能影响时序的问题?
  2. CC2652 在发送到 NPI TL 之前如何缓冲从无线电读取的数据?
  3. 我们预计 CC2652 会一直处于唤醒状态、除非调用睡眠功能
  4. 我们希望了解是否可以从无线电(通过 SPI)连续读取并缓冲数据

此致、
Luke

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

    您好 Luke、

    感谢您联系我们。 您能分享这里使用的 SDK 版本吗?

    对于分享的问题、我有如下想法:

    ]其他设备发送连续数据时是否会出现问题、这可能会影响时序?

    如果环境非常拥挤、则可能会发生数据包冲突。 您能否共享环境的嗅探器日志?

    ]在发送到 NPI TL 之前、CC2652 如何缓冲从对讲机读取的数据?

    所有这些都由 BLE-Stack 的较低级别的处理、并由堆栈自动处理。

    除非调用休眠函数、否则我们预计 CC2652 会一直处于唤醒状态

    如果 UART/SPI 外设处于打开状态、则默认情况下、器件应始终处于运行状态。

    我们希望查看是否可以从对讲机(通过 SPI)连续读取并缓冲数据

    我相信它没有暴露、由 BLE 栈处理。

    此致、

    1 月

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

    您好、Jan、

    感谢您的快速响应!  

    我们的 SDK 是 simplelink_cc13x2_26x2_SDK_4_20_01_04、而 IDE 是 Code Composer 11.1.0

    我们在所有基于 HCI 的射频测试中都使用了 HostTest 项目。

    HostTest 还用于与第三方设备连接以收集 NIBP 数据、我们能够扫描、发现并连接到该设备。

    我们的主要目标:

    • 通过 SPI 从 cc2652 可靠地读取所有 SPI 消息

    我们的主要问题:

    • TI CC2652 中的 SPI 消息是否被缓冲? 如果是、最大缓冲区大小是多少。 是这样 #define NPI_TL_BUF_SIZE        1680?
    • 您是否有 SPI 事务的最小和最坏情况时序?
    • 我们想确认 BLE 端是否仍有数据、在我们读取一些消息后、SRDY 仍为高电平、表示存在更多数据。
    • 这是否与从器件启动的事务相同?

    谢谢、
    Luke

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

    您好 Luke、

    感谢您提供更多详细信息!

    是否对 TI CC2652 中的 SPI 消息进行缓冲? 如果是、最大缓冲区大小是多少。 是这样 #define NPI_TL_BUF_SIZE        1680?

    消息被放置在 为给定事务指定的.txBuf 和.rxBuf 属性中。 NPI_TL_BUF_SIZE 是指整个 NPI 传输层的缓冲区大小。

    ]您是否有 SPI 事务的最小时间和最坏情况下的时间?

    数据表的第 8.14.4.1 节同步串行接口 (SSI) 特性指定了在串行通信的不同部分期间器件预期的一些时序。

    我们想确认 BLE 端是否还有剩余数据、在我们阅读一些消息后、SRDY 仍为高电平、表示存在更多数据。

    为了澄清问题、您是说您想实施这个、还是说这是您观察到的内容?

    这是否与从属发起的事务相同?

    如果控制器为就绪状态、则外设应能够向控制器指示它有数据并且已准备好通过 READY 引脚进行发送。

    此致、

    1 月

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

    您好、Jan、

    要澄清一下、您说的是要实现这一点、还是说这是您观察到的情况?

    来自主机的 SPI 通信早已实现、我们已经测试了射频命令并与第三方器件连接。

    对于大部分通信,它工作良好,但与连续的数据,我们似乎失去了一些消息,我们想知道,如果我们没有清空剩余的消息。

    在根据接收到的长度读取消息后、释放 MRDY(低电平到高电平)。 我们将继续监控 SRDY 引脚、在其为低电平时进行读取。

    此致、

    Luke

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

    嗨、Luke、

    您是否会得到一个逻辑分析仪的屏幕截图、因为这可能会给我们一个提示。 此外、SPI 驱动程序使用什么帧格式?

    此致、

    Tarek D

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

    尊敬的 Tarek:

    我申请了逻辑分析仪屏幕截图和帧格式信息。  但是、在查看 NPI_task.c 时、它们遇到了 NPI_SRQRSP、但它们尚未在其 HostTestProject 中启用该功能。

    是否需要启用该功能才能更好地同步来自主机和 cc2652RB 的 SPI 消息?

    此致、

    Luke

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

    Tarek,

    它们通过引导加载程序并使用 SPI 测试主机的 HCI 通信(使用以下参数)、相当成功。

     #define SPI_MAX_SPEED_HZ 1000000    

    #define SPI_MODE SPI_MODE_2         //模式 3:CPOL = 1、CPHA = 1

    #define SPI_BITS_PER_WORD 8.

     BLE 连接到主机上的 USART、它们使用 USART-SPI 驱动器。 (spidev)

    增加频率和更改模式没有为它们提供有关 MISO 的有效数据。 在连续发送数据的一台 NIBP 设备上出现问题。

    它们每 128ms 轮询一次 BLE 芯片、以节省电池电量。  如果 NIBP 设备在该 128 ms 窗口之外发送消息、它们可能会丢失某些消息、并且没有响应。  轮询持续时间像(每 4ms - 5ms)那样减少时、它们会看到更可靠的数据流

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

    尊敬的 Tarek:

    关于这一个、还有什么想法吗?  我们想知道的主要是 CC2652 是否缓冲了 SPI 消息、我们是否可以批量读取这些消息并在应用层处理丢失的消息?

    或者、任何使用 NPI 从外部主机驱动 SPI 的测试代码都有利于验证同步和缓冲。

    如前所述、基于 HCI 的射频测试以及通过 HCI 与 NIBP 进行通信效果良好、但当其他 BLE 器件速度更快时、就会出现问题。

    此致、

    Luke

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

    您好 Luke、

    我对这里的延迟深表歉意、我一定错过了您的回答! 有一个缓冲区用于存储 SPI 消息、 但我建议连续处理缓冲区中的所有可用消息、而不是将它们拆分。

    遗憾的是、除了 SDK 中提供的 SPI 示例之外、我们没有任何测试代码。

    PICO 和 POCI 的逻辑分析仪屏幕截图对于了解发生的情况真的很有帮助。

    此致、

    Tarek D