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.

[参考译文] TM4C1294KCPDT:GPTM CCP 边沿触发极性

Guru**** 2556210 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/770263/tm4c1294kcpdt-gptm-ccp-edge-trigger-polarity

器件型号:TM4C1294KCPDT

 如何使 CCP 匹配边沿事件极性 包括 触发迟滞或设置   边沿触发电平阈值的能力? POINT 是一 个定时器控制事件 的上升沿 、也从3V3值电平触发 CCPn。

看起来 一个正向边沿应该从接地开始被计为一 个有效的 CCPn 正边沿。 否则 、脉冲 产生的3V3导通低于逻辑高电平 (VDD*0.65) 时、击退到 VDD 会触发边沿事件。

体模边沿可轻松与 预期的 CCPn 正边沿事件混合、因为生成边沿的方向不受 CCPn 硬件设计的限制。   如果 边沿 方向不受硬件限制、那么为边沿极性捕获事件设置方向的要点是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    看似下降沿事件应源自 VDD*0.65或高布尔逻辑值电平,而不是低布尔值电平。
    CCPn 边沿事件的两个方向应该被限制在一个布尔阈值窗口的中、低到高或者无关。

    如何配置 GPIO 输入、以便为其提供一些对不符合布尔规则驱动条件的脉冲的抗扰性?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 BP101:

    [引用 user="BP101]\n 看似 正向边沿应从接地开始计算为有效的 CCPn 正边沿。 否则 、产生 的脉冲3V3仅在低于逻辑高电平 (VDD*0.65) 时击退到 VDD 会触发边沿事件。[/引用]

    您的信号需要低于 VIL 才能被识别为逻辑低电平。 根据数据表、VIL 为0.35*VDD、因此您将有一些迟滞来避免错误识别转换。 如果 CCP 正在检测一个边沿,那么它必须已经看到输入低于0.35*VDD 并且在采样时钟的上升边沿附近持续一段时间。  

    如果您正在寻找可编程迟滞、则不会出现这种情况。  

    最后、您的系统需要确保向 MCU 提供干净的信号输入、或者您需要在设计中添加一些去抖智能、无论是硬件还是软件  

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

    您好、Charles、

    [引述 USER="Charles Tsaaaa">您的信号需要低于 VIL 才能被识别为逻辑低电平。 根据数据表、VIL 为0.35*VDD、因此您将有一些迟滞来不会错误地识别转换。

    大多数脉冲从不超过 VIL、因此问题是为什么(无输入信号) +3V3上拉的 PWM 很容易触发 CCPn。 GPTM-A 1/2宽 可为+24V 外部器  件提供25kHz PWM、但+3V3上的脉冲为12.5kHz。 点 与 GPTM-B 1/2宽 触发器一样、CPP 边沿事件   在 GPTM-A 上不受25kHz 的影响、看起来隔离良好。

       CCP 的+24V 器件输出(集电极开路)输入、5k6-20k 上拉 +3V3、  高达10uf 的 CCP 信号上的滤波器值 不会停止误触发 <230Hz 输入信号。   MCU 引脚上的 CCP 信号1nf-10nF 去耦没有区别。 添加到较慢 CCP 输入信号的电容>3000n 只会滚降>102Hz 的上升沿,而更高的频率仍然在 上升沿。   信号频率越高、触发 的边沿事件远低于布尔边沿逻辑电平。  

    看起来 VIL 交叉与为什么 GPTM0 CCP1 输入很容易因  较高频率而在较慢>102Hz 转速计信号上发生误触发无关。

    当   PWM0 发生器 变为有效 状态且速度要慢得多的102Hz 输入信号 完全丢失时、CCP 边沿事件在没有输入信号的情况下触发、为什么? 在   这种情况下、为 OD 输入配置的 CCP1是否能够更好地与集电极开路输入配合使用? 人们担心的是+24V 器件具有到  CCP 输入的集电极开路、并且有充分的理由   、肖特基二极管阴极在 接地悬空时阻止+24V CCP 输入。  就像"即使有插头锁定引脚" 、肖特基二极管也能防止对 MCU 的+24V 直接攻击一样。   肖特基二极管仅将 MCU 引脚上的 CCP 输入信号升至 高于 DGND 800mV、 您认为这不是一个因素吗?

    此时禁用 GPTM 边沿计数 器、除非有办法阻止较高频率中止较慢的边沿时间。

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

    BTW:过去为 PIOSC 配置 GPTM 时钟源是使 EVM 向 CCP 边沿事件报告速度低于230Hz 的信号输入的唯一方法。

    CCPn _NEG 边沿事件与_POS 边沿事件不会分别受到 VIL/VIH 的完全限制。 较快的 GPTM 时钟源(SYSCLK 120MHz)可能会提供一个线索、说明为什么布尔逻辑在较慢的边沿时间<230Hz 时失败。 报告帧的边沿事件的间隔计时周期 如何在较慢的转速计边沿事件上过滤更高频率的 PWM。

    我的观点是、更正此帖子中报告的硬件问题不应需要软件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    请注意、根据数据表、迟滞额定值为0.49V。 VIL 仅表示任何小于 VIL (0.35*VDD)的信号都保证被识别为逻辑低电平。 但是、由于您的工作环境(温度、电压电源)、输入上高于 Vil 但低于迟滞下限的电压仍可被识别为低电平。 您确实需要检查输入是否抗噪声干扰、以及您是否具有连接到 VDD 和 GND 的干净电源。

    哪个引脚是 PWM 引脚,它是 CCP0吗? 您说的是、CCP0上由 GPTM-A 生成的 PWM 是否会在 CCP1输入引脚上产生错误触发?

    如果您发现不同的 GPTMx 组合可以可靠地协同工作、实现 PWM 和输入捕捉、而不会产生噪声耦合、我建议您继续使用该解决方案。 我们没有任何客户报告任何噪声耦合是由 MCU 器件内部引起的。 噪声耦合在系统级别可能与电路板非常相关、您需要对此进行研究。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    [引用用户="Charles Tsaaai]CCP0上由 GPTM-A 生成的 PWM 是否会在 CCP1输入引脚上错误触发?
    [/报价]

    这种做法更有道理,但情况似乎并非如此。 相反、PWM0发生器正在触发 GPTM0-CCP1、几乎表现为内部触发 。  

    [引用用户="Charles Tsaaa">您确实需要检查输入是否抗噪声干扰、以及是否为 VDD 和 GND 提供了干净的电源。
    [/报价]

    在移除 CCP 管脚上的集电极开路上拉电阻器后、将会知道。 糟糕的是 >20k 上拉 CCP1  不适用于集电极开路、 会影响 信号质量。 GPIO   上的 WPU 可能会有足够的电流来驱动 集电极开路 输出、而无需从外部上拉至3V3? 我记得 WPU 大约为20k、  CCP1上的肖特基二极管应该在 高于 VDD 时阻断集电极开路的反向电压电流、对吧?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、PB101、
    我假设您使用的是 M0PWM0模块、而不是用作 PWM 引脚的 GPTM-A、对吧? 我无法将 M0PWM0与 GPTM-B T0CCP1相关联。 这是器件中的两个不同模块、它们的 I/O 也不相邻。

    谁驱动 CCP1? 为什么需要上拉电阻器? 如果您使用 CCP1进行输入捕捉还是希望引脚用作 GPIO 输入、我也感到困惑? 如果使用 CCP1执行输入捕捉功能、则引脚配置为推挽。 您不能将其设为 WPU。


    无效
    GPIOPinTypeTimer (uint32_t ui32端口、uint8_t ui8引脚)

    //
    //检查参数。
    //
    assert (_GPIOBaseValid (ui32Port));

    //
    //使引脚被外设控制。
    //
    GPIODirModeSet (ui32端口、ui8引脚、GPIO_DIR_MODE_HW);

    //
    //为标准推挽操作设置焊盘。
    //
    GPIOPadConfigSet (ui32Port、ui8引脚、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    [引用用户="Charles Tsaaaai]\n 我认为您使用的是 M0PWM0模块、而不是用作 PWM 引脚的 GPTM-A、对吧? 我无法将 M0PWM0与 GPTM-B T0CCP1[/报价]相关

    12.5kHz 是直 流逆变器 PWM、仅当 CCP0向外部器件提供25kHz PWM 信号时才会调用 CCP1。

    [引用用户="Charles Tsaaa">谁在驱动 CCP1? 为什么需要上拉电阻器? [/引用]再次使用  来自集电极开路源的 CCP1输入驱动 、 并移除 了外部 PU 电阻器的 WPU (推挽)。 证明 CCP1象边缘 与  我的信仰无关+3V3。   另一个有关 WPU 的优点   是、CCP1引脚边沿信号在串联肖特基二极管的情况下浮动低于接地电压30mV。   

    以某      种方式、PWM0 12.5kHz 脉冲仅在插入时通过集电极开路源 CCP0 25kHz 进入 CCP1。 似乎  有一个进入 CCP1的环路路径 CCP0/PWM0 、此路径只有 在器件被插入时才会产生。 外部器      件连接器位于低电压区域、具有33uf 电解电容+24V 引脚、后来添加了与24V 串联的铁氧体磁珠、没有任何区别。  PWM0的 RF 侵入 CCP0、并且两个信号(12.5kHz/25kHz) 的拐点都发生 在较慢(102-230Hz)的 CCP1信号上。  示波器探针看不到脉冲 VIH/VIL、磁滞应与触发 POS 边沿发生作用、对吧? 它被配置为 CCP1两个边沿和 PIOSC。  PIOSC 时钟源如何使 GPTM0停止体模触发 CCP1更神秘。

    // 25kHz PWM 占空比 PL4:TM0CCP0
    MAP_GPIOPinTypeTimer (GPIO_PORTL_AHB_BASE、GPIO_PIN_4);
    MAP_GPIOPadConfigSet (GPIO_PORTL_AHB_BASE、GPIO_PIN_4、
    GPIO_Strength _8mA_SC、GPIO_PIN_TYPE_STD);
    MAP_GPIOPinConfigure (GPIO_PL4_T0CCP0);
    
    // Taco 输入 PL5:TM0CCP1
    MAP_GPIOPinTypeTimer (GPIO_PORTL_AHB_BASE、GPIO_PIN_5);
    MAP_GPIOPadConfigSet (GPIO_PORTL_AHB_BASE、GPIO_PIN_5、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
    MAP_GPIOPinConfigure (GPIO_PL5_T0CCP1); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过在 CCP1输入之前增加0.3 μ F 的斜滚 CCP1边沿输入 POS 触发器:

    放大 CC1信号可发现缓慢上升的斜率在斜率上具有+/- nbs (12.5/25kHz)。 POS 缓慢上升斜率跨越 VIH/VIL、作为缓冲区(短脉冲)启动幻象触发 CCP1、在< 0.49v 的迟滞带隙内。

    在这种情况下、似乎没有小于0.49v 的 CCPn 迟滞(带隙)保护。 因此、位于 POS 边沿斜率上的微突(runt ***)可通过 CCP1轻松触发边沿事件。 通过 CCP0 @25kHz PWM 占空比更新驱动信号迁移的微控制器(runt 脉冲)、@200ms。 奇数点是 GPTM0还提供与 PWM0 (60MHz)相同的 SYSCLK、从而产生较慢的12.5kHz 信号、通过 CCP0在 CCP1信号上显示为 nubs。

    这似乎是为什么 PIOSC 时钟源 GPTM0更慢 CCP0/CCP1能够在 HIL/VIH 边沿内产生小于0.49v 的带隙迟滞事件、即使在两个边沿都是如此。 奇怪的是、对于通过 PIOSC (替代时钟源)的 GPTM、有几个已记录的勘误表、并且两次随机意外 POR 似乎是 CCP1不是电容去耦且 PWM0处于活动状态。 因此、不愿意使 GPTM0使用备用时钟源 PIOSC。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    此时、如果您发现 CCP1使用 PIOSC 将解决 phamtom 触发、我建议您保持这个解决方案。 另一个实验是让您不使用定时器0 CCP1并切换到其他不是由相同 GPTM 定时器实例生成的 CCPx。 例如、您是否可以使用计时器7的 CCP1而不是计时器0。 我真的没有其他解决方案可以为您提供帮助。 我不得不说、这正是器件的特性、您需要解决仅在您的系统环境中观察到的非常独特的现象。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    输入边沿必须 在两个时钟周期(SYSCLK (8.333ns)或16.6ns)内保持低电平/高电平。 也许是为什么脉冲较快的 PWM0 60MHz PWM 时钟(16.6ns)可以轻松触发计数、无论它们的来源/通过路径如何。 即使是 PIOSC 时钟周期也要快62.5ns、例如 x2个时钟周期(125ns)。 最快的预期边沿计数<220Hz (4.5ms) x2或9ms。 在该问题中、迟滞可能更多地是一个静音点。

    似乎它需要一个非常慢的 GPTM 时钟源来滤除更高频率的脉冲。 较慢的时钟源(LFIOSC)是否会缩短周期(之后)、从而滤除较高频率的脉冲?

    13.3.3.3输入边沿计数模式

    注意:对于上升沿检测、输入信号必须在上升沿之后至少保持两个时钟周期为高电平。 同样、对于下降沿检测、输入信号必须在下降沿之后的至少两个时钟周期内为低电平。 基于此标准、边沿检测的最大输入频率为频率的1/4

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    请记住奈奎斯特频率、该频率表示可以在不引入误差的情况下对信号进行采样的最小速率、该速率是信号中最高频率的两倍。 如果您的 PWM 周期是 SYSCLK 的两倍、那么只要您将 PWM0连接到 GPTM CCP0、GPTM 就可以可靠地对输入采样。 但是、在您的设置中并非如此、对吧? 假设您的 PWM0 (频率为60MHz)连接到 CCP0输入、那么使用较慢时钟源运行 GPTM 肯定会滤除任何意外的高频噪声。 我不确定您的 PWM0是否支持60MHz 频率。 但愿不是如此。 您为什么会首先在这种高频率下生成 PWM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    [引用用户="Charles Tsaa"]如果您的 PWM 周期是 SYSCLK 的两倍、则 GPTM 可以可靠地对输入进行采样、前提是您将 PWM0连接到 GPTM CCP0。

    它不是直接连接的、而是存在于同一个 MCU 中、因此较高频率的脉冲 很容易 找到沿计数的低频信号输入路径。 CCP0是一个独立的1/2宽、用于控制 风扇速度和 CCP1转速计边沿计数的 PWM 20-25kHz 输出。 同样、PWM0 使用 SYSCLK/2 (60MHz) 与 GPTM 的时钟速率非常相同 、即使 PWM0被分频(12.5kHz) 同步 脉冲很容易在 内部或外部产生 CCP1边沿计数。  某  种程度上需要通过降低 CCP1对高频 PWM 脉冲的敏感性来降低更高频率 PWM 脉冲的能力、从而使频率边沿计数下降得多。   看起来不像 GPTM 倒计数勘误表、但我们确实使用了 BILR 来确定中断进入的时间并 根据经过的时间重新加载边沿匹配计数。  该拓扑在 PWM0活动拾取之前工作良好、即使 在将 GPTM-0B 与 TM3A 同步之后、边沿计数也开始漂移。  

    较低频率的 GPTM 时钟 (PIOSC) 对 CCP1产生的边沿计数 PWM0的影响较小。 这并不是最终解决方案(更好的、 仍然不稳定 )、两个 CCP0/1/2宽定时器 都有专用的 MCU 引脚、因此它们不能被更改。 只能 操作 GPTM 时钟或去耦器件来减少 产生 边沿计数 CCP1的 PWM0模块脉冲。 1/2宽 GPTM 必须使用相同的时钟源。   除了2个 SYSCLKS 外、没有其它高频脉冲抗扰性 CCP1被添加来通过 ALT 时钟源改变来限定 PIOSC 边沿计数。

    读取数据表 LFIOS (ALT 源代码)将是 另一种用于测试 10kHz-33Khz-70Khz 宽范围的解决方案。 如何使 GPTM CCP0从33KHz (30.3µs μ s)时钟源产生20kHz 的频率、 2个装载值 似乎 是错误的。  负载和 匹配值似乎不会产生控制风扇速度所需的 PWM 占空比范围。  除了 LFIOSC 漂移 相当多的 MCU 批号 之外、 数据表电气部分建议 可以预期范围非常广泛、对吧?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    如果 PIOSC 为您工作、那么我认为您应该继续使用该解决方案、因为33kHz LFOSC 即使在没有巨大容差的情况下也无法产生20kHz PWM。 我之前问过您是尝试过其他 PWM 引脚(而不是 PWM0)、还是对边沿计数使用不同的 GPTM、而不是 CCP1。 您是否看到了任何差异? 您会一直说、当 PWM0仅为12.5kHz 时、PWM0会将噪声引入 CCP1。 我无法理解您对此的理由。 如果您认为这是因为 PWM 关闭了 SYSCLK 源、那么如果您要使用不同的 PWM 引脚、您应该会看到类似的结果。 再说一次、如果您发现 PIOSC 是一种折衷方案、那么我认为您应该继续使用它。 我没有其他解决方案可供您使用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    [引述 USER="Charles Tsaaaa">如果 PIOSC 为您工作、我认为您应该继续使用该解决方案、因为33kHz LFOSC 即使在没有巨大容差的情况下也无法产生20kHz PWM。 [/报价]

    稍后发现问题、在单次中断期间、TBILR 计数重新加载 CCP1匹配计数比之前想象的更限制 RPM 带宽、在 PWM0活动期间、更改为使 EVM 系统上的计数稳定。

    [引用用户="Charles Tsaa"]我之前问过您是否尝试过其他 PWM 引脚(而不是 PWM0)或使用不同的 GPTM 进行边沿计数、而不是 CCP1。 您是否看到了任何差异?[/报价]

    过去经过 EVM 测试的 GPTM5 具有相同的结果、而且 GPTM0 CCP0/1是 定制 PCB 上的专用引脚、 无法将封装引脚更改为不同的 GPTM。

    [引用用户="Charles Tsaaa"]当 PWM0仅为12.5kHz 时,您会不断地说 PWM0向 CCP1发出噪音[/quot]

    示波器用于探测更快的12.5kHz PWM 脉冲、这些脉冲在 CCP1上进入/打开较慢的<220Hz 信号输入。 在我看来、较快的脉冲可能会在用于确定1秒间隔内的 RPM 的累积边沿计数中考虑更多的边沿(水模)。 在1秒间隔 OneShot 计时器和边沿计数因 PWM0活动而增加之前、一切都正常。 通过 PIOSC 的第二个间隔/中断来改变测量的速度不需要花费更多的 OneShot 加载时间。

    难以想像的是、中断会导致漫游 边缘上升/下降、NVIC 纳秒会在 中断例程中以1秒的间隔变化。  幻象计数的唯一其他可能原因可能与 被减去 TBILR 的 TBAR 有关、成为不稳定的累积边沿计数。 运行测试进行确认 可能会增加未知问题、但在我看来、PWM0 优先级不应使 TBILR 计数因如此大的计数值而发生故障。 更新计数是在中启用的 OneShot tick 处理程序中间接获得的、但在边沿计数中断处理程序中未显式减去、尽管 CCP1已重新启用。 累积的边沿计数形成锁相环、并且仅在 PWM0活动期间错误地调节频率。  需要注意 的是  、当 PWM0在 AHB 上变为有效状态时、TBILR 计数会发生变化、这是未知的方式或原因。

    可以考虑在边沿计数中断期间计算边沿时间、但该想法在过去任何一秒以上的延迟中断都无法正常工作。  规则应用由风扇 taco 边缘输出设置、解码 公式必须保持兼容性、以便为 数字显示正确计算 RPM。 为什么在 PMW0活动期间 TBILR 计数发生很大变化、也许是为了快速假定一个外部问题。

    /*在递减计数模式中、可以通过从 GPTMTBPR 和 GPTMTBILR 寄存器组合组成的值中减去 GPTMTBR 或 GPTMTBV 来获得输入事件的电流计数。 *