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.

[参考译文] CC3120MOD:主机 INT 线路保持高电平

Guru**** 2553450 points
Other Parts Discussed in Thread: CC3120

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/703947/cc3120mod-host-int-line-stays-high

器件型号:CC3120MOD
主题中讨论的其他器件:CC3120

您好!

调用 sl_start()后,主机中断线在将 nRESET 和 NHIB 驱动为高电平几毫秒后,通过以下序列变为高电平:

1.当主机中断线路变为高电平时、为初始 XIRQ 提供服务

2、SPI 转换为0x65 0x87 0x78 0x56

3、SPI 接收0xBC 0xDC 0xCD 0xAB 0x08 0x00 0x14 0x00

4、SPI 接收0x28 0x00 0x04 0x06 0x00 0x00 0x00 0x00 0x00

0.SPI 接收0x33 0x33 0x33 0x33 0x00 0x00 0x00 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00

由于我可以连接到其 AP 网络、因此该模块在此序列后启动并运行、但主机中断线不会下降(使用示波器进行验证)。

这可能是什么原因?

P.S. 我将 STM32F4 MCU 与 IAR EWARM 8.20搭配使用

谢谢、

XH

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

    请参阅此帖子 :e2e.ti.com/.../673781


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

    您好!

    经过进一步调查、我意识到主机 INT 线路确实会下降、但在所附图像中所示的 NWP 初始化期间会立即恢复高电平(黄色表示主机 INT、蓝色表示 SPI 时钟)。 主机 INT 的第二个上升沿发生在我原始帖子中序列的步骤2和3之间。

    为什么会导致 CC3120在 sl_start()执行期间升高主机 INT 线路?

    XH

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

    相关帖子: e2e.ti.com/.../664422
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SPI 接口根据 processors.wiki.ti.com/.../CC3100_Host_Interfaceprocessors.wiki.ti.com/.../CC3100_SPI_Host_Interface 进行了正确配置。

    正如我在第二个帖子中所述、HOST_INT 线路会关闭、并在收到主机到器件同步字(0x65 0x87 0x78 0x56)后立即恢复。 根据该图(processors.wiki.ti.com/.../File:CC31xx_SPI_device_to_host_Sync_word.png)、当 CC3120将器件发送到主机同步字时、HOST_INT 应为低电平、主机正确接收该字(在我的原始文章中描述的序列的步骤3)。 但是、我的示波器记录显示 host_INT 在步骤2和3之间上升、此时应保持低电平。 回到我原来的问题,在器件初始化期间会导致 HOST_INT 上升的原因是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第3步中的0x08 0x00 0x14 0x00是从 CC3120发送的运算代码+长度。 0x08、0x00是 sl_opcode_device_INITCOMPLETE (0x0008、位于 source/ti/drivers/net/wifi/source/protocol.h)。
    0x14、0x00是长度(0x0014 = 20)、因此您将在下一个(描述符+有效载荷)接收20个字节。
    步骤4是描述符(8字节)、然后是有效载荷(12字节)。
    有效载荷包含在_SlDeviceHandleASYNC_InitComplete (在 source/ti/drivers/net/wifi/source/device.c 中)中使用的数据(在 protocol.h 中为 InitComplete_t)。
    如果查看函数_SlDeviceHandleASYNC_InitComplete、它将根据回调是否为空采取不同的操作。

    我认为情况是一般情况。 HOST_INT 随后可能会根据位置而置为有效。

    调用 sl_Start 时是否有回调: SL_Start (0、0、回调)?
    如果是、请通过回调= 0尝试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无需回调即可调用 sl_Start (即 sl_Start (0、0、0))。 当器件配置为在 AP 模式下启动时、sl_Start 会返回预期的代码(2)。 当我想通过 sl_DeviceSet()函数设置器件的 RTC 时,会出现问题。 由于 HOST_INT 线路在器件初始化期间被拉至高电平、因此后一个函数超时、在此期间、通过 sl_IfMaskIntHdlr ()函数(HOST_INT IRQ 在上升沿触发)屏蔽中断。 我了解当 CC3120想要通知主机发生异步事件时、HOST_INT 线路被拉为高电平、但我不理解是什么导致在器件初始化期间发生异步事件。

    我的问题似乎来自初始化期间的 HOST_INT 的第二个上升沿。 如果向我提供这种情况的任何原因、将会对我大有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的耐心等待。

    异步事件是 sl_opcode_device_INITCOMPLETE。
    请验证您的 HOST_INT 中断处理程序是否被调用两次。

    相关帖子:
    e2e.ti.com/.../2374310
    e2e.ti.com/.../691910
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我终于找到了问题的原因:运行 sl_Task()的任务的优先级低于调用 sl_Start()的任务。 运行 sl_Start()的任务使主机无法正确响应异步偶数。 对 SimpleLink 函数的后续调用将挂起、因为 CC3120正在等待主机响应异步事件、但收到了一条命令。

    根据我对 CC3120的理解、如果异步事件挂起、它无法响应 SL 命令、因为 host_line 由于异步事件而被置为有效、并且在收到 SL 命令时不会被置为无效。 权变措施可能是使用电平触发 XIRQ 而不是边沿触发 XIRQ、但我使用的主机 MCU 仅支持后者。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您分享您的问题解决方案。