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.

[参考译文] LAUNCHXL-F28069M:LAUNCHXL-F28069M

Guru**** 2601915 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/674702/launchxl-f28069m-launchxl-f28069m

器件型号:LAUNCHXL-F28069M

您好! 我想知道采样输入是否可配置为单个引脚、或者我们是否必须使用8个引脚(GPIO7-GPIO15)才能使用该功能? 我想用它来读取超声波传感器输入、它会在一段时间内读取数字输入、并根据采样周期的决定采取措施。 我正在使用多个超声波传感器、但它们收集的数据用于不同的功能。 我可能会对参考指南产生误解、但我想在整个过程中使用一个引脚对单个超声波传感器进行采样。 这是可行的吗?

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

    我不关注您的问题。 您能否指向您所参考的参考指南中的特定部分? 如果您可以描述您尝试感应的信号、这也会有所帮助。

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

    我指的是第123页的子标题1.5.4.3 "使用采样窗口的限定条件"中的1.5.4、其中显示"采样周期可配置为8个输入信号的一组"。

    我想这样使用:
    超声波传感器根据高数字信号与检测到的物体的距离(例如、)返回一段时间内的高数字信号 如果数字信号远离、则数字信号为高电平100微秒;如果物体靠近超声波传感器、则超声波传感器将在极短的时间内输出高数字尖峰(例如1微秒)。
    理想情况下、ID 类似于检测从超声传感器返回的信号的正边沿、并在一段时间内对其进行采样。 如果它很快变低、我知道超声波传感器附近有一个物体。 如果它保持高电平、我知道物体离得远。

    我解释参考指南的方式是、采样函数需要8个输入。 对吗?

    我们的机器人具有5个超声波传感器、每个传感器只需1个输入引脚。 你有什么建议吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Andrew、

    为清楚起见、这是一种 GPIO 功能、有助于抑制信号抖动/噪声。 解释这一句的方法是、您可以配置应用于 GPIO 信号的限定条件窗口。 但是、每组8个 GPIO 信号将共享相同的鉴定窗口设置(因为它需要不实际的寄存器字段数来实现每引脚配置)。 否则、八个 GPIO 信号将独立运行。

    如果您对测量脉冲持续时间或占空比感兴趣、我建议您查看 eCAP 模块。 它是为此目的而设计的。

    Tommy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Tommy、我想知道哪个示例项目最适合我的应用。 "ECAP_APW"或"ECAP_CAPTURE_APW"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它将是 ECAP_CAPTURE_PWM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Tommy!

    我讨厌更多地给你虫子、但我很难理解它的工作原理。 这是我的第二个微控制器、就像我第二年的学生一样、但我对此有一些问题、希望您能帮我! 如果不是、请告诉我、我将发布一个新的线程!

    我们尝试按如下方式进行设置:

    我们只需要测量 t_pw。

    我们已将 ECCTL1设置为:

    ECap1Regs.ECCTL1.bit.FREE_SOFT = 1;      中断后//停止以进行调试

    ECap1Regs.ECCTL1.bit.prescale = 0; //无校验器

    ECap1Regs.ECCTL1.bit.CAPLDN = 1 //启用捕捉单元

    ECap1Regs.ECCTL1.bit.CAP1POL = 1;//在下降边沿上开始计时
    ECap1Regs.ECCTL1.bit.CAP2POL = 0;//上升沿返回值
    ECap1Regs.ECCTL1.bit.CAP3POL = 1;//在下降边沿上开始计时
    ECap1Regs.ECCTL1.bit.CAP4POL = 0;//在上升边沿上开始计时

    ECap1Regs.ECCTL1.bit.CTRRST1 = 1;// 在检测到一个上升边沿后、复位定时器
    ECap1Regs.ECCTL1.bit.CTRRST2 = 1;// 检测到下降沿后、返回值
    ECap1Regs.ECCTL1.bit.CTRST3 = 1;// 这只是对 eCAP1的阴影,所以当我们复位 CTRRST1时不应该复位它?
    ECap1Regs.ECCTL1.bit.CTRRST4 = 1;// 这只是对 eCAP2的阴影, 所以当我们复位 CTRRST2时不应该复位它?

    //控制寄存器2

    ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;//连续、因为我们要使定时器在第一个边沿(事件)之后保持运行?

    ECap1Regs.ECCTL2.bit.STOP_Wrap = 3;//我们只想知道上升事件和下降事件之间的差异,所以这无关紧要?

    ECap1Regs.ECCTL2.bit.SYNCI_EN = 1;//启用同步输入
    ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;//直通

    ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;//起始计数器
    ECap1Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发

    ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;     //确保计数器已停止

    ECap1Regs.ECEINT.BIT.CEVT4 = 1;        // 2个事件(上升然后下降)=中断,然后我们得到值

    _________________________________

    这有道理吗?

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

    Andrew、

    下一次、最好启动新帖子、但没有问题。

    在纯英文版本中、您尝试使用 eCAP 执行什么操作? 比如:我正在尝试捕获每个脉冲的导通时间。 或者、我正在尝试测量事件"X"之后的第一个脉冲的占空比。

    仔细阅读您的评论、似乎您对 eCAP 的功能有点困惑。 让我们来谈谈其中的几个问题。

    [引用 user="Andrew Wenaus"]ECap1Regs.ECCTL1.bit.CAP1POL=1;//在下降沿开始计时
    ECap1Regs.ECCTL1.bit.CAP2POL = 0;//上升沿返回值
    ECap1Regs.ECCTL1.bit.CAP3POL = 1;//在下降边沿上开始计时
    ECap1Regs.ECCTL1.bit.CAP4POL = 0;//在上升沿开始计时[/quot]

    极性位只设置哪个事件将触发 CAPx 来捕获时间戳计数器(TSCTR)。 它不会对"开始时间"或"返回值"产生任何影响。

    [引用 USER="Andrew Wenaus">ECap1Regs.ECCTL1.bit.CTRRST3 = 1;// 这只是将 eCAP1阴影,所以我们复位 CTRRST1时不应该复位它?
    ECap1Regs.ECCTL1.bit.CTRRST4 = 1;// 这只是对 eCAP2的阴影, 所以当我们复位 CTRRST2时不应该复位它?[/quot]

    它们不会影子 CAP1或 CAP2。 该功能仅在 eCAP 处于 APWM 模式时使用。 这条注释还使您听起来好像将每个 CAPx 寄存器都视为自己的计时器。 在这种情况下、整个模块只有一次、而 CAPx 寄存器只是在 TSCTR 的偶数发生时存储其值。

    [引用 user="Andrew Wenaus"] ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;//持续,因为我们要使计时器在第一个边沿(事件)之后继续运行?[/quot]

    您有2个选项1。 单次触发模式:eCAP 模块将在模数计数器达到 STOP_Wrap 中的值后停止。 在连续模式下、eCAP 模块将在模数计数器达到 STOP_Wrap 值后继续运行、"打包"返回 CAP1并开始覆盖值。

    [引用 USER="Andrew Wenaus"] ECap1Regs.ECCTL2.bit.STOP_Wrap = 3;// iwe 只想知道上升事件和下降事件之间的差异,所以这无关紧要?

    这决定了 eCAP 是否将停止并等待无限时间来读取这些值、或者如果检测到新的上升/下降边沿、它是否会覆盖 CAPx 寄存器。

    我建议从示例开始、然后阅读本章、以便您了解每行代码的作用。 幸运的是、eCAP 是一个非常简单的模块、该章内容非常详细、足以解释更详细的细节。

    此致、
    Cody

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

    这是一个巨大的帮助! 本质上、我们需要捕获传感器产生的脉冲的宽度。

    我们已经决定了一个将通过5个超声波传感器旋转的系统、理想情况下、我们希望使用差动功能来确定第一个事件和第二个事件之间的时间、然后进行复位。

    我们还有一个问题! 我们如何在检测到第二个事件后"重新设置"事件检测? 我将在这里尝试详细说明。 我们希望:
    1.检测 CAP1
    2.检测 CAP2
    3.返回差异(此外,存储在哪个寄存器中的差异?)
    4、用区别来评估员工
    5.选择下一个传感器(我们可以处理)
    6.重复

    我们现在的问题是、我们有了 Cap3和 Cap4、如果可以的话、我们会忽略它!

    这是我们现在的问题! 非常感谢您的帮助! 我们一定会重视及时完成我们的 capstone 项目、您和您的同事真的在帮我们解决很多问题、这真是太棒了!

    谢谢!


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

    Andrew、

    您需要做的第一件事是选择连续模式或单次触发模式。

    [引用 user="Andrew Wenaus"]我们如何在检测到第二个事件后"重新设置"事件检测?[/quot]如果修改 STOP_Wrap 值,则可以禁用 CAP3和 CAP4。

    Andrew Wenaus 说:
    存储在哪个寄存器中的差异?

    eCAP 不会自动返回差异。 当读取该位时、它返回事件发生时 TSCTR 的值。 如果您想节省时间并避免在代码中预形成"CAP2-CAP1":您可以设置 eCAP 来在 CAP1事件时清除 TSCTR、然后 CAP2中存储的值将是这些事件之间的差异。

    我知道 eCAP 看起来令人生畏、但它实际上是一个简单的模块!! 我估计、您可以在使用示例和阅读手册的~4小时内了解95%的 eCAP 功能... 这可能比在论坛上提问要快。

    查看我上面提到的寄存器、如果您有更多问题、请继续回答!

    此致、
    Cody