Cypress触摸芯片自己做的demo 代码

编程入门 行业动态 更新时间:2024-10-25 16:27:06

Cypress触摸<a href=https://www.elefans.com/category/jswz/34/1769159.html style=芯片自己做的demo 代码"/>

Cypress触摸芯片自己做的demo 代码

1.前言

(1)cyprees芯片主要是可以做一些触摸的检测并实现一些IO输出,使用的工具psoc creater
(2)psoc creater 可以i直接通过GUI的方式配置一些GPIO的状态以及集成的功能模块,编译后,我们可直接通过include 对应的头文件后,可在主函数中直接调用相关的接口,基本不怎么编写代码了

2.工程使用逻辑

  • 如下图为工程主界面:

    • topDesign:可以从右边拖一些关键的功能过来,并配置一些基础参数
    • PIN: 对一些功能进行功能进行对应的管脚进行对应
  • 对上图进行详细介绍说明的
    – 一个capsense 进行触摸检测
    – 6个led灯

  • capsense的配置截图如下:

  • led的配置如下: 注意不要勾选HW connection


  • 点击生成:

3.主函数逻辑

完成如上配置后,点击编译后会出现自动声场相关功能模块,我们需主要在main函数中进行编辑即可:

#include "CapSense.h"
#include "project.h"#define LED_ON						(0u)
#define LED_OFF						(1u)
void LED_Write(uint8 value);
uint8 LED_Read(void);uint8   LED1_Read(void);
void    LED1_Write(uint8 value);uint8   LED2_Read(void);
void    LED2_Write(uint8 value);
uint8   LED3_Read(void);
void    LED3_Write(uint8 value);
typedef enum
{SENSOR_SCAN = 0x01u,                WAIT_FOR_SCAN_COMPLETE = 0x02u,     PROCESS_DATA = 0x03u,               
} DEVICE_STATE;int main(void)
{CyGlobalIntEnable; /* Enable global interrupts. *//* Place your initialization/startup code here (e.g. MyInst_Start()) *//* Start CapSense block - Initializes CapSense Data structure and performs first scan to set up sensor baselines */DEVICE_STATE currentState = SENSOR_SCAN;  CapSense_Start();/* Scan all widgets *///CapSense_ScanAllWidgets();for(;;){/* Place your application code here. *//* Place your application code here. *//* Do this only when a scan is done *//* Process all widgets */CapSense_ProcessAllWidgets();/* Include Tuner */ // CapSense_RunTuner(); /* Scan result verification */if (CapSense_IsAnyWidgetActive()){/* Add any required functionalitybased on scanning result*/}/* Start next scan */switch(currentState){case SENSOR_SCAN:/* Initiate new scan only if the CapSense block is idle */if(CapSense_NOT_BUSY == CapSense_IsBusy()){#if ENABLE_TUNER/* Update CapSense parameters set via CapSense tuner before the beginning of CapSense scan */CapSense_RunTuner();#endif/* Scan widget configured by CSDSetupWidget API */CapSense_ScanAllWidgets();/* Set next state to WAIT_FOR_SCAN_COMPLETE  */currentState = WAIT_FOR_SCAN_COMPLETE;}break;case WAIT_FOR_SCAN_COMPLETE:/* Put the device to CPU Sleep until CapSense scanning is complete*/if(CapSense_NOT_BUSY != CapSense_IsBusy()){CySysPmSleep();}/* If CapSense scanning is complete, process the CapSense data */else{currentState = PROCESS_DATA;}break;case PROCESS_DATA:/* Process data on all the enabled widgets */CapSense_ProcessAllWidgets();/* Controls LEDs Status based on the result of Widget processing. *///LED_Control();LED_Write(CapSense_IsWidgetActive(CapSense_BUTTON0_WDGT_ID ) ? LED_OFF : LED_ON );LED1_Write(CapSense_IsWidgetActive(CapSense_BUTTON1_WDGT_ID ) ? LED_OFF : LED_ON );LED2_Write(CapSense_IsWidgetActive(CapSense_BUTTON2_WDGT_ID ) ? LED_OFF : LED_ON );LED3_Write(CapSense_IsWidgetActive(CapSense_BUTTON3_WDGT_ID ) ? LED_OFF : LED_ON );LED4_Write(CapSense_IsWidgetActive(CapSense_BUTTON4_WDGT_ID ) ? LED_ON : LED_OFF );LED5_Write(CapSense_IsWidgetActive(CapSense_BUTTON5_WDGT_ID ) ? LED_ON : LED_OFF );/* Set the device state to SENSOR_SCAN */currentState = SENSOR_SCAN;  break;  /******************************************************************** Unknown power mode state. Unexpected situation.******************************************************************/    default:break;} //CyDelay(10);}
}

4.程序下载

  1. 编译工程完成HEX文件
  2. 打开psoc programmer 软件,选择对应的芯片iC,选中hex文件,点击下载:
  3. 使用效果如下
  4. 按下去的时候灯光灭掉,松手灯光亮起来

结论

本文通过查找简单的工程代码实现了一个触摸控制灯光亮灭场景。如有任何问题评论区交流。

更多推荐

Cypress触摸芯片自己做的demo 代码

本文发布于:2023-06-29 03:43:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/938541.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:芯片   代码   Cypress   demo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!