I have a board with a K10 processor which was returned by a customer and I'm trying to track down the root cause of the issue. Most boards of this design work OK, but it's not yet clear whether we have a hardware or software or even a silicon problem. Looking for suggestions how to isolate the issue further.
Processor is MK10DX256VLH7. Using the Freescale MQX RTOS.
We're using the LLWU module to put the board to sleep or wake it up according to certain signals mapped to GPIO pins (specifically a keypad and an accelerometer). Basically the board should wake up whenever a button is pressed or the assembly is moved. When the board goes to sleep (due to inactivity), we use this MQX function to put the processor into the LLS low-power state:
_lpm_set_operation_mode( LPM_OPERATION_MODE_STOP );
We have the pins LLWU_P0, LLWU_P1, LLWU_P2, and LLWU_P4 set up as wake-up event sources during the low-power state.
Description of the problem:
The pins LLWU_P0, LLWU_P1, LLWU_P2 (all on Port E) do not work as wake-up event sources, but the pin LLWU_P4 (Port A) does work.
We’ve verified that the buttons are generating the expected negative edge which should trigger the wake-up. All of these pins do work as interrupt sources when the board is awake..
On the other hand, pins LLWU_P0 and LLWU_P1 sometimes cause spurious wake-ups: that is they cause wake-up events even though the keypad button connected to these pins has not been pressed. These pins are pulled up to a certain power supply when sleeping, and we have looked for glitches on that power supply that might be causing the spurious wake-ups, but we haven't found any.
We've also tried disabling LLWU_P0 and LLWU_P1 as direct wake-up sources, and hooked up the filters (LLWU_FILT1 and LLWU_FILT2) to those pins instead, and set them up as wake-up sources. In that case we found that the spurious wake-ups don’t happen anymore, but the buttons still do not cause the expected wake-up when pressed.
If anyone has ideas what else we might try to track down this issue, please let me know! Thanks for reading this.