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.

[参考译文] TMS320F280049:将代码从调整后的示例迁移到我的主工程后不触发 SPI 中断

Guru**** 2680875 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1587473/tms320f280049-spi-interrupt-not-triggering-after-migrating-code-from-an-adapted-example-to-my-main-project

器件型号: TMS320F280049
主题: C2000WARE 中讨论的其他器件

我修改了一个 TI 示例、使其通过 EEPROM 与 SPI 和 DMA 配合使用。 一切都运行良好,但后来我将代码介绍到主工程,它不起作用。 当我逐步进行调试并激活我的代码应该正常工作的一些寄存器位时、便会触发 ISR。

我设法创建了两个代码的最小示例:

  1. 我创建了一个重现问题的最小示例: https://drive.proton.me/urls/GBKNS0ND5C#r8Htr91tPpMs。 要注意的症状:
    1. 仅发送两个字节。 它应该在前两个字节后读取一个字节数组,或者 — 如果未连接 EEPROM — 继续不明确地读取状态寄存器,不断读取一个字节。
    2. SpiFinished 在发送第一个字节后保持为 0。
    3. RX ISR 计数器不会递增。
  2. 以下是最初的项目、它确实起作用: https://drive.proton.me/urls/DEE57V03MC#lktOnD1HAOWD。 如果没有 EEPROM、它将继续查询状态寄存器、如果有、则会将其读取到缓冲区。

示例 1 是使用“在 CCS 中创建的导出“创建的、转到您的工程、右键点击“Export" ,“,然后、然后选择“File System“、另外选中“Resolve and export linked resources“、但不知何故缺少一些标头。 我认为它与使用 Simulink(C2000 支持包)创建的项目有关。 我尝试了手动复制。 它应该包含所有内容(可能是 C2000Ware 文件除外)。 您还预编译了.out。 请告诉我您是否可以处理此问题:

https://drive.proton.me/urls/N81Y8SBK5G#lrPlB1bNKvEQ

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

    尊敬的 Ivan:

    我会仔细研究一下、然后回复您。

    此致、

    Delaney

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

    尊敬的 Ivan:

    如果寄存器写入可以触发 ISR、那么您的中断设置似乎很好。 您所指的 C2000ware 示例是否指的是 SPI_ex6_EEPROM? 如果没有、您能让我参考您得到的示例和 C2000ware 中的路径吗?

    主工程上使用的硬件设置是否与您用于测试独立示例的硬件设置相同? 例如、两种情况下的相同 Launchpad、相同的 GPIO 配置等?

    主工程有什么作用(使用了哪些外设,系统的时序是什么等)?

    此致、

    Delaney

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

    尊敬的 Delaney:

    我发送给你们的是两个最小的项目、一个是有效的、另一个不是没有主项目中任何可能分散我们注意力的其他部分。 我认为最好的办法就是暂时把注意力集中在他们身上。 您是否有机会试用过这些产品? 我认为所有必要的信息都在他们里面。 否则、请随时提问。


    谢谢、
    Iván μ s

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

    尊敬的 Ivan:

    我通常在尝试项目级测试之前尝试从概念上排除问题、因为它往往会更快地确定问题。 尽管我们通常无法通过 E2E 提供完整的工程调试支持、但我很乐意提供任何帮助。 如果您能回答我的上述问题、请告诉我。

    此致、

    Delaney

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

    如果寄存器写入可以触发 ISR、那么您的中断设置似乎很好。 您所指的 C2000ware 示例是否指的是 SPI_ex6_EEPROM? 如果没有、您能让我参考您得到的示例和 C2000ware 中的路径吗?
    我从“SPI_EX7_EEPROM_DMA"开始“开始、但我更改了很多内容、以使其满足我的需求。

    主工程上使用的硬件设置是否与您用于测试独立示例的硬件设置相同? 例如、两种情况下的相同 Launchpad、相同的 GPIO 配置等?

    是的

    主工程有什么作用(使用了哪些外设,系统的时序是什么等)?

    我得到了一个最小的 NOK 示例(见上文)、它重现了问题、而不会干扰主项目。
    我提供的最小 NOK 示例对于 SPI 应该相同、并且就我所见而言应该相同。 一个区别是我使用 MATLAB Simulink 生成项目、但有一个速率单调调度器。 我添加了一些虚拟代码、只是为了在我的 SPI 代码之外获得一些可行的示例。 虚拟代码在 CLA 中进行一些计算。

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

    大家好、关于这个问题有任何消息吗?

    谢谢

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

    尊敬的 Ivan:

    该专家目前已离职、将在本周返回时立即联系您。 请期待回复延迟、谢谢。

    此致、

    Aishwarya

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

    尊敬的 Ivan:

    对延迟深表歉意。

    我从“SPI_EX7_EEPROM_DMA"开始“开始、但我更改了很多内容以使其满足我的需求。

    您能否提供对原始示例所做的所有更改? 通常、一次对一个工作代码进行更改并在每次更改之间进行测试会很有帮助、这样就更容易知道哪个更改导致了问题。

    如果问题是由 Matlab 生成的、则必须由 Matlab 直接提供支持 — 联系。   还请通过下面的链接查看 MathWorks 常见问题解答:

    此致、

    Delaney

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

    我对原始示例所做的更改是有效的。 只有在另一个项目中使用该代码后、该代码才起作用、无法找出原因。 您是否查看过该代码? 是否怀疑它的工作原理? 也许如果你一步一步地执行它,你会看到我看不到的问题。

    我没有提出关于代码生成的投诉,只是试图给你线索. 在任何情况下,无论代码是自动生成还是由我自己生成,无论我是从官方的例子还是从头开始,它应该根据参考手册工作,但它没有,这就是为什么我要寻求帮助。

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

    尊敬的 Ivan:

    很遗憾、我还没有时间查看您发送的代码。 如果您可以对从示例中所做的更改或您提出的任何具体问题提供概念性解释、我可以提供帮助。

    此致、

    Delaney