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:在发送包含空 IRQ 的较大文件期间、与主机的 SPI 通信崩溃

Guru**** 2563760 points
Other Parts Discussed in Thread: TM4C1294KCPDT, CC3100

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/638249/cc3100-spi-communication-to-host-crashes-during-sending-larger-files-with-empty-irq

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

您好、支持团队、

我们已发现大型数据传输(通过 Wifi 发送)存在问题。

在以下情况下、此问题在基础设施模式(STA)和临时模式下发生:
  -通过套接字以1024字节的块传输大文件(>1MB)
  -那么在被驱动程序清除的块之间会出现一个0长度的 IQR
  -在 DMA 传输期间发生中断、无法提供服务
  -芯片随后挂起,不响应任何命令

CC3100如何启动 IRQ 、不会提供中断的原因-本例中的原始数据为0xBF 0xDC 0xCD 0xAB 0x63 0x00 0x04 0x00 0x37 0x00 0x0B 0x00。

我们已经分析过、也不清楚如何将传输过程中的流量控制报告回主机控制器。

迫切需要反馈!

-Juergen

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

    您好 Juergen、

    请提供更多信息吗?

    • 您使用的是哪一个 SDK 示例?
    • 适合您的设置的主机 MCU 是什么?
    • 这是否仅在发送大于1MB 的大文件时发生?
    • 0长度 IRQ 是什么意思?

    此致、

    查尔斯·奥

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

    您好、Charles、

    我们使用的是 Tiva 控制器-具有 FreeRTOS 的 TM4C1294KCPDT。 我们正在从 SD 卡读取数据、并使用 Tiva 的 DMA 功能通过 CC3100发送数据。  

    它只会在较大的文件大小上发生-问题的处理速度越快-我目前无法说出的确切数字。

    长度为零的 IRQ 表示 IRQ 线路指示中断、但未提供包含原因的字节。

    较小的数据大小非常好且快速地工作。

    那么我们的问题是缺少用于发送数据的流控制-您有没有说明它应该如何工作?

    是否有任何建议我们可以尝试找出根本原因?

    希望这对您有所帮助、祝您一切顺利、

    Juergen Maisel

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

    CC3100正在发送一条假消息、这是预期的。

    是否可以尝试以较慢的速率添加邮件发送? 基本上、在每次 DMA 传输后添加一点延迟、看看这是否会产生任何影响?

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

    您好、Charles、

    我们已经在不同的版本中完成了这一操作-问题是它不仅是一个小的常数(当前为2ms)、而且它不能完全解决问题。 使延迟更大会使数据速率进一步降低、这是不可接受的。

    这就是我们在您的帮助下寻找更好解决方案的原因。

    您可以实现的有效数据速率取决于无线链路质量、而无线链路质量可能会因用户环境而发生变化-因此 CC3100需要更多时间发送数据。

    流控制是一种神奇的解决方案。 您是否能够重新创建问题并转移更大的数据文件?

    此致、

    Juergen Maisel

    JM3工程

    格拉芬·慕尼黑

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

    您好!

    您要实现的数据速率是多少?

    我认为问题的原因是 DMA 数据传输到缓冲区的速度比 NWP 处理的速度快。 我建议在接收到虚拟事件后设置一个小延迟或暂停 DMA 传输,这应该允许 NWP 有时清空缓冲区。

    此致、
    查尔斯·奥

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

    您好、Charles、

    感谢您处理此问题。 根据您的想法、我们在几乎没有延迟的情况下进行了一些测试、但并不是很成功。 我们尝试从1ms 开始延迟100ms、甚至没有

    解决问题。 此外、对于附加操作、它不能接受减慢这么多的速度。 SPI 上的目标速度为16Mbit。

    但是、让我们谈谈导致问题根本原因的项目:

    1) CC3100 - 内部缓冲区大小-可提供多少?

    2) 正确实现流量控制 -例如、发送命令末尾的 ACK (这是唯一不带确认的命令)

    3) CC3100为什么会崩溃?

    4) 针对 CC3100在输入缓冲区溢出时崩溃的权变措施?

    5) 指示器上是否有隐式指示来检测缓冲器是否已满?

    提前感谢、

    Juergen

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

    遗憾的是、我们的问题没有反馈。

    对于回答有关缓冲区大小或控制数据流的机制的问题应该很容易。

    无论如何、我们通过逆向工程解决了这一问题-现在、我们可以在16MHz SPI 速度下传输高达420MB/s 的数据。

    -Juergen

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

    排印错误-速度当然高达420kByte/s。