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.

[参考译文] CC3220:调用 SL 函数、中断 I2S/DMA 数据流

Guru**** 2568585 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/683661/cc3220-call-to-sl-function-breaking-i2s-dma-data-stream

器件型号:CC3220

您好!

我将应用程序从 CC3200 (SDK 1.1.0)移植到 CC3220 (SDK 1.60.0)并运行到问题中、这是我的主要方法。 背景:我的应用程序将音频记录到 SD 卡中、但也具有网络功能。

基本上、如果我创建了 sl_Task 线程、但从未调用相关函数(即 sl_Start)、那么我的音频录制工作正常-我的缓冲区使用 I2S 和 DMA 连续填充。  

只要我允许应用程序调用 sl_Start 函数(即使所有内容都已注释掉)、音频录制就会停止工作-缓冲区永远不会被填满。

对此是否有简单的解释? 我可能是如何初始化外设或线程的?

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

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

    sl_starts (为网络处理器加电)是否成功返回? 什么是退货代码?
    您在什么环境中运行(TIRTOS/FreeRTOS/non-OS)?
    您在系统中使用哪些线程。
    基本上、NWP 不应影响 I2S、但在您的特定实现中可能存在一些相关性。 我需要更多信息才能理解。

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

    感谢您的快速回复。 目前、我已经注释掉了 sl_Start 函数的所有内容、除了让它返回一个硬编码的 SL_RET_CODE_OK (0)。 我这样做是为了确认是函数调用本身、而不是函数内容中触发问题的内容。

    我正在使用 FreeRTOS。 我的 main()函数正在执行一些初始化、然后创建优先级为9的 sl_Task 线程和优先级为5的 mainThread、以运行所有非 NWP 逻辑。

    我还注意到,如果我注释掉我的 SPI_init()调用,I2S/DMA 流就可以正常工作。 我在端口期间添加了此调用、因为我获取了接口错误代码[-2004]、但是我从未使用 SDK 1.1.0初始化 CC3200上的 SPI、我的应用程序运行正常。 使用 SPI/DMA 接口并中断 I2S/DMA 配置时、NWP 是否会出现这种问题?

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

    您好、Kobi、

    我仍然坚持这一点-但确实有想法。

    我意识到我正在使用 driverlib 函数配置和初始化所有外设/驱动程序,但 SPI_init()除外,它使用 TI 驱动程序函数进行初始化。 这是否会导致某种类型的意外行为?

    -阿尔门

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

    通过 TI 驱动程序和 driverlib 访问外设可能会导致类似的问题。
    我假设您已经找到了这个解决方案、因此我将关闭这个主题。
    如果问题仍然相关、请打开新主题。

    BR、
    Kobi