After short break I welcome you to my next blog as part of Experimenting with Gesture Sensors. Since writing my previous blog Blog #10: C Library for Low-Level MAX25405 Control I completed my second project: gesture controlled Pacman with custom swipe gesture detection algorithm. But I will describe it later. Now I want to spend some time with describing secret features of the MAX25405 sensor which I found but they are not documented in the datasheet. I originally found them when I was experimenting with GUI program from Maxim. If you remember my third blog at the end I shown window with possibility to manually change register values of the MAX25405 Gesture Sensor:
I was looking to the window and possible configurations. Very quickly my attention targeted CSEL option with values in pico farads. Even before I received my Kit, I carefully read the device datasheet, but I did not remember any option with values in pico fard units. So, I went to the datasheet again and searched (Ctrl + F) for pico fards and the only occurrence I found in electrical specification: input pin capacitance which of course is not the thing which I was looking for. At this moment I realized that there are some secrecies, and this toy (GUI tool) is more powerful than I originally thought. It can give me a hint to some undocumented MAX25405 features.
Search for a hidden bits
For a searching the hidden registry bits that correspond to CSEL option I tried to select different options and see how the registry values change. Computed values are shown in left column of the window. Initial state of configuration registers was 0x04 0x02 0x24 0x8C 0x08 0x0F 0x0A.
CSEL field allows four values (indicating that it is most probably 2-bit field):
I changed value from default 0.133 pF to 0.26 pF, wrote the new value to the device and check the new register values. The only register which changed is AFE (analog frontend) configuration register which changed its value form 0x08 to 0x18. This means that bit number 4 (counted from 0 changed) changed from 0 to 1.
I changed value from 0.26 pF to 1pF and value of AFE configuration register changed from 0x18 to 0x28 which means that bit number 4 changed back from 1 to zero and bit number 5 changed from 0 to 1.
Lastly, I changed value from 1 pF to 2pF. New AFE register value was 0x38 which means that bits 4 and 5 were set to 1.
Now I know that CSEL value is configured using AFE register and more precisely it is located in 4th and 5th bits. In datasheet AFE register is visualized as follows:
And Now I know that bits 4 and 5 are not the dashes, but rather they are useful field. Experimentally I deduced Reset value as 0b00 and Access Type look as standard Read, Write field.
From GUI software combobox labels I also know that value 0b00 correspond to capacitance 0.133pF, value 0b01 correspond to capacitance of 0.26 pF, value 0b10 means 1pF and finally 0b11 means 2pF.
Now the secret CSEL field was disclosed.
Side note: Effect of CSEL on Measured Values
Because this feature was not described in the datasheet, I was of course interested what does it mean. From name and values we can see that it is most probably some configurable selectable capacitor somewhere on the analog signal path(s). I setup fixed scene and collected screenshot in all 4 CSEL possible configuration of the same scene. Effect of this field on measurements is visible. When you increase capacitor value you get lower negative (efficiently higher) output values but you also slightly reduce intensity of the measured values of the object. I think this bits are good for supressing background objects. On the following picture you can see outputs for each of possible configurations: