- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi: I am using CY8CMBR3108 and, because the touch sensors become too sensitive after some time, I periodically send a RESET (CNTRL_CMD with 0xFF) command to it. However, for some reason (ESD?) I already had the situation that one (twice) or all (3 times) sensors of my product stopped working. The automatic RESET doesn't recover it. Only if I turn off the power and restart the unit, the sensors are back and all works.
After power-up I send the configuration that you see below in this post.
I find it very strange that, if after RESET (without power-off) I repeat the same configuration sequence (that is always performed after power-up), then no sensor is working. It is strange that the IC only accepts the configuration once after power-up!!!
The Power-up sequence is:
WriteToCs(SENSOR_EN, 0x001B, 2);
WriteToCs(FSS_EN, 0x0000, 2);
WriteToCs(GPO_OUTPUT_STATE, 0x1B, 1);
WriteToCs(BASE_THRESHOLD0, 200, 1);
WriteToCs(BASE_THRESHOLD1, 200, 1);
WriteToCs(FINGER_THRESHOLD2, 200, 1);
WriteToCs(FINGER_THRESHOLD4, 200, 1);
WriteToCs(DEVICE_CFG0, 0x00, 1);
WriteToCs(DEVICE_CFG2, 0x14, 1);
WriteToCs(SENSITIVITY0, 0xCF, 1);
WriteToCs(SENSITIVITY1, 0x03, 1);
WriteToCs(REFRESH_CTRL, 1, 1);
WriteToCs(CTRL_CMD, 3, 1);
nack = 1;
Delay(C100_MS);
while (nack)
{
nack = CsdRead(CALC_CRC,buff,2);
Noop();
}
val = buff[1];
val <<= 8;
val += buff[0];
WriteToCs(CONFIG_CRC, val, 2);
WriteToCs(CTRL_CMD, 2, 1);
Delay(C100_MS);
nack = CsdRead(CTRL_CMD_STATUS, buff, 1);
Can somebody help?
Solved! Go to Solution.
- Labels:
-
Sensing Technologies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The execution flow that you have followed is right, and there is no difference between power cycle, XRES or software reset.
Can you try running this flow after a delay whenever SW_Reset is performed so that the device boots up and registers are loaded to RAM correctly?
Also, is the logic confirming if CTRL_CMD_STATUS is returning '0' after the flash write?
You need to issue a software reset, by sending FF to CTRL_CMD register once the data is saved to flash (CTRL_CMD_STATUS returning '0') before the code starts executing. Please confirm if this is being done.
Best regards,
Hari
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The execution flow that you have followed is right, and there is no difference between power cycle, XRES or software reset.
Can you try running this flow after a delay whenever SW_Reset is performed so that the device boots up and registers are loaded to RAM correctly?
Also, is the logic confirming if CTRL_CMD_STATUS is returning '0' after the flash write?
You need to issue a software reset, by sending FF to CTRL_CMD register once the data is saved to flash (CTRL_CMD_STATUS returning '0') before the code starts executing. Please confirm if this is being done.
Best regards,
Hari