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.

[参考译文] CCS/MSP430FR2311:电容式触控

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/692971/ccs-msp430fr2311-capacitive-touch

器件型号:MSP430FR2311
主题中讨论的其他器件: MSP430FR2532MSPWAREMSP430FR2522MSP430FR2512

工具/软件:Code Composer Studio

您好!  

我不熟悉 MSP430系列。 在我的项目中、我确实需要使用超低功耗微控制器系列之一。 我有 一个 MSP430FR2311开发板。  

我想使用几个引脚作为 电容式接近检测和 /或电容式触摸感应。 在数据表的器件概述中、提到了"所有 I/O 均为电容式触控 I/O "。 我是否可以使用任何库或示例代码?  

谢谢

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

    您好!

    我们建议将 CapTIvate 器件用于电容式触控应用。 CapTIvate 是 TI 的新型触控技术、可提供更高的性能和更低的功耗。

    如果您仍然想使用 FR2311、 请查找代码示例 attached.e2e.ti.com/.../msp430fr231x_5F00_pinosc_5F00_02.c

    e2e.ti.com/.../msp430fr231x_5F00_pinosc_5F00_01.c

    此致、

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

    您好、Ling、

    感谢您的评论。  

    我制作了 MSP430 FR 2532的开发板。 我还订购了 CapTIvate-FR2632开发套件、以了解其工作原理。  

    但我的最终目标是对 MSP430FR2532进行编程、以进行电容式测量。 下面是我所做的工作:

    1- 我使用 CapTIvateDesignCenter 应用程序生成 CCS 代码、然后将代码导入 CCS。 (一个自触摸按钮(BTN00)连接到 CAP.02端口)。 我只有一个 RX00。  

    2 -这是生成的代码:  

    ----------------------------------------------------

    #include //通用 MSP430器件包括
    #include "driverlib.h"// MSPWare 驱动程序库
    #include "captate.h"// CapTIvate 触控软件库
    #include "CAPT_App.h"// CapTIvate 应用程序代码
    #include "CAPT_BSP.h"// CapTIvate EVM 板级支持包

    void main (void)

    //
    //初始化 MCU
    // bsp_configureMCU()设置器件 IO 和计时
    //全局中断使能被设置为允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU();
    _bis_SR_register (GIE);

    //
    //启动 CapTIvate 应用程序
    //
    CAPT_AppStart();

    //
    //后台循环
    //
    while (1)

    //
    //运行 captate 应用程序处理程序。
    //在应用处理程序运行时设置 LED1,
    //并在检测到接近时设置 LED2
    //在任何传感器上。
    //
    LED1_ON;
    if (CAPT_appHandler ()=true)
    LED2_ON;
    其他
    LED2_OFF;
    LED1_OFF;

    //
    //这是一个很好的地方,可以添加任何内容
    //后台应用程序代码。
    //
    __no_operation();

    //
    //后台循环迭代结束
    //如果没有剩余的操作,则进入睡眠状态
    //
    CAPT_appSleep ();

    }//结束后台循环
    }//结束 main()

    ----------------------------------------------------

    我想将 过滤的计数值和长期平均值(来自 trElement)存储在两个单独的变量中(如 V1和 V2)。  这是我发现的用于读取原始计数的建议代码:

    extern tElement BTN00_E00;
    uint16_t rawSample;
    
    //执行更新
    CAPT_updateSensorRawCount (
    keypadSensor (keypadSensor)、 //指向要更新的传感器的指针
    eStandard、 //转换类型
    e2x过 采样、//过采样类型
    LPM0_BITS //要使用的低功耗模式
    );
    
    //读出数据
    rawSample = BTN00_E00.ui16CompositeRawCount; 

     我的方式是否正确? 我可以使用相同的代码来读取过滤计数和长期平均值吗? 我是否需要更改任何内容? 我应该将代码放置在 while 循环中吗?  

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

    尊敬的 AREF:

    您可能需要为按钮注册回调函数。 并将您的代码放入该函数中。

    有关详细信息和示例、请参阅  

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

    谢谢 Ling、

    在我之前的程序中、我在调试模式中检查了"BTN00_E00_RawCnts"、它正在更新。 但是、我无法检查 "rawSample"值。 您是否有任何示例代码、向我展示如何监控 CCS 终端中的值。 我是否需要添加任何新库和/或函数?

    抱歉、我不熟悉 MSP430。   

    感谢你能抽出时间。    

    #include //通用 MSP430器件包括
    #include "driverlib.h"// MSPWare 驱动程序库
    #include "captate.h"// CapTIvate 触控软件库
    #include "CAPT_App.h"// CapTIvate 应用程序代码
    #include "CAPT_BSP.h"// CapTIvate EVM 板级支持包
    #include "stdlib.h"
    #include "UART.h"
    //#include "inttypes.h"

    void printf (char *、...);
    void main (void)

    //
    //初始化 MCU
    // bsp_configureMCU()设置器件 IO 和计时
    //全局中断使能被设置为允许外设
    //唤醒 MCU。
    //
    WDTCTL = WDTPW | WDTHOLD;
    bsp_configureMCU();



    _bis_SR_register (GIE);

    //
    //启动 CapTIvate 应用程序
    //
    CAPT_AppStart();

    //
    //后台循环
    //
    while (1)

    //
    //运行 captate 应用程序处理程序。
    //在应用处理程序运行时设置 LED1,
    //并在检测到接近时设置 LED2
    //在任何传感器上。
    //
    //LED1_ON;
    //if (CAPT_appHandler ()=true)
    // LED2_ON;
    //else
    // LED2_OFF;
    //LED1_OFF;


    外部元素 BTN00_E00;
    uint16_t rawSample;


    //执行更新
    CAPT_updateSensorRawCount (
    BTN00、//指向要更新的传感器的指针
    eStandard、//转换类型
    e2x过 采样、//过采样类型
    要使用的 LPM0_Bits //低功耗模式
    );

    //读出数据
    rawSample = BTN00_E00.ui16CompositeRawCount;

    printf("%u",rawSample );
    printf ("f\r\n");

    //这是一个很好的地方,可以添加任何内容
    //后台应用程序代码。
    //
    __no_operation();

    //
    //后台循环迭代结束
    //如果没有剩余的操作,则进入睡眠状态
    //
    //capt_appSleep ();

    }//结束后台循环
    }//结束 main()

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

    e2e.ti.com/.../cem_5F00_touch.zipHiAREF、

    为什么要输出 rawSample 值。

    我们通常使用 CapTIvate 设计中心来观察和调整值。 该在线调优函数使用 FR2532的 UART、这意味着 UART 不能用于 printf 输出。

    如果您仍想通过 printf 输出 rawSample 值、则可能需要禁用在线调优功能。

    随附的是示例工程、可通过 UART 输出用户定义的数据包、波特率为9600。

    您需要做的是将 captate_config 文件夹中的 CAPT_UserConfig.c 和 CAPT_UserConfig.h 文件替换为您自己的文件。

    此致、

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

    您好、Ling、

    感谢您的回答。  

    RawSample 值只是我要监视的数据的一个示例。 但最终目标是检测电容变化。  将有几个简单的触摸按钮(电极)连接到 MUC 以进行电容变化监控。   

    我注意 到您发送的文件适用于 MSP430FR2522和 MSP430FR2512多路复用器。 我制作了 MSP430FR2532开发板、目前正在使用它。  

    我已将您建议的程序导入到我的 MCU 中、但它不会在终端端口中显示任何内容。 我在 while 循环中仅添加了"printf"函数(+ printf lib)。  

    我是否需要执行其他操作?  

    谢谢、  

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

    尊敬的 AREF:

    请参见随附的。 波特率为14400.e2e.ti.com/.../Test_5F00_case.zip