Other Parts Discussed in Thread: MSPM0L1304, MSPM0L1306
Hi,
we are working on an application for the MSPM0L1304 (using an LP-MSPM0L1306 for development) that would ideally use all available wakeup pins. However, I have noticed that when I set up PA0 to wake up when high, the MCU wakes up even when the pin is low.
For verification, I have reproduced the same issue by modifying the sysctl_shutdown
example from the SDK.
I will list the steps I have used to reproduce the issue:
- Install the following: Ubuntu 22.04, Code Composer Studio 12.5.0.00007, ARM GCC 10.3-2021.10, MSPM0 SDK 1.20.00.05
- Import the example
sysctl_shutdown_LP_MSPM0L1306_nortos_gcc
from the SDK - Click Flash, and observe the normal behaviour of this example. The red LED blinks once, then pressing the button on PA18 wakes up the MCU and produces an increasing number of blinks on the red LED.
- Modify the syscfg file to use PA1 as
USER_SWITCH_1
- Add a jumper between PA1 and GND, leaving J9 in place as a pullup resistor
- Flash the updated firmware
- The expected behaviour is observed once more, where the MCU goes into shutdown mode, but removing the additional jumper causes a wakeup.
- Modify the syscfg file to use PA0 as
USER_SWITCH_1
- Move the jumper to connect GND and PA0 instead, remove J2, but leave J10 in place once again
- Flash the updated firmware
- The MCU no longer appears to enter shutdown mode, blinking indefinitely. This happens regardless whether the jumper is in place or not. I think it is indeed entering shutdown mode, but it is waking up immediately.
From what I understand from the datasheet, both PA1 and PA0 should have wakeup support, as they are both 5V tolerant open drain IO pins. I have checked the errata sheet, as revised in April 2023, but I can't find anything relevant.
Interestingly, it does work when the pin is configured to wake on low, it works in our application code as well as the example.
We do have workarounds, but it would increase the BOM cost of the finished product.
Please find attached an archive of the modified example code, as well as the compiled binary.
How can we use the wake on high level function on the PA0 pin?
Thank you for your help!
Balint