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.

[参考译文] TMS320F28379D:使用外设的双核运行

Guru**** 2539500 points
Other Parts Discussed in Thread: SYSCONFIG, LAUNCHXL-F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1374102/tms320f28379d-dual-core-operation-using-peripherals

器件型号:TMS320F28379D
主题中讨论的其他器件:SysConfigLAUNCHXL-F28379D

工具与软件:

您好!

我正在尝试弄清楚如何使用具有双核操作的外设。 使用 SysConfig 添加 EPWM1外设进行单核操作(使用  LAUNCHXL-F28379D)后、可以在 GPIO0上观察到 PWM 信号。 对于双核运行、我使用了 ipc_ex2_gpio_sysconfig (示例从 Resource Explorer 导入)。 原始代码按预期运行。 我向该代码添加了 EPWM1、其参数与 单核程序中的参数相同。 但是、当我刷写电路板上的代码时、我在 GPIO0上看不到 PWM 信号。

另外需要注意的是、当我在 SysConfig 文件中将 EPWM1添加到 CPU1时、我还添加了 SYSCTL 模块。

在与 EPWM1相关的单核和双核程序之间生成的代码中、我找不到任何差异。 无法使 EPWM1正常工作的原因可能是什么?

此致、

Leon

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

    尊敬的 Leon:

    您是否添加了完整的 ePWM 配置? 行动限定因素在哪里? 我刚刚以类似的配置将 ePWM 添加到 CPU1 SysConfig 文件(但我的操作限定符在0时设置为高电平、在 CMPA-UP 时设置为低电平)、并成功运行:

    我没有在我的系统中添加 sysctrl -您这样做的具体原因是什么?

    此致、

    Allison

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

    您好、Allison、

    我对拖延答复表示歉意。

    您对行动限定符的看法是正确的。 我忘记了配置的这个部分。 当我添加它之后、我就能够从指定的输出中获得一个方波。 此外、我在 SysConfig 中为 EPWM1和 ADCA 添加了事件触发器。 此外、我还在代码中添加了一个 GPIO32引脚以通过 ADC ISR 对其进行控制。 这样、我也能够看到 GPIO32切换。

    我添加了 SYSCTL、以设置具有 CPU2的 EPWM2和 ADCB。 我重现了与 EPWM1和 ADCA 相同的 EPWM2和 ADCB 配置。 当我在器件中刷写代码时、可以看到 EPWM2输出按预期切换、但指定的 GPIO 引脚(指定给 CPU2的 GPIO19)将不会切换。 我无法为此找到解决方案。

    我在 SysConfig 文件中仅将 SYSCTL 模块添加到 CPU1。

    您能帮助我跟踪此问题吗?

    此致
    Leon

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

    尊敬的 Leon:

    Allison 今天不在办公室、因此请预计她的回复会有一些延迟。

    此致、

    Delaney

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

    尊敬的 Leonid:

    很高兴你能够让 ePWM 正常工作!

    对于 GPIO、您必须将对 GPIO 的控制指定给 CPU2。 我找到了几个与此相关的类似主题。 请看一下、如果这些内容对解决该问题有帮助、请告诉我:

    此致、

    Allison

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

    尊敬的 Alison:

    感谢您的答复。

    我认为我们之间存在着错误的沟通。 GPIO19指定用于 CPU2。 我在主例程中测试了对引脚的控制。 建立对 GPIO 引脚的控制并在另一个引脚上看到 ePWM 输出后、我向 CPU2添加了 ADCB。 我为 ADCB 创建了 ISR、其中它只会切换 GPIO19并清除 ADCB 标志:

    这是我的 ADCB 设置:

    EPWM2设置:

    CPU1中的 SYSCTL 模块:

    我在 Resource Explorer 中向示例添加的唯一内容是每个内核的 ePWM 和 ADC 模块。 在 ADC 中断内部、我将切换 GPIO 引脚。

    请告诉我、CPU2上的 ADC ISR 不触发的原因可能是什么。

    此致、

    Leon

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

    尊敬的 Leon:

    对不起,是的,我误解了你的帖子。  

    那么、问题是您的 ADC ISR 未被调用(表现在 GPIO19不在 ADCB ISR 中切换)、对吧?

    运行时您是否通过 CCS 进行了连接? 您可以逐步执行到代码并使用断点(然后您还可以检查寄存器/寄存器标志)、以确认 ADCB SOC 等是否按预期由 EPWM2触发?  

    此致、

    Allison

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

    您好、Allison:

    我对拖延答复表示歉意。 几天过去了。

    我发现我遇到的问题。 这与我在使用新外设设置 CPU1时遇到的问题相同、但我忘记了这个问题。 从 Resource Explorer 导入的项目在 Interrupt_initModule() 和 Interrupt_initVectorTable() 调用之前有一个函数调用 Board_init()。 因此,中断初始化函数会覆盖在 Board_init ()函数中创建的中断注册。 一旦我在中断初始化之后进行 Board_init ()函数调用,问题就得到了解决。

    但是、在将 SCIA 模块添加到 CPU1后、出现了一个新问题。 使用与上述针对中断相同的方法、我为 CPU1指定了 GPIO18、并将对其的控制权放置在 SCIA ISR 中。 当我使用调试器运行程序时、每当我从终端程序发送字符时、GPIO18都会切换。 但是、当我刷写独立程序时、SCIA ISR 绝不会触发。 ePWM 和 ADCA ISR 像以前一样正常工作。

    下面是 SCIA 的 SysConfig 更改:

    SCIA ISR:

    我以前从未遇到过这样的问题。 您知道什么原因可能导致此类异常问题吗?

    此致、
    Leon

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

    尊敬的 Leon:

    不用担心-是的, SysConfig Board_init ()设置可以被调用后的代码覆盖(反之亦然)。 很高兴你能够解决这个问题。

    嗯,我有一个几乎类似的声音问题与其他人的另一天-你可以看看这个线程,看看我的建议或解决方案是否有任何帮助吗?  https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1372411/tms320f280025c-tms320f280025c-sci-communication-not-working-in-standalone-mode。 

    如果没有任何帮助、我将进行深入了解。

    此致、

    Allison

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

    您好、Allison、

    谢谢你。 让我对此进行研究、我将向您通报最新情况。

    此致、
    Leon

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

    听起来不错、Leon。 我将等待答复。

    此致!

    Allison

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

    您好、Alliston:

    谢谢您将我指向另一篇帖子。  我刚通过另一个帖子,它指出了我正确的方向。 按照另一种 POST 方法、我在主循环中检查了 SCI 状态寄存器、发现在编程开始时、SCI RXERROR 位将多次切换(在 SCI RESET 命令之后重复返回)。 进一步调查表明、BRKDT 标志是故障的主要罪魁祸首。 事实上、我没有考虑 FTDI 芯片的启动时间。 将示波器放置在 RX 引脚上、我在通道1上捕获了信号:

    FTDI 芯片将 RX 引脚保持在低电平大约200ms。 在 SCI 初始化之前、我引入了300mSec 的延迟之后、这个问题似乎可以解决。 我仍在运行一些检查、但我相信 FTDI 启动时间是我正在努力解决的问题。

    此致、
    Leon

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

    尊敬的 Leonid:

    很高兴听到您取得了一些进展! 是的、让我知道检查是如何进行的。

    此致、

    Allison