123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- #include "DSP2803x_Device.h" // DSP2803x Headerfile Include File
- #include "DSP2803x_Examples.h" // DSP2803x Examples Include File
- #include "Flash2803x_API_Library.h"
- void CanReceive(void);
- void CanSend(void);
- extern int16 FlashErase(void);
- extern int16 FlashDataCopy(unsigned char *buffer,int16 len);
- struct CANMBOX_USER_REGS CanMboxUserRegsT;
- void CanMaster(void)
- {
- CanReceive();
- CanSend();
- }
- void CanReceive(void)
- {
- int16 j = 0;
- static int16 count = 0;
- static int16 i = 0;
- struct CANMBOX_USER_REGS CanMboxTempRegs;
- CanMboxTempRegs = ECanMboxRead();
- if (CanMboxTempRegs.MboxRxFlg == TRUE)
- {
- //----------------------------------------------------------------------------------
- if (CanMboxTempRegs.MboxID == SHAKE_FIR_REC)
- {
- if (CanMboxTempRegs.MboxWord2 == 0x5a5a && CanMboxTempRegs.MboxWord3 == 0xa5a5
- && CanMboxTempRegs.MboxWord4 == 0x5a5a)
- {
- BootStatus.HexRow = CanMboxTempRegs.MboxWord1;
- BootStatus.WorkStatus = FALSE;
- BootStatus.SendNum = SEND_NULL;
- BootStatus.Reboot = BOOT_SHAKE_SUCCESS;
- if(FlashErase() == STATUS_SUCCESS)
- {
- BootStatus.WorkStatus = TRUE;
- BootStatus.SendNum = SHAKE_SEC_SEND;
- }
- else
- {
- BootStatus.SendNum = SEND_NULL;
- BootStatus.WorkStatus = FALSE;
- }
- }
- }
- //----------------------------------------------------------------------------------
- if(CanMboxTempRegs.MboxID == SHAKE_SEC_REC)
- {
- if (CanMboxTempRegs.MboxWord1 == 0x5a5a && CanMboxTempRegs.MboxWord2 == 0xa5a5
- && CanMboxTempRegs.MboxWord3 == 0x5a5a && CanMboxTempRegs.MboxWord4 == 0xa5a5)
- {
- BootStatus.WorkStatus = TRUE;
- BootStatus.SendNum = SHAKE_SEC_ACK;
- }else
- {
- BootStatus.WorkStatus = FALSE;
- BootStatus.SendNum = SEND_NULL;
- }
- }
- //----------------------------------------------------------------------------------
- if((CanMboxTempRegs.MboxID & DATA_REC_SEND) == DATA_REC_SEND)
- {
- if(CanMboxTempRegs.MboxID == DATA_REC_SEND)
- {
- BootStatus.LineId = CanMboxTempRegs.MboxWord1;
- BootStatus.LineDataLen = CanMboxTempRegs.MboxWord2;
- }else if(CanMboxTempRegs.MboxWord1 == 0x5a5a && CanMboxTempRegs.MboxWord2 == 0xa5a5 &&
- CanMboxTempRegs.MboxWord3 == 0x5a5a && CanMboxTempRegs.MboxWord4 == 0xa5a5)
- {
- if(BootStatus.LineDataLen % 8 == 0)
- count = BootStatus.LineDataLen / 8;
- else
- count = BootStatus.LineDataLen / 8 + 1;
- if(BootStatus.FrameId == count)
- {
- if(FlashDataCopy(BootStatus.Buffer, BootStatus.LineDataLen) == STATUS_SUCCESS)
- {
- BootStatus.WorkStatus = TRUE;
- BootStatus.SendNum = DATA_REC_ACK;
- }else
- {
- BootStatus.WorkStatus = FALSE;
- BootStatus.SendNum = SEND_NULL;
- }
- }
- i = 0;
- count = 0;
- BootStatus.FrameId = 0;
- BootStatus.LineDataLen = 0;
- for(j=0; j<100; j++) //unsigned char Buffer[100]ÇåÁã
- {
- BootStatus.Buffer[j] = 0;
- }
- }else
- {
- BootStatus.FrameId++;
- BootStatus.Buffer[i++] = CanMboxTempRegs.MboxWord1 & 0x00ff;
- BootStatus.Buffer[i++] = (CanMboxTempRegs.MboxWord1 & 0xff00) >> 8;
- BootStatus.Buffer[i++] = CanMboxTempRegs.MboxWord2 & 0x00ff;
- BootStatus.Buffer[i++] = (CanMboxTempRegs.MboxWord2 & 0xff00) >> 8;
- BootStatus.Buffer[i++] = CanMboxTempRegs.MboxWord3 & 0x00ff;
- BootStatus.Buffer[i++] = (CanMboxTempRegs.MboxWord3 & 0xff00) >> 8;
- BootStatus.Buffer[i++] = CanMboxTempRegs.MboxWord4 & 0x00ff;
- BootStatus.Buffer[i++] = (CanMboxTempRegs.MboxWord4 & 0xff00) >> 8;
- }
- }
- //-------------------------------------------------------------------------------
- if(CanMboxTempRegs.MboxID == FILE_SEND_FINISH)
- {
- if (CanMboxTempRegs.MboxWord1 == 0x5a5a && CanMboxTempRegs.MboxWord2 == 0x5a5a
- && CanMboxTempRegs.MboxWord3 == 0x5a5a && CanMboxTempRegs.MboxWord4 == 0x5a5a)
- {
- BootStatus.WorkStatus = TRUE;
- BootStatus.SendNum = FILE_SEND_ACK;
- }else
- {
- BootStatus.WorkStatus = FALSE;
- BootStatus.SendNum = SEND_NULL;
- }
- }
- }
- }
- void CanSend(void)
- {
- //-----------------------------------------1---------------------------------------------
- if(BootStatus.WorkStatus == TRUE)
- {
- //------------------------------------------------------------------------------
- if(BootStatus.SendNum == SHAKE_FIR_ACK)
- {
- CanMboxUserRegsT.MboxID = SHAKE_FIR_ACK;
- CanMboxUserRegsT.MboxNum = 30;
- CanMboxUserRegsT.MboxDLC = 8;
- CanMboxUserRegsT.MboxWord1 = 0x5A5A;
- CanMboxUserRegsT.MboxWord2 = 0xA5A5;
- CanMboxUserRegsT.MboxWord3 = 0x5A5A;
- CanMboxUserRegsT.MboxWord4 = 0xA5A5;
- ECanMboxSend(&CanMboxUserRegsT);
- BootStatus.SendNum = SEND_NULL;
- }
- //-------------------------------------------------------------------------------
- if(BootStatus.SendNum == SHAKE_SEC_SEND)
- {
- CanMboxUserRegsT.MboxID = SHAKE_SEC_SEND;
- CanMboxUserRegsT.MboxNum = 29;
- CanMboxUserRegsT.MboxDLC = 8;
- CanMboxUserRegsT.MboxWord1 = 0xA5A5;
- CanMboxUserRegsT.MboxWord2 = 0x5A5A;
- CanMboxUserRegsT.MboxWord3 = 0xA5A5;
- CanMboxUserRegsT.MboxWord4 = 0x5A5A;
- ECanMboxSend(&CanMboxUserRegsT);
- BootStatus.SendNum = SEND_NULL;
- }
- //------------------------------------------------------------------------------
- if(BootStatus.SendNum == SHAKE_SEC_ACK)
- {
- CanMboxUserRegsT.MboxID = SHAKE_SEC_ACK;
- CanMboxUserRegsT.MboxNum = 28;
- CanMboxUserRegsT.MboxDLC = 8;
- CanMboxUserRegsT.MboxWord1 = 0xA5A5;
- CanMboxUserRegsT.MboxWord2 = 0x5A5A;
- CanMboxUserRegsT.MboxWord3 = 0xA5A5;
- CanMboxUserRegsT.MboxWord4 = 0x5A5A;
- ECanMboxSend(&CanMboxUserRegsT);
- BootStatus.SendNum = SEND_NULL;
- }
- //------------------------------------------------------------------------------
- if(BootStatus.SendNum == DATA_REC_ACK)
- {
- CanMboxUserRegsT.MboxID = DATA_REC_ACK;
- CanMboxUserRegsT.MboxNum = 27;
- CanMboxUserRegsT.MboxDLC = 8;
- CanMboxUserRegsT.MboxWord1 = BootStatus.LineId;
- CanMboxUserRegsT.MboxWord2 = 0x5A5A;
- CanMboxUserRegsT.MboxWord3 = 0x5A5A;
- CanMboxUserRegsT.MboxWord4 = 0x5A5A;
- ECanMboxSend(&CanMboxUserRegsT);
- BootStatus.SendNum = SEND_NULL;
- }
- //------------------------------------------------------------------------------
- if(BootStatus.SendNum == FILE_SEND_ACK)
- {
- CanMboxUserRegsT.MboxID = FILE_SEND_ACK;
- CanMboxUserRegsT.MboxNum = 26;
- CanMboxUserRegsT.MboxDLC = 8;
- CanMboxUserRegsT.MboxWord1 = 0xA5A5;
- CanMboxUserRegsT.MboxWord2 = 0xA5A5;
- CanMboxUserRegsT.MboxWord3 = 0xA5A5;
- CanMboxUserRegsT.MboxWord4 = 0xA5A5;
- ECanMboxSend(&CanMboxUserRegsT);
- BootStatus.SendNum = SEND_NULL;
- BootStatus.Reboot = FALSE;
- }
- }
- }
- //===========================================================================
- // No more.
- //===========================================================================
|