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.

[参考译文] CC2340R5:SPI DMA 传输失败

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1624870/cc2340r5-spi-dma-transfer-fail

器件型号: CC2340R5

您好、

当我通过读取/写入在外部闪存中进行压力测试时、遇到了 SPI DMA 传输问题。

测试流程如下所示:

while (1) {
    //adc check vbat and thermistor
    //ble scan(work as observer) and store to flash
    //sleep 10s
}

在存储到闪存期间、函数调用如下:
NVS_write ()、带有标志 NVS_write_pre_verify -> NVSSPI25X_write ()-> doWriteVerify ()-> doRead ()-> extFlashSpiRead ()-> SPI_TRANSFER ()-> SPILPF3DMA_TRANSFER ()

由于 SPILPF3DMA_hwAttrs.minDmaTransferSize =10 和 doRead () 将读取 256 个字节,因此它将使用 DMA 进行传输。

当问题发生时、MCU 发送 SPI 读取命令、但它没有创建任何 SPI CLK 来从外部闪存读取数据、如下所示:
(对不起,我不知道为什么我不能在这里 uplaod 的图片,也许我可以尝试在 commet 上 uplaod )

我们尝试调试它,我们发现,当这个问题发生时,它也运行到函数 primeTransfer() 并执行下面的代码,但没有任何 SPI 的 CLK 发生:

 if (!object->manualStart)
{
        enableSPI(handle);
        /* Enable DMA to generate interrupt on SPI peripheral */
        enableDMA(hwAttrs->baseAddr, SPI_DMACR_TXEN | SPI_DMACR_RXEN);
        UDMALPF3_channelEnable(hwAttrs->rxChannelBitMask | hwAttrs->txChannelBitMask);
}

更多信息:
1.我们使用 SDK simplelink_lowpower_f3_SDK_8_40_02_01
2.发生问题时,轮询中的 SPI 发送工作正常,但 DMA 始终发送失败
3.在失败情况下调试时、执行 enableDMA (hwAttrs->baseAddr、SPI_DMACR_TXEN | SPI_DMACR_RXEN) 后、DMA 的寄存器 REQDONE 为 0x00000000、但在正常情况下、该寄存器为 0x00000001。 我不确定此信息是否有帮助。

请帮助检查它,我们感谢您的任何免费回复。

BR、
Edwin

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

    对不起,我试图上传上面提到的图片这里,但网站总是说
    很抱歉、您所请求的页面无法使用、但由于出现意外问题、我们对此深表歉意。 我们已经记录了该问题、因此网站管理员可以解决该问题。“

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

    您好、Edwin:

    感谢您发布 SPI DMA 故障的详细信息。  我已与 Shuyang Zhong 沟通 、他已提醒我们 您所报告的这种情况。  请给我们更多时间了解问题。  如果您能提供任何代码示例或说明供 TI 重现此行为、我们将不胜感激。

     过去两天、我在 E2E 论坛上发布图片时也遇到了困难。  请给 Web 开发人员留出时间来诊断和修复问题。

    此致、
    Ryan

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

    您好、Ryan、

    感谢您的答复。

    我给沭阳提供了一些伪代码、他实现了一个测试演示。
    在我看来,如果我们能有一个会议在我这边进行远程调试会更好,因为我可以重现这个问题,我不确定你是否可以在你这边重现问题。

    BR、
    Edwin

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

    您好、Edwin:

    请就这个主题与沭阳交谈。  根据我收集的信息、他能够重现问题、并已与 TI 驱动程序研发团队合作、以诊断并最终解决该 行为。

    此致、
    Ryan