查看: 2981|回复: 4

GD32F190 小红板 - 传感触摸测试

[复制链接]

该用户从未签到

发表于 2016-5-14 13:46:29 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 糖悦之果飞 于 2016-5-16 15:26 编辑

废话不多说,先焊接两个电容上去,采样电容我焊接的15pF(测试后觉得5pF效果应该才会比较好),通道电容焊接10nF,采样脚找根导线连接一枚硬币,硬件准备工作这样就可以了。

下面上代码 -_-

初始化代码如下:
/*****************************************************************************//*!
* @brief           touch modle init .
*               
* @param   none
*
* @return  none
*
* @ Pass/ Fail criteria: none
*****************************************************************************/

void TouchInit(void)
{
        /* Configure the GPIO ports */
    GPIO_InitPara  GPIO_InitStructure;
        
        RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_TSI, ENABLE);
        
        /* Connect PXx to USARTx_Tx */
    GPIO_PinAFConfig(GPIOB, GPIO_PINSOURCE0, GPIO_AF_3);
    /* Connect PXx to USARTx_Rx */
    GPIO_PinAFConfig(GPIOB, GPIO_PINSOURCE1, GPIO_AF_3);

    /* Configure USART Rx/Tx as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin     = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_InitStructure.GPIO_Mode    = GPIO_MODE_AF;
    GPIO_InitStructure.GPIO_Speed   = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType   = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd    = GPIO_PUPD_NOPULL;
    GPIO_Init(GPIOB , &GPIO_InitStructure);
        
        TSI->CTLR = TSI_CTCDIV_1 |
                                TSI_CTDT_2CTCLK |
                                TSI_CDT_2CTCLK |
                                TSI_SOFTWARE_TRIGGLER |
                                TSI_RISING_EDGE_TRIGGLER |
                                TSI_MCN_4095_CYCLE;
        //disable int
        TSI->IER = 0;
        //clear int flag
        TSI->CEFR = 0x03;
        //
        TSI->PHMR = 0;
        //switch control
        TSI->ASWR = 0;
        //enable group
        TSI->GCTLR = 0x04;
        //Sample Pin set
        TSI->SPR = TSI_GROUP3_PIN2;
        //Channel Pin set
        TSI->CPR = TSI_GROUP3_PIN3;
        
        TSI_Enable( ENABLE);
}

然后再主循环中检查是否检测结束并处理,,转换频率不要太高,不然处理起来会十分麻烦,我用的100ms开启一次。

检测代码如下:
/*****************************************************************************//*!
* @brief           touch modle check .
*               
* @param   none
*
* @return  none
*
* @ Pass/ Fail criteria: none
*****************************************************************************/

void TouchCheck(void)
{
        uint32_t ChCycle;
        
        if(bPulse_100ms)
        {
                //clear int flag
                TSI->CEFR = 0x03;
                TSI_StartAcquisition( ENABLE );
        }
        
        if(TSI->STR)
        {
                ChCycle = TSI->GXCYCNR[2];
                TSI->CEFR = 0x03;
               
                if(ChCycle < 0xC0)
                {
               
                }               
        }

}

这只是个简单的测试代码,找张纸盖在硬币上,用手去按,ChCycle的数据会变小。
具体变化量和电容容量和温度有关,实际应用还要处理一下,不能定值比较。

QQ截图20160514133145.png
回复

使用道具 举报

  • TA的每日心情

    2021-12-7 12:35
  • 签到天数: 1354 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-5-15 22:48:27 | 显示全部楼层
    写的好,下载下来,参考和学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-6-6 13:23
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-5-16 09:32:32 | 显示全部楼层
    焊上引脚,外扩的洞洞板上来做实验吧,这样好浪费费主板上的开孔哦。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2016-5-16 12:07:33 | 显示全部楼层
    wolfgang2015 发表于 2016-5-16 09:32
    焊上引脚,外扩的洞洞板上来做实验吧,这样好浪费费主板上的开孔哦。

    没关系,测试而已,不用了烫下来就可以...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-19 16:39
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-5-31 15:16:49 | 显示全部楼层
    文章不错,将内容去经验频道一并发一下,可以有双重奖励哟http://jingyan.eeboard.com/
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-28 07:20 , Processed in 0.157554 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.