Same data on every touch button issue with CY8CMBR106S

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

cross mob
AmSa_4559391
Level 1
Level 1

Hi Folks,

I am using CY8CMBR106S for capacity touch sensing. CY8CMBR106S is communicating with STM32 controller via I2C protocol.

As per datasheet default slave address is 0x37. but with me it is communicating on 0x6F (After several attempt).

We are using all 16 touch pins, 10 as button & 5 as slider v 1 is used as for shield.

When I touch the buttons we get interrupt after that I ll go for read the i2C bus. for every switch we are getting the same data. Now my wild guess is in my testing may be I changed the register configuration, Is there anyway we can set the default data on CY8CMBR106S.

Or may be I am missing something.

Please help me with this.

Thanks in advance.SampathS_11

0 Likes
1 Solution

We recommend you to perform system diagnostics test as described in the System Diagnostics section in Pg 50 of MBR3 CapSense design guide and let us know if all the tests pass successfully.

https://www.cypress.com/file/46366/download

If you are using EZ-Click  software  you can use the System diagnostics tab:

You can use the CapSense Output tab to monitor the capsense raw count information. Touch the buttons and see if the sensor ON status becomes one accordingly. Please provide us graphs of the raw counts, baseline of each of the buttons.

In case you do not have ezClick software, then you can use the following registers to monitor the CapSense data.

pastedImage_2.png

First set the debug_sensor_ID as the sensor you wish to monitor.

You can read the registers 0xdd, 0xde, 0xde , 0xe0 and 0xe2 to debug the CapSense data. Please use some data logging tool to send us the raw count information (without touch and with touch).

Whenever you touch a button, the corresponding bit is set to 1 in the BUTTON_STAT register. You need to poll the register in the host controller to know about the touch status.

We recommend you to use EZClick software to generate the config file (Configuration -> Generate Configuration) and use this file (project.h) to load the configuration into the mbr3 device from the host.

Let us know if you have any queries.

Regards,

Bragadeesh

Regards,
Bragadeesh

View solution in original post

0 Likes
7 Replies
BragadeeshV
Moderator
Moderator
Moderator
First question asked 1000 replies posted 750 replies posted

Hi amsa_4559391​,

MBR3 device has different operating states (Refer mbr3 design guide/ mbr3 datasheet). It spends most of its time in sleep mode (which is configurable). Hence, when the master/ host devices sends an I2C transaction, some dummy bytes is required to wake up the device. That is why you might have to send some dummy bytes to wake up the device.

The I2C  slave address is a 7 bit address. Therefore when you want to read you will set the LSB to 1 (refer nxp i2c spec).  Therefore the device address is 0x37 (0b0110111) and when you want  to read the 8 bit value becomes 0x6F (01101111).

Could you please provide more details of the issue? Whenever you touch any button, BUTTON_STAT register reports the same value? Did you also check the LATCHED_BUTTON_STAT that has the latched copies of set bits in BUTTON_STAT since the last time LATCHED_BUTTON_STAT was cleared.

Regards,

Bragadeesh

Regards,
Bragadeesh
0 Likes

Hi BragadeeshV_41

Thanks for your replay..

In our design we are using CS5 for shield.

I config BUTTON_STAT value is 0xF8 LATCHED_BUTTON_STAT value is 0x0C. So now the issue is i am getting the same data for some buttons.

for ex. CS4 data is (0x1F,0x00,0x00,0x00,0xFF,0xFF,0x2D,0x2D)

& CS6 data is (0x1F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x2D)

now CS6 also given the CS4 data. can you tell me what I did wrong in this case.

0 Likes

Hi AmSa_4559391​,

BUTTON_STAT and LATCHED_BUTTON_STAT are read only registers that reports whether a button is touched or not. So, you should not write into these registers. To configure buttons you need to enable using SENSOR_EN register.

for ex. CS4 data is (0x1F,0x00,0x00,0x00,0xFF,0xFF,0x2D,0x2D)

& CS6 data is (0x1F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x2D)

Let us know what register are you reading?

Regards,

Bragadeesh

Regards,
Bragadeesh
0 Likes

Hi Bragadeesh,

As per our last discussion, BUTTON_STAT & LATCHED_BUTTON_STAT are only read register. So I tried to read both of them but My issue is for CS01 touch key, I am getting the different data every time this is happening with every other button.

these are configuration:

SENSOR_ENABLE = 0x1F, 0xF8 (because CS5 is shield which we make it disable)

SPO_CONF = 0x24

Can you tell me what is the issue.

0 Likes

We recommend you to perform system diagnostics test as described in the System Diagnostics section in Pg 50 of MBR3 CapSense design guide and let us know if all the tests pass successfully.

https://www.cypress.com/file/46366/download

If you are using EZ-Click  software  you can use the System diagnostics tab:

You can use the CapSense Output tab to monitor the capsense raw count information. Touch the buttons and see if the sensor ON status becomes one accordingly. Please provide us graphs of the raw counts, baseline of each of the buttons.

In case you do not have ezClick software, then you can use the following registers to monitor the CapSense data.

pastedImage_2.png

First set the debug_sensor_ID as the sensor you wish to monitor.

You can read the registers 0xdd, 0xde, 0xde , 0xe0 and 0xe2 to debug the CapSense data. Please use some data logging tool to send us the raw count information (without touch and with touch).

Whenever you touch a button, the corresponding bit is set to 1 in the BUTTON_STAT register. You need to poll the register in the host controller to know about the touch status.

We recommend you to use EZClick software to generate the config file (Configuration -> Generate Configuration) and use this file (project.h) to load the configuration into the mbr3 device from the host.

Let us know if you have any queries.

Regards,

Bragadeesh

Regards,
Bragadeesh
0 Likes

Hi BragadeeshV_41​,

Finally i found the issue, with your help but now i have some more issue,

when ever I use FSS register IC stop sensing the touch. So Can you tell me how to use this register

Second issue is, some time same switch stat given the different switch value, as of now I don't know why this is happening

Now I have MBR demo kit can you tell me how we can attached our hardware with this kit so we can see the real value & click-ez tool.

0 Likes

Hi AmSa_4559391​,

Flanking sensor suppression feature distinguishes among sensor touches from closely-spaced buttons, thus eliminating false touches.It ensures that the system recognizes only the first button touched when multiple sensors are touched. FSS ensures that only one button is reported as ON at any time.

This feature can be turned ON or OFF for each sensor using the FSS_EN (0x02) register.

Refer to the MBR3 CapSense design guide for more information on FSS feature.

Does your design have buttons placed close to each other? (ie) when one button is touched, is the second sensor also partially/ completely touched? There are also chances that if your buttons are oversensitive, touching one button might trigger the adjacent button (if they are placed closed to each other).

What is the spacing between the different buttons in your design?

Observe the difference counts vs the finger threshold for the all the buttons while touching each of the buttons. The sensor status will return ON whenever the difference counts crosses the finger threshold + hysteresis. If you observe the sensors are false triggering when touching some other button, then you need to perform the above exercise and re-tune your buttons for optimum sensitivity.

Regards,

Bragadeesh

Regards,
Bragadeesh
0 Likes