LPC11C22 - start user program through CAN boot loader

Discussion created by lpcware Employee on Jun 15, 2016
Latest reply on Jun 15, 2016 by lpcware
Content originally posted in LPCWare by kitt on Thu Nov 21 08:14:13 MST 2013
Hello all,

we've seem to have run into a problem with starting a (valid) user program through the CAN ISP boot loader.

Our current design consists of an LPC11C22 with both PIO0_1 and PIO0_3 pulled to ground. Upon powerup, the LPC11C22 successfully enters the CAN boot loader mode and is responsive to commands sent from another LPC17xx board over the CAN bus. However, the final step - actually booting user code - is not happening.

First of all my CAN command and response sequence sent on the CAN bus:

> [0x67D] [0x2B 0x00 0x50 0x00 0x5A 0x5A 0x00 0x00] // unlock flash
< [0x5FD] [0x60 0x00 0x50 0x00 0x00 0x00 0x00 0x00]
> [0x67D] [0x23 0x70 0x50 0x01 0x00 0x00 0x00 0x00] // set execution address
< [0x5FD] [0x60 0x70 0x50 0x01 0x00 0x00 0x00 0x00]
> [0x67D] [0x2F 0x51 0x1F 0x01 0x01 0x00 0x00 0x00] // 'Go'
< [0x5FD] [0x60 0x51 0x1F 0x01 0x00 0x00 0x00 0x00]

We've verified the sequence above by using a logic analyser behind the CAN transceiver on the LPC17xx board.

Some additional comments:
* if we lift PIO0_1 before powerup the user program is successfully started
* normally PIO0_1 is never lifted when issueing the commands above, nor is PIO0_3. We tried lifting PIO0_1, but that didn't seem to help anyways.
* We can successfully read the part ID when sending
> [0x67D] [0x40 0x18 0x10 0x02 0x00 0x00 0x00 0x00]
< [0x5FD] [0x43 0x18 0x10 0x02 0x2B 0x10 0x31 0x14]

Are we missing something or should this work?