Announcements

Equip yourself to optimize PSoc4 MCUs for Evs at the EV Webinar. Click here to register.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 4 Forum Discussions

Sanket24
Level 1
Level 1
5 replies posted 10 sign-ins 5 sign-ins

Hello all,

Currently i am developing software for USB-HID Touchpad.

I tested USB-HID code on CY8CKIT-041-40XX which is working fine for I2C communication.

I am using CY8C4247 AZI-L445 for my finalized project. I want to make HID touchpad using CSX(mutual capacitance) method, because of multi finger touch we need mutual capacitance.

L445 IC is not having Gesture feature, because of that i need to take touch sense without using Gesture feature

I saw the CSX method for trackpad but in almost examples Gesture is already added.

so, I want to make touchpad development based on getting touch sense data without gesture on trackpad using CSX method. After that this all over data sends to the host using USB protocol.

Please suggest, reference document and and Program code to implement and proceed further.

 

Thank you for response,

Sanket More ,

India

0 Likes
5 Replies
PandaS
Moderator
Moderator
Moderator
50 solutions authored 100 replies posted 100 sign-ins

Hi @Sanket24 ,

Did you try using the following API: uint32 CapSense_GetXYCoordinates (uint32 widgetId)

This function reports a touch position (X and Y coordinates) value of a specified touchpad widget by extracting information from the wdgtStatus registers (CapSense__POS_Y_VALUE). This function should be used only with the touchpad widgets. This function does not process the widget, but extracts processed results from the Data Structure.

Returns the touch position of a specified touchpad widget:
1. If a touch is detected:
    a. Bits [31..16] indicate the Y coordinate.
    b. Bits [15..0] indicate the X coordinate.
2. If no touch is detected or a wrong widgetId is specified: CapSense_TOUCHPAD_NO_TOUCH.

In order to process the widget, you should call:  cystatus CapSense_ProcessWidgetExt(uint32 widgetId, uint32 mode).

The basic flow should be:

Capsense_Start();
Capsense_InitializeAllBaselines();
Capsense_ScanAllWidgets();

for(;;){
   CapSense_UpdateAllBaselines();
   if(!Capsense_IsBusy()){
      uint32 pos = CapSense_GetXYCoordinates(/*Your TouchPad_WdtId*/);
   }
   CapSense_ScanAllWidgets();
}

Warm regards

Sobhit

0 Likes
Sanket24
Level 1
Level 1
5 replies posted 10 sign-ins 5 sign-ins

Thanks for support,

I have query regarding , setup in CSX block. what are the changes should i need to do.

Sanket more,

India

0 Likes
PandaS
Moderator
Moderator
Moderator
50 solutions authored 100 replies posted 100 sign-ins

Hi @Sanket24 ,

Do you want to know the configurations required to be made in the CapSense Component Block for the top design?

Warm regards

Sobhit

 

0 Likes
PandaS
Moderator
Moderator
Moderator
50 solutions authored 100 replies posted 100 sign-ins

Hi @Sanket24 ,

Please let us know if you followed these initial steps:

  1. I expect you are using PSoC Creator 4.4.
  2. In the Top design you need to choose CapSense v7.0 from Component Catalog. 
  3. Add a widget Touchpad. Selesct sensing mode to be CSX and choose the number of Sensing elements.

PandaS_0-1672921407744.png

Next part is tuning:

Refer to CapSense Design Guide - https://www.infineon.com/dgdl/Infineon-AN85951_PSoC_4_and_PSoC_6_MCU_CapSense_Design_Guide-Applicati...

For Touchpad Tuning refer: Section 5.3.2.6 and 5.3.3.5 

 

Thanks and regards

Sobhit

0 Likes
Sanket24
Level 1
Level 1
5 replies posted 10 sign-ins 5 sign-ins

Thanks for response,

but, I want to get advanced setup for CSX method

@PandaS 

0 Likes