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:如何在未触摸时保存校准值

Guru**** 2513185 points
Other Parts Discussed in Thread: MSP430FR2675, CAPTIVATE-FR2676, CAPTIVATE-FR2633

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched

器件型号:MSP430FR2675
主题中讨论的其他器件: CAPTIVATE-FR2676CAPTIVATE-FR2633

各位专家、您好!

这个问题与 CapTIvate 的软件有关。

问:是否可以在未触摸任何内容时记录对"CAPT_calibrateUI()函数的调用中的信息,并在下次启动时调用它?
如果可能、您能否分享一些参考材料或示例代码来说明如何执行此操作?

我的客户使用 MSP430FR2675来创建自己的电路板。 他们正在评估一个系统、以使用自电容方法测量水箱中的水位。 当水箱空载时启动设备时、它们能够无任何问题地测量水位。 但是、当它们在水箱充满水的情况下启动设备时、无法测量水位。" "CAPT_calibrateUI()"函数使用存在的水作为参考,因此当水位降低(排出)时,"负触摸标志"将导致器件重新校准。

在我客户的系统中、他们不知道设备启动时水箱中的水位是多少。 他们希望在器件启动时测量水箱中的水位、并正确测量该状态下水位的上升或下降。

正如您在下面看到的、此案例被视为"反向触摸"、我们希望了解有关如何处理假设为"反向触摸"的器件模型的任何信息。
:http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/CapTIvate_Design_Center/latest/exports/docs/users_guide/html/CapTIvate_Technology_Guide_html/markdown/ch_library.html#capt-calibrateui

此致、
还不错

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

    您无法记录  CAPT_calibrateUI()

    1.代码不向客户开放

    2.您无法确定参数何时可以在不同条件下工作、如温度。

    3.我建议您使用内部电容来计算实际电容。 也许它可以提供一些帮助。 请记住、内部电容器不是很精确、您可能需要针对每个器件进行校准。 代码附加后,您可以在 代码中找到 CAPT_calculateBaseCap()。

    e2e.ti.com/.../FR2633_5F00_CaculateBaseCap.zip

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

    周奕迅、您好!

    很抱歉耽误你的回答。 感谢您的回答。 我了解到无法记录"CAPT_calibrateUI()"的信息。 此外,我了解到每次都需要执行"CAPT_calibrateUI()",因为不能保证由于温度和其他因素,每次都能正确地使用一个参数。

    我尝试运行您在 CAPTIVATE-FR2676上共享的示例代码、但我无法想象如何使用它来解决此问题、因此请让我检查一下。

    Q2-1:在"CAPT_calculateBaseCap ()"中计算"baseCap"。 这是电极的电流电容值是否正确?
    "baseCap"值似乎在触摸和不触摸之间发生变化、但该值不稳定。

    Q2-2:如果上述内容正确、例如、当"baseCap"超过用户设置的阈值时、将使用它来确定被触摸的状态。 是这样吗?

    Q2-3:您提供的示例代码可以测量电流电容值并将其存储在 FRAM 中、但它可以避免负触控("反向触控")吗?
    我尝试启用"CAPT_setThrehold()"、但它根据触控状态进行了校准。

    我对您提供的示例代码不熟悉。  我不熟悉在触摸状态下启动器件时要做的事情。 此外、由于客户不熟悉 CapTIvate 产品(MSP430)、因此任何信息(如应用手册)都将非常有用。

    对于由此给您带来的任何不便、我们深表歉意、但我们非常感谢您的支持。

    此致、
    还不错

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

    您好、O.H,

    这是一种内部解决方案。 因此、我无法为您提供材料。 让我先咨询我的同事。

    Q2-1:在"CAPT_calculateBaseCap ()"中计算"baseCap"。 这是电极的电流电容值是否正确?
    "baseCap"值似乎在触摸和不触摸之间发生变化、但该值不稳定。  

    [奕 迅]:是的、您知道确切的参考电容值以及包含参考电容引起的变化。 然后、您可以计算 电容 I/O 与 GND 之间的基极电容、  

    Q2-2:如果上述内容正确、例如、当"baseCap"超过用户设置的阈值时、将使用它来确定被触摸的状态。 是这样吗?

    [奕 迅]:它不会影响基本 CapTIvate 函数。 触摸检测由 CAPT_appHandler()处理  

    Q2-3:您提供的示例代码可以测量电流电容值并将其存储在 FRAM 中、但它可以避免负触控("反向触控")吗?

    [奕 迅]:不、它只是检测到电容 I/O 与 GND 之间的基极电容值、它不会对 基极电容的变化做任何操作。 所有此部分都在 CAPT_appHandler()中处理  

    伊斯天

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

    您好、伊斯天、

    感谢您的支持。 我希望您能分享您同事提供的信息。

    在与"MSP430CapTivateSoftwareLibraryAPI 指南"一起查看示例代码之后、我开始更好地理解它。

    Q3:"baseCap"中电容值的计量单位是多少? PF? UFTM

    我想、通过在水箱充满水的情况下记录每个电极的"基帽"、我可以检查器件开启时水箱中有多少水。

    但是、这仅用于检查当前水位。 因此 、为了测量正确的水位、我认为有必要排水(或取下水箱)、并在水未充满时对其进行校准。

    此致、
    还不错

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

    您好、哦、

    有关参考电容器的更多信息、请访问: software-dl.ti.com/.../ch_technology.html

    我想这就是你想要的。 保存校准数据。

    e2e.ti.com/.../how_5F00_to_5F00_save_5F00_calibration_5F00_in_5F00_fram.zip

    我的建议是、您需要考虑校准数据在不同温度下会有所不同。 我认为您应该在 FRAM 中保存多个校准数据。

    伊斯天

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

    您好、伊斯天、

    感谢您的支持。 请允许我确认您共享的"HHOW TO_SAVE_CALIBRAMENT_IN_FRAM.zip"的预期用法。

    Q4-1:是否正确地将其用于以下方式?

    1. 在不接触电极的情况下启动器件。
    2. 此时使用"MAP_CAPT_calibrateUI(&g_uiApp);"测量校准数据。
    3. 通过"writeSensorCalibrationToFRAM (&BTN00、g_ElementTuning_FRAM);"将数据保存到 FRAM 中。
      (在自电容方法中使用三个传感器 BTN00_E00~02。)
    4. 通过"CAPT_appHandler();"开始正常检测触摸。
    5. 硬重置一次器件、然后用手指触摸电极启动器件。
    6. 通过"readSensorCalibrationFromFRAM (&BTN00、g_ElementTuning_FRAM);"、将从 FRAM 中读取"无手指触摸电极的校准数据"。
    7. 如果在手指触摸时传递"CAPT_appHandler();"、则视为触摸。
      (测量手指触摸时的计数值。)
    8. 松开手指后、将判断为无触摸、然后照常检测到触摸。
      (计数值在手指未触摸时测量。)

    但是、由于我在评估板上进行检查、"7"的判断结果没有影响。 虽然略有变化、但测量手指未触摸状态下的计数值。 移除手指后、"负触摸"标志被置位、器件被重新校准。 之后、可以正常检测到触摸。

    通过"writeSensorCalibrationToFRAM (&BTN00、g_ElementTuning FRAM);"、我们确认以下三个值已保存在 FRAM 中。 但是、当手指接触电极时、这三个值与不接触电极时没有区别。

    • ui16OffsetTap
    • ui8CoarseGainRatio
    • ui8FineGainRatio

    Q4-2:我认为应该有差异、这是正确的吗?

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3693222 #3693222">我的建议是、您需要考虑校准数据在不同温度下会有所不同。 我认为您应该在 FRAM 中保存多个校准数据。

    我了解到,通过增加农场的储存面积可以解决上述问题。

    此致、
    还不错

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

    您能否提供更多有关"但是、由于我在评估板上进行了检查、"7"的判断结果没有影响。 虽然略有变化、但测量手指未触摸状态下的计数值。 移除手指后、"负触摸"标志被置位、器件被重新校准。 之后、可以正常检测到触摸。" 我可以清楚地理解这一点。 是否存在任何问题。

    对于校准、它与这三个参数相关。 当手指触摸而未触摸时、它应该是正常的。 您可以将其视为它定义了 OPA 的增益。 您不应因输入信号的出现而更改增益。

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

    您好、伊斯天、

    使用 CAPTIVATE-FR2633和 CAPTIVAET-BSWP 检查了"HHOW TO_SAVE_CALIBRACK_IN_FRAM.zip"的操作。
    (为了使用设计中心、只从"FR2633_CAPTIVATE-BSWP-Demo"复制"CAPT_BSP.c 和.h"。)

    结果与我使用的电极和 CAPTIVATE-FR2676确认的行为相同。 换言之、电极导致的行为没有差异。

    下面是预期行为和实际行为的图示。

    我的客户希望在触摸电极时检测到触控情况。 我认为、通过调用器件启动时未触摸电极状态的校准数据可以避免这种情况。
    首先、这种想法是错误的吗?

    此致、
    还不错

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

    您好、O.H、

    您能否发布代码供我查看。

    1.图片能帮助我清楚地了解你的问题。

    2.您能告诉我保持接触的时间有多长、它会开始校准吗

    3. 请检查此参数。 也许这就是原因。 如果不 是65535、则将启用此功能。 源代码中的相关参数为  ui16TimeoutThreshold。

    伊斯天

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

    您好、伊斯天、

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3697967 #3697967"]您能否发布代码供我查看。

    这是项目。
    e2e.ti.com/.../How_5F00_to_5F00_save_5F00_calibration_5F00_in_5F00_FRAM_5F00_BSWP.zip

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3697967 #3697967"]2. 您能告诉我您保持接触的时间、它开始校准吗[/引述]

    距离实际测量结果也大约60秒。("活动模式扫描速率 ms"=33、"传感器超时阈值"=1980。)

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3697967 #3697967"]3.  请检查此参数。 也许这就是原因。 如果不 是65535、则将启用此功能。 源代码中的相关参数为  ui16TimeoutThreshold。[/quot]

    在1980年我把它从你给我的项目中改变了。 我在您给我的项目中将"ui16TimeoutThreshold"直接更改为65535、但行为结果没有变化。

    此致、
    还不错

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

    您好、哦、

    抱歉、我没有查看同事的代码。

    您需要在 此处禁用校准功能。 发生这种情况的原因是、当您通过触摸供电时、也会调用此函数。 因此结果与您看到的结果相同、但不保存校准值。

    2.要使演示与 GUI 配合使用,您还需要禁用 wakeonpro 函数。 此外、您需要直接读取计数。

    3.我 的建议是用内部电容器计算基极电容器会更加稳定。 如果您移除校准功能。 系统将失控。 此外、电容变化与计数值没有衬套关系。

    伊斯天  

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

    您好、伊斯天、

    感谢您的其他确认和建议。 我们已根据收到的反馈修改了示例代码、并确认了行为。

    因此、当器件第二次或以后启动时、无需触摸即可反映校准值、并且可以正确测量电流电容值。 但是、LTA 未得到反映 、无法被视为具有触控功能。 当手指被移除时、负触摸标志被置位、并且在一段时间后、LTA 跟随未触摸状态来执行正常操作。

    我添加了一个代码来修复 LTA。 (我在 CAPT_appHandler()函数之后添加了以下代码。)

    	while(1)
    	{
    		CAPT_appHandler();
    
            keypadSensor_E00.LTA.ui16Natural = 248; //LTA value when not touched

    结果是、即使器件是在第二次或以后启动时、也会判断为触控。

    问:通过添加代码来修复 LTA、是否会出现任何问题?
    我不认为将 LTA 设置为固定值是一个好主意。 如果还有其他方法可以做到这一点、如果您能告诉我、我将不胜感激。

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3699287 #3699287]3. 我 的建议是、使用内部电容器计算基极电容器会更加稳定。 如果您移除校准功能。 系统将失控。 此外、上限更改与计数值没有衬套关系。[/quot]

    当我在 DesignCenter 中检查运算时、计数值似乎随电容值的变化而变化。 这是否意味着没有线性关系?
    此外、我知道我不知道会发生什么、因为这不是应该使用的方式。

    此致、
    还不错

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

    否、因为 LTA 来自计数器编号。 在您的设计中、您删除了所有校准功能、我认为它可能会有一些问题。 当出现较大的噪声或环境发生变化、而不是来自水时、系统将不稳定。 不管怎样、所有这些都只是我的猜测、我建议您根据您的标准进行测试。

    我认为您只需在计数值上添加您的函数、因为水位不应是一个阈值。

    如果您想返回测试基座电容器、请告诉我。   项目中有一些冗余代码。

    您可以参考 此信息来了解电容值变化与计数变化之间的关系:

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

    您好、伊斯天、

    感谢您提供相关信息。 我会告诉他们存储校准数据的方法可能是解决方案之一、但他们必须对其进行全面评估。

    但是、由于上述方法会失去校准功能、我们想考虑您建议的测量基座电容的解决方案。

    此外、有一个部分我没有充分解释。 目前、我们正在根据是否存在触摸来评估测量水箱水位的粗略方法。 例如、如下图所示、水箱分为三级、使用三个电极。 底部的一个触摸表示油箱中有三分之一的水已注满。

    在某些情况下、当水箱中充满一些水时、器件会打开。 在这种情况下、我们希望正确测量是否存在触摸。

    此致、
    还不错

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

    明白。 如果您有任何其他问题。 请告诉我。

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

    您好、伊斯天、

    [引用 userid="372580" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/996891/msp430fr2675-how-to-save-the-calibration-value-when-nothing-is-touched/3682906 #3682906"]

    3.我建议您使用内部电容来计算实际电容。 也许它可以提供一些帮助。 请记住、内部电容器不是很精确、您可能需要针对每个器件进行校准。 代码附加后,您可以在 代码中找到 CAPT_calculateBaseCap()。

    FR2633_CaculateBaseCap.zip

    [/报价]

    为了更轻松地了解如何使用"FR2633_CaculateBaseCap.zip"、我们使用 CPUTIVATE-FR2633和 CAPTIVAET-BSPW 重新检查了其操作。

    我发现了一些不清楚的问题、因此请允许我检查其中的一些问题。

    问题1:是否正确地假定在以下代码中注释掉 if ()不会影响测量结果?

            //
            // Iterate through ratios to find the correct calibration
            //for all elements in this cycle.
            //
            for (ui8Element=0; ui8Element<pSensor->pCycle[ui8Cycle]->ui8NrOfElements; ui8Element++)
            {
                if (ui8CompletionMask & ui8ElementMask) //Comment out here
                {
                    //
                    // Perform a cycle conversion and save the raw results
                    //

    当我使用 CPATIVATE-FR2633和 CAPTIVAET-BSPW 进行检查时、ui8CompleMask 和 ui8ElementMask 在 CAPT_calculateBaseCap()函数中保持为0。 因此、不执行 IF 中的过程。  我暂时将其注释掉、以进行测量。

    问题2:假设以下每个函数处理注释内容是否正确?

        //Measuring the current counts without internal RefCap
        MAP_CAPT_applyCycleComp(ui8Freq, (tCycle *)pSensor->pCycle[ui8Cycle]);
        MAP_CAPT_startConversionAndWaitUntilDone(pbEndOfConversionFlag, LPM0_bits);
        MAP_CAPT_saveCycleRawResults(
                ui8Freq,
                pSensor,
                (tCycle *)pSensor->pCycle[ui8Cycle]
            );
        ui16BaseCnt = pSensor->pCycle[ui8Cycle]->pElements[ui8Element]->pRawCount[ui8Freq];
        
        //Measuring the current counts with internal RefCap
        MAP_CAPT_enableRefCap(pSensor->pCycle[ui8Cycle]->pElements[ui8Element], ui8RefCap);
        MAP_CAPT_startConversionAndWaitUntilDone(pbEndOfConversionFlag, LPM0_bits);
        MAP_CAPT_saveCycleRawResults(
                ui8Freq,
                pSensor,
                (tCycle *)pSensor->pCycle[ui8Cycle]
            );
        ui16CalCnt = pSensor->pCycle[ui8Cycle]->pElements[ui8Element]->pRawCount[ui8Freq];
        MAP_CAPT_disableRefCap();
        
        //  Calculate the Cap value
        buttonArray[count].baseCap = (ui16BaseCnt * ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));
        if(buttonArray[count].baseCap > 48)//  The largest cap value should less than 48.

    Q3:buttonArray[]数组放置在0x2396~0x2402处。 为什么不将其放置在 FRAM 区域中?
    虽然它与操作没有直接关系、但我很好奇、因为我认为它将通过写入"#pragma PERSISTENT (buttonArray)"被放置在 FRAM 区域中。

    此致、
    还不错

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

    1:是的。 您应该将其删除。 这就是我之前所描述的、这是 冗余代码。

    2:是的

    3:您可以这么做。 这只是一个由我编写的演示、仅用于测试。 您可以自行完成。  

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

    您好、伊斯天、

    很抱歉我迟到了。 感谢您的确认和回答。

    我会让客户知道可以解决的问题、如果有任何问题、 我们会给您反馈。

    此致、
    还不错

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

    您好、伊斯天、

    我再次检查并在"capt_Sandbox.c"中发现问题、让我检查一下。

    问题1:关于计算 baseCap 的以下公式、我认为当(ui16BaseCnt * ui16Calcnt)的结果超过65535时、无法执行正确的计算。 公式是否正确?

    buttonArray[count].baseCap = (ui16BaseCnt * ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));

    Q2:关于上面计算基准电容的公式、您能告诉我为什么可以从计数数量中测量电极的电容值吗?

    作为对 Q1的应对措施、我将公式更改为如下所示的公式。 因此、即使(ui16BaseCnt * ui16CalCnt)的结果超过65535、它也能在没有任何问题的情况下进行计算。

    buttonArray[count].baseCap = ((float)ui16BaseCnt * (float)ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));

    然而、在手指被触摸的状态和手指未被触摸的状态之间、baseCap 没有变化。 我想讨论基准电容为何没有改变,虽然从原则上来说,计数的数目有所改变。

    为了更改电极的电容值、我们执行了以下操作。 我还附加了 CAPT_calculateBaseCap()的内容和用于验证的代码。

    void CAPT_calculateBaseCap(tSensor *pSensor,
        volatile bool *pbEndOfConversionFlag, uint8_t ui8Freq,
        uint8_t ui8RefCap)
    {
        uint16_t ui16BaseCnt;
        uint16_t ui16CalCnt;
        uint8_t ui8Cycle;
        uint8_t ui8Element;
        uint8_t ui8CompletionMask;
        uint8_t ui8ElementMask;
    
    
    
        MAP_CAPT_applySensorParams(pSensor);
        MAP_CAPT_applySensorFreq(ui8Freq, pSensor);
        MAP_CAPT_bypassFSM();
    
        for (ui8Cycle=0; ui8Cycle<pSensor->ui8NrOfCycles; ui8Cycle++)
        {
            //
            // Set up Captivate IO for this cycle
            //
            MAP_CAPT_setCycleIO(pSensor, (tCycle*)pSensor->pCycle[ui8Cycle]);
    
            //
            // Iterate through ratios to find the correct calibration
            //for all elements in this cycle.
            //
            for (ui8Element=0; ui8Element<pSensor->pCycle[ui8Cycle]->ui8NrOfElements; ui8Element++)
            {
    //            if (ui8CompletionMask & ui8ElementMask)
    //            {
                    //
                    // Perform a cycle conversion and save the raw results
                    //
    
                    //Measuring the current counts without internal RefCap
                    MAP_CAPT_applyCycleComp(ui8Freq, (tCycle *)pSensor->pCycle[ui8Cycle]);
                    MAP_CAPT_startConversionAndWaitUntilDone(pbEndOfConversionFlag, LPM0_bits);
                    MAP_CAPT_saveCycleRawResults(
                            ui8Freq,
                            pSensor,
                            (tCycle *)pSensor->pCycle[ui8Cycle]
                        );
                    ui16BaseCnt = pSensor->pCycle[ui8Cycle]->pElements[ui8Element]->pRawCount[ui8Freq];
    
                    //Measuring the current counts with internal RefCap
                    MAP_CAPT_enableRefCap(pSensor->pCycle[ui8Cycle]->pElements[ui8Element], ui8RefCap);
                    MAP_CAPT_startConversionAndWaitUntilDone(pbEndOfConversionFlag, LPM0_bits);
                    MAP_CAPT_saveCycleRawResults(
                            ui8Freq,
                            pSensor,
                            (tCycle *)pSensor->pCycle[ui8Cycle]
                        );
                    ui16CalCnt = pSensor->pCycle[ui8Cycle]->pElements[ui8Element]->pRawCount[ui8Freq];
                    MAP_CAPT_disableRefCap();
    
                    //  Calculate the Cap value
    //                buttonArray[count].baseCap = (ui16BaseCnt * ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));
                    //add change
                    buttonArray[count].baseCap = ((float)ui16BaseCnt * (float)ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));
                    //
                    if(buttonArray[count].baseCap > 48)//  The largest cap value should less than 48.
                    {
                        while(1){}
                    }
                    count++;
    //            } //  End of element adjustment
            } // End of element adjustment counting loop for this mesurment
            //
            // Done with this cycle, clear the Captivate IO
            //
            MAP_CAPT_clearCycleIO(pSensor, (tCycle*)pSensor->pCycle[ui8Cycle]);
    
        } // End of cycle counting loop
    }

    Q3:启用基准电容器后、是否正确地将其添加到外部电容中、如下图所示?

    此致、
    还不错

    e2e.ti.com/.../FR2633_5F00_CAPTIVATE_2D00_BSWP_2D00_CalcuBasCap.zip

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

    Q1;你是对的。 它可能大于65535

    e2e.ti.com/.../2084.captivate_5F00_refcap.pdf

    Q2:这里是内部材料。 您可以参考它。

    问题3:是的。 但外部电容器已从电路中移除。

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

    您好、伊斯天、

    很抱歉耽误你的回答。 我能够从您提供的材料中了解 Q1~3。 非常感谢您提供的宝贵信息。

    但是、与我从您提供的材料中得出的等式相比、以下等式有一个问题困扰我。


    buttonArray[count].baseCap = (ui16BaseCnt * ui16CalCnt)/(float)(100 * (ui16BaseCnt - ui16CalCnt));

    Q4:如果我使用我自己的增益值和 CREF 值(内部电容器)、我是否需要更改公式中的系数?
    采样代码假设增益= 100且 CREF=1、因此我认为计算将是正确的。 如果我错了、请告诉我。

    此致、
    还不错

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

    您好、O.H、

    是的、你是对的。 但您需要注意大约100和100%。

    伊斯天

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

    您好、伊斯天、

    感谢您的回复。 我将注意上述几点并使用示例代码。

    当前问题已清除、如果问题发生、请让我从新主题中检查。

    非常感谢您的友好支持。

    此致、
    还不错

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

    您好、伊斯天

    我是 O.H.的同事

    我调查了我接触 BSWP 和未接触 BSWP 之间的差异。

    作为一个过程、我检查了 baseCap 的值。

    结果如下。

    ・当我触摸 BSWP baseCap=7.67741919 (浮点)时

    ・当我没有用手基座电容触碰 BSWP 时、电容= 7.7189188 (Flaot)

    从这个结果中、我能否检测到我的手在打开 MCU 时接触到 BSWP?

    此致、

    科基

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

    1.我知道、当您触摸传感器时、计算得出的电容 应更大。  它看起来与您的测试不同。

    2.我们检测人机触摸的方式不是基于检测到的电容器、而是基于相关信号、因为我们假设基体电容器会随环境的变化而变化。  您还需要更改线程保持以告知系统有触控。  

    3.你能告诉我你想做什么吗?

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

    您好、伊斯天

    1.我知道、当您触摸传感器时、计算得出的电容应更大。 它看起来与您的测试不同。

    →我很抱歉。 您说的是正确的。

    当我触摸传感器时、我确认计算出的电容器更大。 详细信息汇总在 Excel 文件中。

    e2e.ti.com/.../CalcBaseCap_5F00_measured-value.xlsx

    3.你能告诉我你想做什么吗?

    →实际上、我的客户希望在 MCU 启动时检测传感器是否潮湿。

    但是、会设置自动校准、 并且在 MCU 启动时很难"识别水已打开"。

      您能给我具体的建议来实现这一点吗?

    科基

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

    您可以使用另一个传感器作为湿检测。 可能会更改机械结构

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

    即使我使用此主题上的信息、也很难" 在 MCU 启动时检测传感器是否潮湿"?

    科基

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

    "即使我使用此主题中的信息"的含义是什么?

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

    您好!  

    很抱歉、请忘记这一描述。

    很难检测 到" MCU 启动时传感器受潮"的行为、对吧?

    如果是、请考虑其他传感器。

    谢谢、

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

    是的、您唯一可以用来判断不同条件的东西是一个传感器的信号强度。 但我认为除非触摸信号强且湿水信号小、否则这是相当困难的。