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.

[参考译文] CCS/EVMK2H:GPIO 输出 isn#39;t 精确

Guru**** 2419530 points
Other Parts Discussed in Thread: 66AK2H14

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/824368/ccs-evmk2h-gpio-output-isn-t-accurate

器件型号:EVMK2H

工具/软件:Code Composer Studio

您好!

最近我测试并尝试使用 GPIO 输出。但我发现 GPIO 输出不准确。

我用 C 编写代码,在  EVMK2H 的66AK2H14上工作。  使用 CCS 7.3。

我希望输出脉冲宽度大约为30ns、但实际上波形上的脉冲宽度大约为200ns-350ns。

我尝试其他脉冲宽度,但仍然无法获得 精确的脉冲宽度。

这是我的波形

这是我的函数

 while (1)
 {
   GPIO1低电平;

   TSC_DELAY_1ns (30);

   GPIO1高电平;

   TSC_DELAY_us (1);
 }

void TSC_DELAY_1ns (uint32ns)

   volatile unsigned long startTSC, currentTSC;
   unsigned long delay_cycles;
   uint32 tscl、TSCH;
   tscl= TSCL;
   TSCH = TSCH;
   startTSC=_itoll (TSCH、tscl);
   delay_cycles=(无符号长整型) ns*gMain_Core_Speed_Hz/1000000000);
   操作
   {
       tscl= TSCL;`
       TSCH = TSCH;
       currentTSC=_itoll (TSCH、tscl);
   }
   while ((currentTSC-startTSC)<delay_cycles);
我禁用了中断、没有执行任何其他 操作来测试 GPIO 输出。
我认为 我的代码中是否需要进行优化?或者是否需要在硬件上进行更改?
我需要  GPIO 上的输出精确脉冲宽度、至少不会有太多的浮点时间。
有人有任何想法或建议?
谢谢
此致
Jacky

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

    您能否指示您是从 ARM 还是 DSP 切换 GPIO? 切换 GPIO 涉及一些与互连相关的延迟、我不确定延迟是否小于30ns。  

    例如、如果您是从 ARM 执行此操作、您可以看到切换的合理时间量大约为200ns。 这是在 CortexA8平台上测量的:

    虽然 GPIO 未涵盖在合理的延迟和吞吐量预期范围内、但您可以参阅此处的应用手册:

    http://www.ti.com/lit/an/sprabk5b/sprabk5b.pdf

    希望这对您有所帮助。

    此致、

    Rahul

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

    您好、Rahul

    感谢您的回复和记录。

    我正在切换 DSP 上的 GPIO,我的 ARM 正在运行 Linux 系统。

    我查看66ak2h14数据表。我发现 GPIO 切换可以是30ns。

    DSP 内核时钟为1.2GHz

    我尝试使用其他延迟代码来查看波形。

     while (1)
     {
       GPIO1低电平;

       my_sleep();

       GPIO1高电平;

       TSC_DELAY_us (1);
     }

    使 my_sleep 无效(void)

       int i;
       对于(i=0;i < 10000;i++);

    这是波形,我看到这大约是20ns

    此外、GPIO 切换时间为何为悬空。我需要  精确的延迟  

    再次感谢  

    此致

    Jacky

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

    您好!

    我尝试不同的方法来获得 GPIO 切换的准确延迟。 但仍然没有任何改进。

    这是我的测试代码。

    如果有人有任何想法或建议、请 与我分享、非常感谢。

    e2e.ti.com/.../GPIO_5F00_main.cBest此致

    Jacky  

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

    Jacky、

    正如我所指出的、不应使用具有 GPIO 的基于 ARM 的代码来生成具有此分辨率的脉冲。 您需要考虑使用 ePWM 或 HRPWM 等外设、该外设可通过编程来生成此类短脉冲。

    在 Keystone 系列中、您可以认为66AK2G02器件具有内置 PWM:  
    www.ti.com/.../description 

    该器件具有6个增强型高分辨率脉宽调制(eHRPWM)模块、2个32位增强型捕捉模块(eCAP)和3个32位增强型正交脉冲编码器模块(eQEP)。   

    此致、

    Rahul

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

    您好、Rahul  

    感谢您对继电器延迟的建议和抱歉。

    我使用 GPIO 1-31 创建 并行数据 ,以便与 FPGA 进行通信。  我认为 PWM 不 能满足我的需求。

    无论如何,感谢您的回答。 我尝试其他方法来查看。

    此致

    Jacky