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.

[参考译文] MSP430FR2633:CapTIvate 设计中心生成的项目

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/839009/msp430fr2633-captivate-design-center-generated-project

器件型号:MSP430FR2633

CapTIvate 团队、

我设计的(主要是复制的!) 基于64按钮 TIDA 参考设计的16按钮互电容板(4 x 4)。  我已经制作了 PCB、现在正在进行测试。 当我使用 CapTIvate 设计中心生成我的16按钮项目并将其加载到 EVM (连接到16按钮板)中时、我在使用示波器进行探测时在 TX 引脚上看不到任何信号。 我还在 RX 引脚上看到没有信号。

当我使用64按钮项目加载 EVM 时、我在 TX 引脚上看到振荡的数字信号。

我认为我在 CapTIvate 设计中心项目中必须有不同的做法、但我无法找到不同之处。 我比较了 captate_config 文件和 captate_app 文件。 我唯一能找到的区别是 captate_config。 我应该查看项目中的其他一些文件吗?

还有其他建议吗?

谢谢、
Darren

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

    您好 Darren、

    如何配置 TX 和 RX 引脚、配置应与 PCB 布局保持一致。

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

    您好、Ling、

    我将在下面粘贴我生成的代码。  我希望我的第一个按钮使用 TX 引脚 CAP1.2 (连接器 C7)和 RX 引脚 CAP1.0 (连接器 C5)。

    它看起来与我一致、但我必须遗漏一些东西。  我探测了连接器上的每个引脚、在任何地方都看不到 TX 信号。

    谢谢、

    Darren  

    /*-版权所有-、BSD
    *版权所有(c) 2017、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *--/版权--*/


    //由 CapTIvate 设计中心 v1_81_00_09在2019年9月11日23:06:34 EDT 上生成


    //
    // CAPT_UserConfig.c
    //
    //\version 1.81.00.07
    // 2019年8月13日发布
    //
    //

    //
    //
    //注意:这是一个自动生成的源代码文件! CapTIvate
    //设计中心自动生成用户配置文件
    //根据创建的传感器布局。
    //
    //如果您选择,对该文件的更改将被覆盖
    //在设计中心的“生成源代码”下“更新现有项目”。
    //
    //为避免干扰代码生成过程,请保留所有应用程序
    //此文件外部的代码。
    //
    //

    #include "CAPT_UserConfig.h"

    //
    //
    //! CapTIvate 元件定义
    //! 此应用中的所有元素如下定义。
    //! 每个元件有3个组件:
    //! 1)一个原始计数数组(每个频率一个索引。 已扫描)(uint16_t)
    //! 2)调优数组(每个频率一个索引。 已扫描)(tCapTIvateElementTuning)
    //! 3)元素结构(元素元素)
    //
    //
    //传感器:BTN00,元素:E00
    uint16_t BTN00_E00_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E00_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E00 =

    ui8TxPin = 2、
    ui8TxBlock = 1、
    ui8RxPin = 0、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E00_RawCnts、
    .pTuning = BTN00_E00_Tuning、
    };

    //传感器:BTN00,元件:E02
    uint16_t BTN00_E02_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E02_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E02=

    ui8TxPin = 2、
    ui8TxBlock = 1、
    ui8RxPin = 0、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E02_RawCnts、
    .pTuning = BTN00_E02_Tuning、
    };

    //传感器:BTN00,元素:E01
    uint16_t BTN00_E01_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E01_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E01 =

    ui8TxPin = 2、
    ui8TxBlock = 1、
    .ui8RxPin = 1、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E01_RawCnts、
    .pTuning = BTN00_E01_Tuning、
    };

    //传感器:BTN00,元素:E03
    uint16_t BTN00_E03_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E03_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E03 =

    ui8TxPin = 2、
    ui8TxBlock = 1、
    .ui8RxPin = 1、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E03_RawCnts、
    .pTuning = BTN00_E03_Tuning、
    };

    //传感器:BTN00,元件:E04
    uint16_t BTN00_E04_RawCnts[CAPT_MUT_FREQ_CNT];
    tCapTIvateElementTuning BTN00_E04_Tuning[CAPT_Mutual FREQ_CNT];
    tElement BTN00_E04 =

    ui8TxPin = 3、
    ui8TxBlock = 1、
    ui8RxPin = 0、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E04_RawCnts、
    .pTuning = BTN00_E04_Tuning、
    };

    //传感器:BTN00,元件:E06
    uint16_t BTN00_E06_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E06_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E06 =

    ui8TxPin = 3、
    ui8TxBlock = 1、
    ui8RxPin = 0、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E06_RawCnts、
    .pTuning = BTN00_E06_Tuning、
    };

    //传感器:BTN00,元件:E05
    uint16_t BTN00_E05_RawCnts[CAPT_MUT_FREQ_CNT];
    tCapTIvateElementTuning BTN00_E05_Tuning[CAPT_Mutual FREQ_CNT];
    tElement BTN00_E05 =

    ui8TxPin = 3、
    ui8TxBlock = 1、
    .ui8RxPin = 1、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E05_RawCnts、
    .pTuning = BTN00_E05_Tuning、
    };

    //传感器:BTN00,元件:E07
    uint16_t BTN00_E07_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E07_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E07 =

    ui8TxPin = 3、
    ui8TxBlock = 1、
    .ui8RxPin = 1、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E07_RawCnts、
    .pTuning = BTN00_E07_Tuning、
    };

    //传感器:BTN00,元件:E08
    uint16_t BTN00_E08_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E08_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E08 =

    ui8TxPin = 2、
    ui8TxBlock = 2、
    ui8RxPin = 0、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E08_RawCnts、
    .pTuning = BTN00_E08_Tuning、
    };

    //传感器:BTN00,元素:E10
    uint16_t BTN00_E10_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E10_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E10=

    ui8TxPin = 2、
    ui8TxBlock = 2、
    ui8RxPin = 0、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E10_RawCnts、
    .pTuning = BTN00_E10_Tuning、
    };

    //传感器:BTN00,元素:E09
    uint16_t BTN00_E09_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E09_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E09 =

    ui8TxPin = 2、
    ui8TxBlock = 2、
    .ui8RxPin = 1、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E09_RawCnts、
    .pTuning = BTN00_E09_Tuning、
    };

    //传感器:BTN00,元素:E11
    uint16_t BTN00_E11_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E11_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E11 =

    ui8TxPin = 2、
    ui8TxBlock = 2、
    .ui8RxPin = 1、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E11_RawCnts、
    .pTuning = BTN00_E11_Tuning、
    };

    //传感器:BTN00,元件:E12
    uint16_t BTN00_E12_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E12_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E12 =

    ui8TxPin = 3、
    ui8TxBlock = 2、
    ui8RxPin = 0、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E12_RawCnts、
    .pTuning = BTN00_E12_Tuning、
    };

    //传感器:BTN00,元件:E14
    uint16_t BTN00_E14_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E14_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E14 =

    ui8TxPin = 3、
    ui8TxBlock = 2、
    ui8RxPin = 0、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E14_RawCnts、
    .pTuning = BTN00_E14_Tuning、
    };

    //传感器:BTN00,元件:E13
    uint16_t BTN00_E13_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E13_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E13 =

    ui8TxPin = 3、
    ui8TxBlock = 2、
    .ui8RxPin = 1、
    ui8RxBlock = 1、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E13_RawCnts、
    .pTuning = BTN00_E13_Tuning、
    };

    //传感器:BTN00,元素:E15
    uint16_t BTN00_E15_RawCnts[CAPT_Mutual FREQ_CNT];
    tCapTIvateElementTuning BTN00_E15_Tuning [CAPT_Mutual FREQ_CNT];
    tElement BTN00_E15=

    ui8TxPin = 3、
    ui8TxBlock = 2、
    .ui8RxPin = 1、
    ui8RxBlock = 2、
    ui8TouchThreshold = 10、
    .pRawCount = BTN00_E15_RawCnts、
    .pTuning = BTN00_E15_Tuning、
    };


    //
    //
    //! CapTIvate 时间周期定义
    //! 此应用中的所有时间周期如下定义。 时间周期
    //! 在一个时隙中并行测量的一组元素。
    //! 每个周期有2个组成部分:
    //! 1)元素指针数组到成员元素(tElement*)
    //! 2)周期结构(tCycle)
    //
    //
    //时间周期:BTN00_C00
    tElement* BTN00_C00_Elements[2]=

    BTN00_E00、
    BTN00_E02、
    };
    tCycle BTN00_C00 =

    ui8NrOfElements,
    .pElements= BTN00_C00_Elements、
    };

    //时间周期:BTN00_C01
    tElement* BTN00_C01_Elements[2]=

    BTN00_E01、
    BTN00_E03、
    };
    tCycle BTN00_C01 =

    ui8NrOfElements,
    .pElements= BTN00_C01_Elements、
    };

    //时间周期:BTN00_C02
    tElement* BTN00_C02_Elements[2]=

    BTN00_E04、
    BTN00_E06、
    };
    tCycle BTN00_C02 =

    ui8NrOfElements,
    .pElements= BTN00_C02_Elements、
    };

    //时间周期:BTN00_C03
    tElement* BTN00_C03_Elements[2]=

    BTN00_E05、
    BTN00_E07、
    };
    tCycle BTN00_C03 =

    ui8NrOfElements,
    .pElements= BTN00_C03_Elements、
    };

    //时间周期:BTN00_C04
    tElement* BTN00_C04_Elements[2]=

    BTN00_E08、
    BTN00_E10、
    };
    tCycle BTN00_C04 =

    ui8NrOfElements,
    .pElements= BTN00_C04_Elements、
    };

    //时间周期:BTN00_C05
    tElement* BTN00_C05_Elements[2]=

    BTN00_E09 (&B)、
    BTN00_E11、
    };
    tCycle BTN00_C05 =

    ui8NrOfElements,
    .pElements= BTN00_C05_Elements、
    };

    //时间周期:BTN00_C06
    tElement* BTN00_C06_Elements[2]=

    BTN00_E12、
    BTN00_E14、
    };
    tCycle BTN00_C06 =

    ui8NrOfElements,
    .pElements= BTN00_C06_Elements、
    };

    //时间周期:BTN00_C07
    tElement* BTN00_C07_Elements[2]=

    BTN00_E13、
    BTN00_E15、
    };
    tCycle BTN00_C07 =

    ui8NrOfElements,
    .pElements= BTN00_C07_Elements、
    };


    //
    //
    //! CapTIvate 传感器定义
    //! 此应用中的所有传感器定义如下。 传感器
    //! 利用原始测量数据创建的时间段组
    //! 抽象传感器类型、例如按钮、滑块、滚轮或接近传感器。
    //! 每个传感器有3个组件:
    //! 1)指向成员时间周期(tCycle *)的循环指针数组
    //! 2)传感器特定参数结构(tGenericSensorParams)
    //! 3) 3)传感器结构(TSENSOR)
    //
    //
    //传感器:BTN00
    const tCycle * BTN00_cycles[8]=

    BTN00_C00、
    BTN00_C01、
    BTN00_C02、
    BTN00_C03、
    BTN00_C04、
    BTN00_C05、
    BTN00_C06、
    BTN00_C07、
    };

    tButtonSensorParams BTN00_Params;
    TSENSOR BTN00 =

    //基本属性
    .TypeOfSensor = eButtonGroup、
    .SensingMethod = eProjecting、
    DirectionOfInterest = eDOIup、
    .pvCallback = NULL、
    .ui8NrOfCycles = 8、
    .pCycle = BTN00_cycles、
    .pSensorParams =(tGenericSensorParams*)&BTN00_Params、
    //转换控制参数
    ui16ConversionCount = 250、
    ui16ConversionGain = 100、
    .ui8FreqDiv = 1、
    .ui8ChargeLength = 0、
    ui8TransferLength = 0、
    .bModEnable = false、
    ui8BiasControl = 3、
    .bcsDischarge = true、
    .bLpmControl = false、
    .ui8InputSyncControl = 0、
    .bTimerSyncControl = false、
    .bIdleState = true、
    //调整参数
    ui16ProxThreshold = 12、
    ui16NegativeTouchThreshold = 30、
    ui16ErrorThreshold = 8191、
    ui16TimeoutThreshold = 1000、
    .ProxDbThreshold.DbIn = 1、
    .ProxDbThreshold.DbOut = 0、
    .TouchDbThreshold.DbIn = 1、
    .TouchDbThreshold.DbOut = 0、
    .bCountFilterEnable = false、
    ui8CntBeta = 2、
    .bSensorHalt = false、
    .bPTSensorHalt = true、
    .bPTElementHalt = true、
    ui8LTABTA = 7、
    .bReCalibrateEnable = true、
    };


    #if (CAPT_conducted_Noise_Immunity_enable=true)
    //
    //
    //! var g_EMCConfig
    //! 此结构存储此应用的 EMC 配置。
    //
    //
    CONST tEMCConfig g_EMCConfig =

    //转换样式
    selfmodeConversionStyle = CAPT_SELF MODE_CONVRAM_BUNVRACK_STACE_Style、
    .projModeConversionStyle = CAPT_PROJ_MODE_CONVERICE_STACE_Style、

    //过采样样式
    selfmodeOversamplingStyle = CAPT_self_mode_oversampling_Style、
    .projModeOversamplingStyle = CAPT_PROJ_MODE_OPAMPLING_Style、

    //抖动滤波器启用
    .bJitterFilterEnable = true、

    //噪声阈值和校准噪声限制
    ui8NoiseThreshold = CAPT_Noise_threshold、
    ui16CalibrationNoiseLimit = CAPT_CALIBRAT_Noise_Limit、
    ui8CalibrationTestSampleSize = 8、

    //动态阈值调整参数
    .bEnableDynamicThresholdAdjustment = CAPT_DYNAL_THRESHOLD_Adjustment、
    .ui8MaxRelThreshAdj = 76、
    ui8NoiseLevelFilterEntryThresh = 40、
    .ui8NoiseLevelFilterExitThresh = 0、
    ui8NoiseLevelFilterDown = 6、
    .ui8NoiseLevelFilterUp = 1、
    .coeffA =_IQ31 (0.0065)、
    .coeffB =_IQ31 (0.050)
    };
    #endif

    //
    //
    //! var g_pCapTIvateSensorArray
    //! 此数组允许对任何进行索引访问
    //! 传感器。
    //
    //
    TSENSOR* g_pCapTIvateSensorArray[CAPT_SENSOR_COUNT]=

    BTN00 (&B)、
    };


    //
    //
    //! var g_uiApp
    //! 此结构存储此应用程序的全局设置。
    //
    //
    tCapTIvateApplication g_uiApp =

    .state = eUIActive、
    .pSensorList =&g_pCapTIvateSensorArray[0]、
    ui8NrOfSensors = CAPT_SENSOR_COUNT、
    ui8AppLPM = CAPT_LOW_POWER_MODE、
    .bElementDataTxEnable = true、
    .bSensorDataTxEnable = false、
    .ui16ActiveModeScanPeriod = 12、
    ui16WakeOnProxModeScanPeriod = 100、
    .ui16InactivityTimeout = 32、
    ui8WakeupInterval = 5、
    };

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

    您好 Darren、

    我还需要布局。

    谢谢、

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

    您好、Ling、

    我非常感谢就此提供的任何指导。  感谢您的观看。  

    在侧注中、您将看到我也有1个 prox 元素。  本来应该有2个 prox 元素、但我在布局中犯了一个错误。

    Darren

    e2e.ti.com/.../Gerber-Output.zip

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

    您好 Darren、

    布局和配置文件看上去一切正常。

    您是否尝试将电路板连接到 CapTIvate 设计中心以查看通信是否正常?

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

    在软件中、您似乎不启用接近传感器。

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

    您好、Ling、

    我已经尝试了很多不同的电路板软件配置、比如移除 prox 传感器、使其成为1x4而不是4x4。  

    我已连接到 CapTIvate 设计中心。  我知道我的 EVM 板正在工作、因为我已将其与其他触摸板(BSWP 和64按钮)连接。  BSWP 运行良好。  64按钮一在开始时工作良好、然后根据我打开的 GUI、似乎有延迟。  我的板在 GUI 中通常不显示任何响应。  我通常说、因为我看到过某种接近类型的响应一次、但无法重复。

    我将重新测试并尝试收集更多信息。

    谢谢、

    Darren

     

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

    您好 Darren、

    你有更新吗?

    谢谢、

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

    您好、Ling、

    我已经解决了问题、但还没有很清楚什么是要突破的。  每次我更新 CapTIvate 设计中心项目时、我都会生成新项目代码、然后将其复制并粘贴到现有 CCS 工作区的位置。  电容式触控在我第一次以新项目的形式生成代码时起作用、然后执行 CCS 导入项目。  但是、如果我进行了第二次、第三次或第四次代码生成、生成方式为新项目(在 CapTIvate DC 中)、然后手动改写代码、则无法正常工作。

    现在、我可以通过使用 CapTIvate DC 中的更新现有工程并将其指向工程文件夹来使其正常工作。  

    执行此操作的正确方法在步骤3中进行了说明。   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_workshop.html

    感谢您检查所有内容。

    谢谢、

    Darren

      

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

    您好 Darren、

    很高兴听到这个问题得到解决、感谢大家分享调试体验。

    此致、