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.

[参考译文] CC3100:驱动程序在接收套接字时挂起

Guru**** 2392905 points
Other Parts Discussed in Thread: CC3100, CC3100BOOST

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/567027/cc3100-driver-hung-on-socket-receive

器件型号:CC3100

我将使用 CC3100与 Cortex M3 MCU (MAX32600)配合使用。 在我的应用中、我连接到 WiFi 网络、打开一个非阻塞 TCP 套接字连接、并使用 sl_Recv 每~100ms 检查套接字上接收到的数据。 在插座打开5到10分钟之前、一切都很好、此时驱动程序在函 数_SlDrvRxHdrRead 中的1595行挂起命令响应:

/*在前4个字节与后4个字节不同时读取*/
while (*(_u32 *)&pBuf[0]=*(_u32 *)&pBuf[4])
{
NWP_IF_READ_CHECK (g_PCB->FD、&pBuf[4]、4);
} 

我正在与运行频率为1MHz、没有 DMA 的 SPI 接口通信。 我使用的是 SDK 1.2.0和 Service Pack 1.0.1.6-2.7.0.0。  CC3100BOOST 和 CC3100定制板的这种行为是相同的。 我没有观察到任何会导致 CC3100失去状态的重大电源异常。

我进行了逻辑捕获、显示了通道4上 IRQ 线路的 SPI 流量。 第一个图像显示第二个到最后一个命令和响应。 第二幅图像显示了未收到正确响应的最后一条命令。 我已附加完整的 Saleae 逻辑捕获文件。 在 BAD 命令上、IRQ 线路几乎在发送命令后立即生效、但它看起来不假。

如果有任何帮助,将不胜感激。

e2e.ti.com/.../CC3100_5F00_Command_5F00_Failure.zip

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

    SPI 驱动程序的时序有时会导致其他主机出现意外问题。 请尝试在 SPI 使能和数据之间的转换期间施加一个小延迟、并让我知道这是否有帮助。 从100ms 开始、您可以使用更小的延迟逐步进行测试。

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

    您好、Sarah、

    我在 SPI 使能和数据开始之间增加了100ms 的延迟。 我运行了几个测试、结果都相同:CC3100运行良好大约15分钟、然后停止。 IRQ 线路现在出现故障时根本不升高、因此行为与以前略有不同。 我已附上屏幕截图和逻辑采集供您查看。

    谢谢、

    Ian

      e2e.ti.com/.../CC3100_5F00_receive_5F00_failure_5F00_100ms_5F00_enable_5F00_delay.zip

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

    您是否还可以尝试在禁用 SPI 时添加延迟? 问题通常是芯片选择在更改之间没有足够的时间。

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

    您好、Sarah、

    这似乎是问题所在。 我在禁用 SPI 时添加了一个额外的100ms 延迟、并且我能够运行一个多小时。 在启用和禁用时、我能够以相同的可靠性将延迟降至5ms。 感谢你的帮助。

    Ian