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.

[参考译文] MSP430FR2675:屏蔽 IO 问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1424646/msp430fr2675-shield-io-problems

器件型号:MSP430FR2675
主题中讨论的其他器件:OPA354

工具与软件:

您好!

我已经尝试使用驱动屏蔽。 我在 CapTIvate HAL 库中找到了一个函数。
CAPT_enableShieldIO ()

它工作正常。

蓝色:CapTIvate 信号(在电容 块0上)
青色:屏蔽 IO (在电容块1上)

但是、存在两个问题。

  1. 这只能在什么时候起作用
    1. 我在另一个引脚(与屏蔽引脚相同的块)的电容块1上激活一个"虚拟通道"。
      否则、当我只使用函数调用 CAPT_enableShieldIO ()激活屏蔽 IO 时、屏蔽引脚工作、但它会导致块0的常规捕获通道上出现永久的 MAX-Count 错误。 由此便实现了一个永久性重校准过程。
      为什么没有虚拟通道时出现最大计数错误、而此通道没有错误? 有其他方法可以解决这个问题吗?
    2. 或者我连接了一个示波器探头。 这将增加信道的容量。
  2. 函数  CAPT_enableShieldIO ()将所有有源捕获信号镜像到屏蔽引脚。 我不能仅选择一个特定通道来在屏蔽引脚上进行镜像。
    是否有可能这样做?

感谢您的帮助。

此致。

Kevin

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

    尊敬的 Kevin:

    这很有趣。  

    我连接了一个示波器探头。 这将增加信道的容量。

    首先、额外的示波器探头电容(~10pF)不应影响测量或导致最大计数误差。

    好的、这是该函数的源代码。  它所做的是为特定[块、引脚]组合设置 I/O 配置。  具体功能是将导通状态配置为 RX 或 TX、关断状态配置为 GND 或悬空、启用引脚(即是否在测量期间使用)、最后 设置 ACTIVE 位以指示外设使用该引脚。

    void CAPT_enableShieldIO(uint8_t ui8Block, uint8_t ui8Pin)
    {
        MAP_CAPT_setChannelEnable(ui8Block, ui8Pin);    // Enable the IO
        MAP_CAPT_setChannelOnState(ui8Block, ui8Pin);   // Set the IO to self mode
        MAP_CAPT_setChannelOffState(ui8Block, ui8Pin);  // Set the off state to ground
        MAP_CAPT_setChannelActive(ui8Block, ui8Pin);    // Set the channel as active
    }

    Unknown 说:
    这只在什么时候起作用
    1. 我在另一个引脚(与屏蔽引脚相同的块)的电容块1上激活一个"虚拟通道"。
    [报价]

    现在、它在没有"虚拟通道"的情况下不工作的原因是、您的 CAPT_UserConfig.c 中未定义它、就像下面所示的所有其他[block、pin]一样。  实际上、如果它未在用户配置文件中列出、则它不会被邀请到当事方;)

    tElement keypadSensor_E00 =
    {
        .ui8RxPin = 0,
        .ui8RxBlock = 0,
        .ui8TouchThreshold = 10,
        .pRawCount = keypadSensor_E00_RawCnts,
        .pTuning = keypadSensor_E00_Tuning,
    };

    因此、要使其工作、您需要首先在调用 capt_manager.c 中的 capt_updateSensor ()函数之前调用 capt_enableShieldIO ()、然后在 CAPt_updateSensor ()调用函数 CAPt_clearChannelOnState (block、pin )之后调用、其中 block 和 pin 与 Capt_enableShieldIO ()相同。

    Unknown 说:
    函数  CAPT_enableShieldIO ()将所有有源捕获信号镜像到屏蔽引脚。 我不能仅选择一个特定通道来在屏蔽引脚上进行镜像。 [报价]

    现在、使用此函数的问题在于、您实际上没有镜像任何其他引脚。  您只是激活一个通道来参与测量、这意味着它会将该引脚驱动为 RX、但其测量的转换计数值会被忽略。  如果屏蔽引脚上的电容与引脚相同、则波形看起来几乎相同。  这种情况可能是使用具有多个电容近似相同的按钮的键盘的情况。  但如果电容不同、屏蔽层上的波形将与您尝试屏蔽的通道上的波形不同。  这是可行的、因为与 RX 传感器相比、由于屏蔽层的尺寸较小、因此通常其电容要大得多。

    因此、驱动屏蔽的理想方法是使用高输入阻抗高速缓冲放大器(OPA354)、如下所示。  放大器的单位增益使输出能够很好地跟踪输入信号、其输出电流可以驱动屏蔽层的大电容。  请参阅 CapTIvate 技术指南的设计章节"带有驱动屏蔽的接近传感器"。

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

    大家好、Dennis Lehman、

    感谢您的详细回答。

    [报价 userid="114745" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1424646/msp430fr2675-shield-io-problems/5460873 #5460873"]因此、要使其工作、您需要首先在调用 capt_manager.c 中的 capt_enableShieldIO ()函数 capt_enableSensor ()之前调用 capt_enableShieldIO ()、然后在调用 capt_updateSensor ()函数 CAPt_clearChelOnState (块)之后、引脚与引脚和引脚引用相同[/块]。

    我添加了您的代码:

    但 MAX-Count-Error 会保留。 而且屏蔽引脚的行为现在是不同的:

    [报价 userid="114745" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1424646/msp430fr2675-shield-io-problems/5460873 #5460873"]因此、驱动屏蔽层的理想方法是使用高输入阻抗的高速缓冲放大器 OPA354、如下所示。

    是的、我已经阅读过这篇文章。 但出于各种原因、目前不能选择此附加器件。 如果可能、我想在不使用外部元件的情况下试用它。

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

    奇怪-好的、让我在实验中设置这一点以进行确认。

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

    尊敬的 Kevin:

    我很抱歉没有尽快回应。  我无法在实验室中进行这种设置。  您能取得任何进展吗?

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

    大家好、Dennis、很遗憾没有新的见解。