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.

[参考译文] PROCESSOR-SDK-AM62A:是否可以获得固定数量的脉冲?

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1512184/processor-sdk-am62a-is-it-possible-to-get-fixed-number-of-pulse

器件型号:PROCESSOR-SDK-AM62A

工具/软件:

您好、

我使用的显示屏需要 一个初始化序列、而 POWER IC 需要一个初始化序列。 在序列中、我必须给出宽度为 20 μ s 的前 82 个脉冲、然后经过宽度为 20 μ s 的后 24 个脉冲、才能在显示器的电压总线上产生所需的电压电平。

我使用了正常的 GPIO 以我无法达到的速度切换。  至少它可以达到 200us、而不是低于该值。
我认为它使用了 PWM 引脚。 我的问题是:
1.是否有方法可以控制最多几个计数的 PWM 信号?
2.是否有办法将该引脚切换为高电平和低电平?

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

    您好、Sathiyan、我来检查一下、很快会回来给您。

    谢谢您、

    Paula

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

    您好、 Sathiyan、

    要求 :

    •第一个:82 个脉冲、每个宽度为 20 μ s。

    •延迟后、秒为 24 个脉冲、宽度也为 20usec。

    解决方案:

    我们需要 考虑 ePWM/计时器 PWM 来解决这一要求。  

    •将 PWM 配置为以 50kHz (Period = 20µs) 运行并为每个周期生成中断。

    •根据需要设置占空比(例如 99%= 19.8µs 高电平、0.2µs 低电平)

    控制脉冲数:

    •启动 PWM

    •使用中断对输出脉冲进行计数

    •在 82 个或 24 个脉冲之后、禁用 PWM 或将输出设置为低电平

    请告诉我以上方法是否适合您。

    此致、

    Anil.

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

    尊敬的 Swargam:

    感谢您的指导。

    是否有任何这样的实现示例?
    主要用于内核驱动程序以及用户空间。

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

    您好、Swargam 和 Paula、

    对此有任何更新?

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

    您好、Sathiya Narayanan、

    我会将您的问题发送给 Linux 专家、我和 Paula 是 RTOS/NO RTOS 方面的专家。

    此致、

    Anil.

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

    谢谢 Swargam。

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

    您好、Sathiya、

    有关 PWM 的信息、请参阅 Linux SDK 内核驱动程序文档:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/10_01_00/exports/docs/linux/Foundational_Components、Kernel_Drivers Kernel/Kernel/PWM.html

    此致、

    Nick

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

    您好、Nick、

    上述指南刚刚说明了如何使用 PWM。

    我在这里的问题是:  

    解决方案:

    我们需要 考虑 ePWM/计时器 PWM 来解决这一要求。  

    •将 PWM 配置为以 50kHz (Period = 20µs) 运行并为每个周期生成中断。

    •根据需要设置占空比(例如 99%= 19.8µs 高电平、0.2µs 低电平)

    控制脉冲数:

    •启动 PWM

    •使用中断对输出脉冲进行计数

    •在 82 个或 24 个脉冲之后、禁用 PWM 或将输出设置为低电平

    [/报价]

    如何 生成 n 个特定数量的脉冲并停止 PWM? Swargam 建议、我可以生成一个中断来对输出脉冲进行计数、并完全根据我的计数停止。 如何操作?

    如果用户空间不提供 PWM 的额外控制、您也可以在内核空间中指导我

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

    您好、Sathiya、

    设定支持期望

    我们可以在这些论坛上回答有关 TI 硬件和 TI 软件的问题、但我们不支持有关编写定制代码的问题。 我无法帮助您编写定制的 Linux 驱动程序来连接此显示屏。

    显示器制造商是否提供了一个驱动程序来与外围设备配合使用?

    讨论 Linux 和 RTOS

    Anil 和 Paula 从 MCU R5F 内核控制 PWM 的角度进行了注释。 在这种情况下、有必要编写专门的代码、对每 20usec 生成的中断进行计数、然后在特定数量的中断后禁用 PWM。

    但是、Linux 无法在如此严格的时间限制下运行。 Linux 停止当前正在做的事情以及切换处理中断的上下文的中断响应延迟通常会超过 20usec。

    有关更多详细信息、请参阅 AM62Ax Academy > Multiple > Operating Systems
    https://dev.ti.com/tirex/explore/node?node=A__AcXUebjrS-3qRLoqvS66-A__AM62A-ACADEMY__WeZ9SsL__LATEST

    是否有工具在 PWM 硬件中对 PWM 脉冲进行计数?  

    我已经浏览了“TRM"一“一章、但在 PWM 中没有看到任何“脉冲计数“元素。

    我能看到的最接近的是斩波器 — 也许 PSCLK 频率可以设置为 20usec、然后斩波波器波形可以设置得足够宽、以便在 PWM 信号被驱动为低电平之前生成 82 或 24 个脉冲? 但据我所知、现有的 Linux PWM 驱动程序中尚未启用任何这些功能。

    此致、

    Nick

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

    您好、Nick、

    我们不支持有关编写自定义代码的问题

    我的问题主要与 TI 硬件本身以及在硬件支持的情况下如何在驱动程序中启用该功能有关。

    但据我所知、我们尚未在现有的 Linux PWM 驱动程序中启用任何这些功能。

    我已经理解 Linux 无法做到、接下来我需要指导如何在 MCU R5F 端启用相同的功能。

    同时、如果您已准备好在 AM62A 端提供帮助、以及如何使用斩波器完成同样的操作、我也可以制作 Linux 驱动程序、因为我已经进行了测试设置。 然后、我可以提供 TI 也可以在未来版本中使用的代码。

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

    您好、Sathiya、

    请详细说明这些信号是如何连接的、以及它们将在运行时如何使用。

    这些脉冲被驱动到什么接口? 带来了什么好处? 数据接口吗? 这些专用信号是否仅在初始化期间驱动、而不在任何其他时间点驱动?

    您将如何在运行时与显示器交互? 功能? 其他地方吗?

    如果“最佳解决方案“从 Linux 与显示器进行一些交互、并从 MCU R5F 与显示器进行一些交互、那么可能会遇到很多麻烦、而不是值得的。 每个外设接口只能由单个软件实例控制、因此不能同时实现 Linux 和 MCU R5F 的驱动器显示输出等操作。

    如果该显示不附带 Linux 支持、并且如果您要从 Linux 驱动显示、另一个注意事项是选择另一个不具有与该显示相同实时要求的显示。

    此致、

    Nick

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

    您好、Nick、

    这些脉冲被驱动到哪个接口? 带来了什么好处? 数据接口吗? 这些专用信号是否仅在初始化期间驱动、而不在任何其他时间点驱动?

    我正在使用 MP5611 三路输出电源 IC、其中输入 PWM 脉冲的数量会设置显示屏的输出电压。 如果发送额外的脉冲(例如+10)、电压可能会超过显示屏的限值、有损坏的风险。

    对于原型设计、 我将通过用户空间 PWM 生成脉冲、并使用忙等待循环N × pulse_width time。 由于时间不准确、 我使用的是偏移(N - OFFSET) × pulse_width ()、它使结果接近目标、但仍有±2 个脉冲的变化—对于生产来说是可接受的、但不可靠的。 睡眠功能更差。

    这就是为什么我要 寻找一个 解决方案 确保精确的脉冲计数和计时、从而确保生产可靠性。

    [引述 userid=“280115" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1512184/processor-sdk-am62a-is-it-possible-to-get-fixed-number-of-pulse/5834642 #5834642“]

    仅在初始化期间驱动、而不在任何其他时间点驱动?

    [/报价]

    是、仅在初始化和暂停/恢复周期期间

    每个外设接口只能由单个软件实例控制、因此不能同时执行 Linux 和 MCU R5F 的驱动器显示输出等操作。

    只有 Linux 才会将显示屏与简单的面板驱动程序配合使用、一旦电压正常、显示屏就会平稳运行。 电源时序是这里的唯一问题。

    方法 1:使 MCU R5F 仅在引脚上生成精确的脉冲、Linux 执行 IPC、
    方法 2:使 Linux 驱动程序与系统寄存器交互并完成工作(使用斩波方式)

    我更喜欢方法 2、因为它完全依赖于 Linux。

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

    您好 Sathiya、对于方法 1、您可以使用 Anil 建议的步骤。 如果您遇到任何问题、请告知我们。 或者、如果您需要 IPC 方面的任何帮助。 如果是、最好打开另一个主题、将此链接作为上下文共享。

    对于方法 2、我们的专家目前正在出差、因此可能会延迟回复。

    谢谢您、

    Paula

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

    尊敬的 Paulo 和 Nick:

    通过制作  Linux 内核驱动程序中的逻辑、可以满足我对生成固定脉冲的要求。

    内核空间能够生成 精度为微秒的计时。 谢谢你。

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

    很棒! 感谢您告诉我们

    Paula

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

    您好、Sathiya、

    如果您的应用在脉冲宽度(有时在数百微秒范围内)正常运行、那么我预计 RT Linux 可能没问题。 您需要设置优先级、以便驱动 PWM 的代码比运行的其他软件具有更高的优先级。

    当 Linux 有许多其他线程尝试在同一内核上运行时、请记住、常规 Linux 延迟数毫秒的情况并不少见。

    此致、

    Nick