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.

[参考译文] CC1200DK:使用 SmartRfStdio 进行 CC1200DK 评估

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/825240/cc1200dk-cc1200dk-evaluation-with-smartrfstdio

器件型号:CC1200DK
主题中讨论的其他部件:CC1200CC1200EMK-420-470

我将 CC1200DK 与 smartRFstudio 配合使用 、以评估 CC1200的性能。  根据配置(4GFSK、SR 500kSPS、Rx 滤波器带宽1.66MHz、数据包延迟= 0ms)、1Mbps 数据应无线传输。

我将发送1000个长度为124字节的数据包、并在2455秒内接收这些数据包。 这相当于404 Kbps (124*8*1000/2455)的用户吞吐量。  

我知道有前导码(4字节)、同步(2字节) 、CRC (2字节)和从 CPU 传输数据到/从 CC1200的时间等开销、但这种开销太高了。  在我的实验中、它大约为60%。

 

请帮助我了解 CC1200收发器是否有任何限制?

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

    SmartRF Studio 不应用于吞吐量测试、因为数据包之间的实际延迟将大于0。

    我建议编写一个简短的程序、以将数据包连续发回、从而对时序进行完全控制。  

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

    根据您的建议、我使用了一个 STM32 400 MHz 电路板并连接到 CC1200EMK-420-470。 我编写了一个简短的程序、以将数据包发送回并接收相同的数据包。 我只能传输505Kbps 的用户数据。 但是、接收器无法接收超过300 Kbps 的数据。 接收到的数据包(大约205Kbps 的数据)丢失或导致 FIFO 错误。 请帮助我们解决此问题。

    为什么大多数数据包丢失?

    为什么只有505 Kbps 的数据被传输?

    --

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

    只需确认:我假设您在程序中使用的设置与 SmartRF Studio 中使用的设置相同。 我假设您在使用此设置使用 Studio 进行测试时获得了0%的 PER?

    您能否在此处为 RX 和 TX 端发布代码的主要部分? 您遇到了哪种 FIFO 错误?

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

    是的、我们使用的设置与从 SmartRF Studio 导出的设置相同。 在本例中、我们将获得大约400Kbps 的吞吐量。

    但是、我没有得到400 Kbps。 在本例中、我将以0%的速率获得250 Kbps。 原因是 Rx 完成和 Tx 完成中断。 这些中断在大约1.5ms 和1.0ms 后提出。 RX 中断有时甚至会延迟1.8ms。

    由于 Rx 中断中的延迟、数据包无法立即传输。 我们必须至少将传输延迟1ms、并且由于 Tx 中断本身延迟了几乎1ms、因此总延迟时间为2ms、才能成功发送下一个数据包。

    请告诉我们 CC1200是否将 Tx 和 Rx 完成中断延迟上述值。

    另外、让我们知道是否有任何寄存器可读取中断状态、以便我们也可以进行检查。 我将 GPIO0用于中断。 有 GPIO_STATUS 寄存器、但我们找不到任何解释。

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

    您能否在此处为 RX 和 TX 端发布代码的主要部分? 您遇到了哪种 FIFO 错误?

    较大的中断延迟听起来很奇怪、因此我们可能是某种非最佳代码实现。  

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

    您好、

    感谢您的回复。

    我知道我的代码中可能存在一些问题。  我今天在调试它。

     

    但是、来自 CC1200的延迟是多少?是否有任何状态寄存器可用于轮询和了解数据包是否已发送/接收? 这可能有助于我进一步优化代码。

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

    您好!

    我们今天已经确认、发送和接收数据包中断大约在1ms 后出现。 这是在 CC1200 EMK 的 GPIO 引脚上检查的。 因此、即使发送速率几乎为500Kbps、接收器也只能接收高达400Kbps 的数据包。 剩余的数据包丢失。 这些数据包不产生中断。 也观察到很少的 FIFO 错误。

    请告诉我们是否有任何其他方法来查找数据包传输和接收完成状态。

    Tx 的代码流如下所示

    1.将 MODE 更改为 Tx (TXOFF_MODE = TX)

    2.发送数据包

    等待发送完成中断

    4.转至步骤2

     Rx 的代码流程如下所示

    1、将 MODE 改为 Rx (RXOFF_MODE = IDLE)

    2.等待数据包接收中断

    3.复制数据包

    4.将模式更改为 Rx (STROBE SRX)

    5.转至步骤2。

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

    如果您发布示例代码、我们可以对其进行审查、这会更容易。  

    我假设您已经对 FIFO 上溢和下溢实现了错误处理。  

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

    有关 RX 代码流程的注释:

    您应该使用 RXOFF_MODE = RX

    可能是在接收完完整的数据包之前,您必须先从 FIFO 中读出数据包,以便在接收到新数据包之前有足够的时间清空 FIFO。  

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

    是的、我们实施 FIFO 错误处理。

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

    由于缺乏反馈、此案例将关闭。 为了能够提供更多帮助、我们需要查看一些代码。