查看: 324|回复: 4

[GD32F190方案分享] GD32F190 小红板 - 传感触摸测试

[复制链接]

2

主题

0

好友

96

积分

童生

Rank: 2

该用户从未签到

发表于 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
回复

使用道具 举报

1

主题

1

好友

2667

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 17:29
  • 签到天数: 642 天

    [LV.9]以坛为家II

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

    使用道具 举报

    3

    主题

    0

    好友

    238

    积分

    秀才

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-10-25 14:09
  • 签到天数: 5 天

    [LV.2]偶尔看看I

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

    使用道具 举报

    2

    主题

    0

    好友

    96

    积分

    童生

    Rank: 2

    该用户从未签到

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

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

    使用道具 举报

    195

    主题

    3

    好友

    9627

    积分

    超级版主

    Rank: 8Rank: 8

    该用户从未签到

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-6 02:47 , Processed in 0.107803 second(s), 14 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部