/* stat update program */
while (1)
{
if (u8CAN_PackageFlag)
{
u8CAN_PackageFlag = 0;
Address = inpw(&rrMsg.Data);
Data = inpw(&rrMsg.Data[4]);
if (Address == CMD_GET_DEVICEID)
{
outpw(&rrMsg.Data[4], SYS->PDID);
}
else if (Address == CMD_READ_CONFIG)
{
outpw(&rrMsg.Data[4], FMC_Read(Data));
}
else if (Address == CMD_RUN_APROM)
{
break;
}
else
{
if ((Address % FMC_FLASH_PAGE_SIZE) == 0)
{
FMC_Erase(Address);
}
FMC_Write(Address, Data); //program ROM
Data = FMC_Read(Address);
memcpy(&rrMsg.Data[4], &Data, 4); //update data
}
CAN_Package_ACK(CAN1); //send CAN ISP Package (ACK)
}
}
_APROM:
SYS->RSTSTS = (SYS_RSTSTS_PORF_Msk | SYS_RSTSTS_PINRF_Msk);
FMC->ISPCTL &= ~(FMC_ISPCTL_ISPEN_Msk | FMC_ISPCTL_BS_Msk);
SCB->AIRCR = (V6M_AIRCR_VECTKEY_DATA | V6M_AIRCR_SYSRESETREQ);
/* Trap the CPU */
while (1);
|