I'm looking for a similar solution, but without the use of the ISP/RESET pins.
I have an active serial connection to the LPC802 from another board which I want to use to send new software updates to the LPC802, but I do not have access to the ISP/RESET pins on the LPC802.
It appears that I can use IAP commands to put the device into ISP mode using the "Reinvoke ISP" command. (Section 4.6.8 in the
UM11045 document)
Table 35. Reinvoke ISP
Command Compare
Input Command code: 57 (decimal)
Param0(mode): ISP interface selection
1 - USART ISP
Status code ERR_ISP_REINVOKE_ISP_CONFIG
Result None.
Description This command is used to invoke the ISP. If the ISP is invoked, then the CPU clock is switched to FRO.
This command is used to invoke the boot loader in ISP mode. It maps boot vectors and configures the peripherals for ISP.
This command may be used when a valid user program is present in the internal flash memory and the ISP entry pin are not accessible to force the ISP mode.
If using USART ISP mode, enable the clocks to the default before calling this command.
I have a simple glob of code which just does:
__disable_irq();
IAP.cmd = IAP_REINVOKE_ISP;
IAP_Call(&IAP.cmd, &IAP.stat); // Make the IAP call to reinvoke ISP
But it doesn't seem to properly enter ISP mode.
I can make similar IAP calls to successfully read the UID, Boot Code version number and the Part Identification number, so the IAP calls do work.
But, I don't seem to be able to enter ISP mode.
Using a Windows computer, I can use Flash Magic to successfully connect to my device when I press and hold the ISP button, press and release the RESET button and then release the ISP button. But, when I command the device into ISP mode via a serial message which invokes the code above (
and then quickly close PuTTY and start a query from Flash Magic) I cannot connect/synchronize.
Any ideas? Does it have something to do with the line which says: "If using USART ISP mode, enable the clocks to the default before calling this command."?