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:单图更新问题(LAUNCHXL-F28379D)

Guru**** 2470720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1477395/tms320f28379d-problems-with-single-graph-update-launchxl-f28379d

器件型号:TMS320F28379D

工具与软件:

在 Single Time Graph 中显示数据时出现问题。 我从示例 adc_soc_epwm_cpu01开始、 查看  正弦信号。 如果缓冲区大小不是采样频率除以信号频率的整数倍、则图上的信号会失真、之前已经在此处报告过、 https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/888657/ccs-tms320f28379d-adc-conversion-not-working 在线程中、有人获得了正确的行为、但使用了 controlCard。 此外、我检查了内存浏览器、发现数据与失真波形匹配。 与控制卡相比、Launchpad 中的实时调试是否存在一些限制? 或者问题是否在其他地方? 感谢您的帮助。  

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

    尊敬的 Luis:

    LaunchPad 和 controlCARD 上也使用了同一个 IC、因此我不认为这是硬件问题。 数据通过 JTAG、因此请确保使用启用全带宽的4引脚 JTAG。 您能否提供您看到的失真情况的图片? 您提供的线程显示有一个用于收集数据的缓冲区。 从图中判断、一旦收集了数据、当数据正在传输到 PC 时、就不会收集其他数据。 这就是为什么会在图中看到可能的跳过

    此致、

    Peter

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

    尊敬的 Peter:

    感谢您的答复。 我将通过板载 USB 连接 LaunchPad、但不确定这样是否支持全带宽。 确切地说、我的输入信号是频率为2kHz 的正弦信号、我还将使用缓冲器来收集数据。 我修改了代码以允许连续采集、在原始代码中、每次填充缓冲区后、过程停止、并且可以通过点击 Resume 按钮重新启动。  下面是一些"正常"波形和失真波形的图片。 对于图形的所有视图、我将选择 Acquisition buffer Size 、而  Display Data Size  与 Results_buffer_size (缓冲区大小)相等、并持续刷新。

    Buffer_size = 100

    Buffer_size = 110

    Buffer_size = 256

    我做了更多的实验、并注意到问题只在结果连续存储在缓冲区中时发生。 如果在中断内部、我只允许填充缓冲器一次、无论缓冲器大小如何、波形都不会失真、我将添加此测试的屏幕截图。  我可以通过在 Expressions 窗口中手动将索引设置为0或缓冲区大小范围内的任何其他值、重新开始填充缓冲区。 更新图形后、我得到预期视图、例如、我在"Expressions"窗口中设置的索引不连续。

    Buffer_size = 110、索引= 0

    Buffer_size = 256索引= 50

    我希望通过这种方式能够更深入地了解问题所在。

    此致、

    Luis

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

    尊敬的 Luis:

    感谢您提供图形屏幕截图、有助于更好地直观显示所看到的问题。 您在程序的哪个部分收集数据? 是在 ISR 期间还是已将其包含在后台循环中? 您能否提供您使用的示例代码? 理想情况下、您应该能够连续采样信号并将数据推入图形。  

    此致、

    Peter

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

    尊敬的 Peter:

    也是在 ISR 期间。 当然这是代码、我在调试前要更改的唯一变量是 Results_Buffer_Size

    中断 void adca1_ISR (void)

      AdcaResults[resultsIndex]= AdcaResultRegs.ADCRESULT0

      if (results_buffer_size ==结果索引)

      

        ResultsIndex = 0

        bufferFull = 1

      }

      结果 Index++;

      AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1// Clear INT1 flag (清除 INT1标志)

      //

      //检查是否发生了溢出

      //

      if (1 = AdcaRegs.ADCINTOVF.bit.ADCINT1)

      

        AdcaRegs.ADCINTOVFCLR.bit.ADCINT1 = 1// Clear INT1 overflow flag flag (ADCARegs.ADCINTOVFCLR.bit.ADCINT1 = 1)

        AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1// Clear INT1 flag (清除 INT1标志)

      }

      PieCtrlRegs.PIEACK.all = PIEACK_Group1;

    }