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.

[参考译文] CC3100MODBOOST:Simplelink 超时等待对象

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/997472/cc3100modboost-simplelink-times-out-waiting-for-object

器件型号:CC3100MODBOOST
主题中讨论的其他器件:CC3100

您好!

将 simplelink 驱动程序移植到 STM32。

我使 SPI 通信正常工作、有时 我会使模块连接、但在大多数情况下(似乎与时序相关)、我在等待响应时遇到驱动器错误。 以下是 SPI 日志:

 >65>87>78>56<0 <bc <dc <cd <ab <8 <0 <8 <0 <0 <0 <0 <0 <11 <11 <11 <11 > 21>43>34>12>85>8>4>0>0>0>0

附加的是最后一个 SPI 字节 TX/Rx 的示波器布线(示波器线路为 CS、时钟、MOSI、MISO)。 观察示波器、这个序列之后没有 IRQ。 (RxIrqCnt=1)什么地方出错了?

下载附件

有效期至2021年5月28日

超时的命令是  sl_WlanProfileDel

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

    我调整了 SPI 代码并使其正常工作。

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

    但是、当我使用不同的加密方法进行测试时、问题会再次出现。 我想了解导致这些超时的原因是什么?  

    此问题的 SPI 日志: 65>87>78>56 <bc <dc <cd <ab <8 <0 <8 <0 <0 <0 <0 <0 <11 <11 <11 <11 > 21>43>34>12>85>8c>4>0>0>A >0>20>65>87>78>56 <bd <dc <cd <ab <85 <c <8 <0 <38 <0 <0 <0 <0 <0 <11<11>21>43>34  

    这不是整个日志、但我想问题是 SPI 总线时序问题、而不是发送的数据问题。

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

    您好!

    您使用的加密代码不太可能是导致 SPI 问题的原因、而是 SPI 接口移植层本身。

    如果您要从 CC3100 SDK 移植、您是否查看了参考 STM32端口? 它适用于 stm32f4xx 器件、但 HAL 仍可用作参考。

    我很好奇、您最初做了哪些调整、似乎已经解决了这个问题? 我建议您继续查看 SPI 移植代码以及 HAL 的其余部分- CC3100经过测试、可在高达20MHz 的频率下通过 SPI 接口正常工作、 因此、问题可能出在您的移植代码中、也可能是您在 CC3100和 STM32之间的硬件设置中。

    此致、

    Michael

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

     在哪里可以找到参考 STM32端口? 我怀疑我是否可以使用它、因为 HAL 层太复杂、但我可以查看 SPI 代码。

    这是我的 SPI 代码。 有趣的是、为开放网络和 WPA2网络(我的 iPhone 11热点)发送的字节之间的唯一区别是 SSID 名称和安全类型。 在这两种情况下、我都发送密钥、在这两种情况下、SSID 中的字符数都是 Sam。 因此、它不是传输中的字节数、而是发送命令的内容。  

    int sl_IfRead (_slFd_t fd、unsigned char * pBuff、int len)

    MAIN_DISABLE_All_INTERRUPTS ();
    SPI_CS_HI ();
    SPI_CS_LO ();
    对于(uint16 i=0;i <len; i++)

    while (((SPI1->SR & SPI_SR_TXE)==0);
    SPI_TX (0);
    while (((SPI1->SR & SPI_SR_RXNE)==0);
    pBuff[i]= SPI_RX ();
    QuietWatchDoor();

    SPI_CS_HI ();
    MAIN_ENABLE_All_INTERRUPTS ();

    如果(log_SPI)用于(uint16 i=0;i <len; i++) wifi_spi_log(1, pBuff[i]);
    返回 len;

    int sl_IfWrite (_slFd_t fd、unsigned char * pBuff、int len)

    MAIN_DISABLE_All_INTERRUPTS ();
    SPI_CS_HI ();
    SPI_CS_LO ();

    对于(uint16 i=0;i <len; i++)

    while (((SPI1->SR & SPI_SR_TXE)==0);
    SPI_TX (pBuff[i]);
    while (((SPI1->SR & SPI_SR_RXNE)==0);
    (空) SPI_RX();
    QuietWatchDoor();

    SPI_CS_HI ();
    MAIN_ENABLE_All_INTERRUPTS ();

    如果(log_SPI)用于(uint16 i=0;i <len; i++) wifi_spi_log(2, pBuff[i]);

    返回 len;

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

    我还 对 CS 线路感到怀疑、因为我正在通过 GPIO 驱动它。 CS 最初 为高电平、直到第一次传输(也尝试将其初始设置为低电平)、然后保持高电平、直到下一次传输。 在开放网络中 、我可以打开服务器套接字、并且没有通信错误。

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

    以下是 SPI 初始化代码:

    void MAIN_SPI_REGISTER_v (void)

    Bit_Set_M (RCC->APB2ENR、RCC_APB2ENR_SPI1EN);

    SPI1->CR1 =(SPI_CR1_MSTR | SPI_CR1_SSI | SPI_CR1_SSM | SPI_CR1_BR_1 | SPI_CR1_SPE)
    &~μ s (SPI_CR1_BIDIODE | SPI_CR1_RXONLY | SPI_CR1_DFF | SPI_CR1_CPOL | SPI_CR1_CPHA | SPI_CR1_LSBFIRST | SPI_CR1_CRCEN);

    SPI1->CR2=0;

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

    您好!

    我不熟悉 STM32低级 SPI 寄存器和驱动程序代码、因此我无法判断您的实现可能有什么问题。 我建议您联系 STM 支持部门以获得有关 STM32特定代码的帮助。

    对于现有的移植 STM32移植文件、您可以在 CC3100 SDK 的 cc3100-sdk/platform/stm32discovery 中找到它们。 我建议您将这些用作移植代码的参考。

    不过、在执行不同的网络软件任务时、您会遇到问题、这似乎很奇怪。 理论上,如果代码可以在开放网络中正常工作,则不应出现任何 SPI 接口问题,因为这些问题在代码执行期间会出现在较早的时候,最有可能出现在 sl_Start()本身。

    您是否在错误发生时检查了 RTOS 状态、以确保不会有某些 RTOS 错误或其他更高级别的错误导致您的问题?

    此致、

    Michael

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

    需要缩放 Nonos 的超时常数