KL03Z Will Only Boot After Short to nRST

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KL03Z Will Only Boot After Short to nRST

515 Views
james5
Contributor I

I have a new version of a board (that worked fine) that won't boot from power up unless I short nRST physically.  Then, about 5 seconds later, it will boot.  Using the debugger, everything seems to work OK.

I have also noticed that there is about 2.5V on the NMI pin, though that is not coming from the circuit (I have removed a resistor so that it's just the pin that is driving that).  I mention it because NMI can be involved in the boot sequence.

Once I short nRST and it boots, then the circuit works as expected.  It goes to sleep in mode VLLS3 and wakes up as expected.  But it won't boot on the initial power up.

Any ideas?

James.

0 Kudos
2 Replies

387 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi James,

KL03 hasn't nRST pin. Do you mean RESET_b? Do you mean you must connect RESET_b to VDD?

There is a KL series MCU quick reference https://www.nxp.com/webapp/Download?colCode=KLQRUG&location=null 

Please see 2.1.3.4.1 and check if RESET_b and NMI_b connection is correct.

Regards,

Jing

0 Kudos

387 Views
james5
Contributor I

Yes I meant RESET_b, the active LOW reset signal.  I have a pull-up on RESET_b and that seems to work fine.  The previous version of the board worked perfected and it's a very low noise application.  The board is NOT resetting when not expected (as you would expect if there was noise on RESET_b).

The intention is to use the NMI_b pin as an analog input and there is a resistor divider on the pin.  For now, I've removed the top resistor so there is just a 100K resistor to GND.  This circuit was on a different pin on the previous version of the circuit.

My understanding is that you can disable the NMI_b pin completely and I've tried to do this by writing 0x39 to the FOPT flash configuration register.  My understanding is that value should ignore the NMI_b pin during boot and force booting from flash.

To do this I edited the flash_config value in startup_mkl03z4.c:

__attribute__ ((used,section(".FlashConfig"))) const struct {
    unsigned int word1;
    unsigned int word2;
    unsigned int word3;
    unsigned int word4;
} Flash_Config = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF39FE};

Initially the last word was 0xFFFF3BFE and that worked without issue on previous board.

Cheers,

James

0 Kudos