2026-03-20 21:09:48 +08:00
|
|
|
|
#include "../main/SystemInclude.h"
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
USER_PARAMS_ADDR <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦEEPROM<EFBFBD><EFBFBD> 0x10-0x6C0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u16 MBReg[336]; u16 WordReg[128]; u32 DWordReg[64];
|
|
|
|
|
|
<EFBFBD>ܹ<EFBFBD> 1712bytes <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD>USER_PARAMS_ADDRΪ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>ҳ;
|
2026-03-20 21:19:04 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
CORRECT_DATA_ADDR Ĭ<EFBFBD><EFBFBD>Уҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦEEPROM<EFBFBD><EFBFBD> 0x1000-<EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2026-03-20 21:19:04 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/
|
|
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>-<2D><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u8 param_buffer[TOTAL_PARAM_SIZE] __attribute__((aligned(4))); //4<>ֽڶ<D6BD><DAB6><EFBFBD>
|
2026-03-20 21:19:04 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
void update_param_bufferFromFlash(void)//
|
|
|
|
|
|
{
|
|
|
|
|
|
memcpy(param_buffer, (void*)USER_PARAMS_ADDR, TOTAL_PARAM_SIZE);
|
|
|
|
|
|
}
|
2026-03-20 21:19:04 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>param_buffer<65><72><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>flash ------------------
|
|
|
|
|
|
static void WriteAllParamToFlash(void)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD> Flash ҳ<><D2B3>USER_PARAMS_ADDR <20><>ҳ<EFBFBD><D2B3>ʼ<EFBFBD><CABC>
|
|
|
|
|
|
if(LHL_FLASH_Erase(USER_PARAMS_ADDR, USER_PARAMS_ADDR, LHL_LNG_TIMEOUT) != LHL_OK)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
while(1);
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//<2F><> 32-bit word д<><D0B4> <20><><EFBFBD><EFBFBD> 4-byte <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 word_count = (TOTAL_PARAM_SIZE + 3)>>2; // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1> ת<><D7AA>Ϊ32λ<32><CEBB><EFBFBD>ݵĸ<DDB5><C4B8><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
LHL_FLASH_Program( USER_PARAMS_ADDR, (uint32_t*)param_buffer, word_count, LHL_LNG_TIMEOUT );
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>-˫<>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 WriteShortParameterToFlash(u16 parameterAdr)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>˫<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------------
|
|
|
|
|
|
// if((parameterAdr >=REG_MEM_ADDR_START) && (parameterAdr < REG_INT_DWORD_MEM_ADDR_START))
|
|
|
|
|
|
// {}
|
|
|
|
|
|
u8 *p = param_buffer;
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
tempL.Byte[2] = CRC8(tempL.Byte, 2);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵУ<D6B5><D0A3><EFBFBD><EFBFBD>
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
p += parameterAdr;
|
|
|
|
|
|
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
|
|
|
|
|
|
p[0] = tempL.Byte[0];
|
|
|
|
|
|
p[1] = tempL.Byte[1];
|
|
|
|
|
|
p[2] = tempL.Byte[2];
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//дparam_buffer<65><72>Flash
|
|
|
|
|
|
WriteAllParamToFlash();
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
tempL.Word[0] = ReadShortParameterFromFlash(parameterAdr,WordDefault[ADR_WORD_IDX(parameterAdr)][DEFAULT]);
|
|
|
|
|
|
tempL.Byte[2] = 0;
|
|
|
|
|
|
// ע<>⣺<EFBFBD><E2A3BA>ʱ<EFBFBD><CAB1><EFBFBD>ø<EFBFBD><C3B8><EFBFBD> WordReg[index]
|
|
|
|
|
|
// <20><>Ϊ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>*WRSource = <20><><EFBFBD><EFBFBD>ֵ;
|
|
|
|
|
|
return tempL.Word[0]; //<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ô<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> WordReg[I]
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 WriteLongParameterToFlash(u16 parameterAdr)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// if( (parameterAdr >=REG_INT_DWORD_MEM_ADDR_START)&& parameterAdr <= REG_INT_DWORD_MEM_ADDR_END)
|
|
|
|
|
|
// { }
|
|
|
|
|
|
tempDev.Byte[4] = CRC8(tempDev.Byte, 4);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵУ<D6B5><D0A3><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
|
|
|
|
|
|
u8 *p = param_buffer;
|
|
|
|
|
|
p += (parameterAdr );
|
|
|
|
|
|
p[0] = tempDev.Byte[0];
|
|
|
|
|
|
p[1] = tempDev.Byte[1];
|
|
|
|
|
|
p[2] = tempDev.Byte[2];
|
|
|
|
|
|
p[3] = tempDev.Byte[3];
|
|
|
|
|
|
p[4] = tempDev.Byte[4];
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//дparam_buffer<65><72>Flash
|
|
|
|
|
|
WriteAllParamToFlash();
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
tempDev.DWord[0] = ReadLongParameterFromFlash(parameterAdr,WordDefault[ADR_DWORD_IDX(parameterAdr)][DEFAULT]);
|
|
|
|
|
|
tempDev.Byte[4] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
return tempDev.DWord[0];
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//дУҳ<D7BC><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------
|
|
|
|
|
|
void WriteMultiByteToFlash(u16 address, u8 *wrtData, u16 dataLenth, u8 flashAdr)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
(void)flashAdr; // û<>ж<EFBFBD><D0B6><EFBFBD>Flash
|
|
|
|
|
|
//Ĭ<><C4AC>У<D0A3><D7BC><EFBFBD><EFBFBD>---------------------------------------------------------------
|
|
|
|
|
|
if(address >= CALI_DATA1_ADDR)//Ҫд<D2AA><D0B4><EFBFBD>ĵ<EFBFBD>ַΪԭeeprom<6F><6D>У<D0A3><D7BC>
|
|
|
|
|
|
{
|
|
|
|
|
|
//0.ת<><D7AA><EFBFBD><EFBFBD>Flash<73><68>ַ
|
|
|
|
|
|
u32 ADDR = (u32)(address - CALI_DATA1_ADDR);
|
|
|
|
|
|
ADDR = ADDR + CORRECT_DATA_ADDR;
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>һҳ<D2BB><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<D2B3><D7BC>д<EFBFBD><D0B4>
|
|
|
|
|
|
if((ADDR&0x0FFF) == 0x000) LHL_FLASH_Erase(ADDR,ADDR,LHL_LNG_TIMEOUT);//ADDR<44><52>ҳ<EFBFBD><D2B3>ADDRΪҳ<CEAA><EFBFBD>ַ
|
|
|
|
|
|
if(ADDR >(CORRECT_DATA_ADDR+ CALIB_STORED_SIZE) ) MBBuf.BusError = SLAVE_DEVICE_FAILURE;//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
//дУ<D0A3><D7BC><EFBFBD><EFBFBD>Flash
|
|
|
|
|
|
LHL_FLASH_Program(ADDR,(u32 *)wrtData,dataLenth>>2 ,LHL_LNG_TIMEOUT);
|
|
|
|
|
|
}
|
|
|
|
|
|
//У<D0A3><D7BC><EFBFBD><EFBFBD>2---------------------------------------------------------------
|
|
|
|
|
|
//CALI_DATA2_ADDR CORRECT_DATA2_ADDR CALIB_STORED_SIZE2
|
|
|
|
|
|
//У<D0A3><D7BC><EFBFBD><EFBFBD>3---------------------------------------------------------------
|
|
|
|
|
|
//CALI_DATA3_ADDR CORRECT_DATA3_ADDR CALIB_STORED_SIZE3
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------------------------------------------------
|
|
|
|
|
|
// else if()
|
|
|
|
|
|
// {
|
|
|
|
|
|
// USER_DCOEF_TAG_ADDR
|
|
|
|
|
|
// }
|
|
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------------
|
|
|
|
|
|
else if((address >=REG_MEMORY_ADDR) && (address <= REG_INT_DWORD_MEM_ADDR_END))
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wrtData[dataLenth] = CRC8(wrtData, dataLenth);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵУ<D6B5><D0A3><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD>
|
|
|
|
|
|
u8 *p = param_buffer;
|
|
|
|
|
|
p += address;
|
|
|
|
|
|
/*for(u8 i = 0 ; i < dataLenth+1 ; i ++)
|
|
|
|
|
|
{
|
|
|
|
|
|
p[i] = wrtData[i];
|
|
|
|
|
|
}*/
|
|
|
|
|
|
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ֽڽ<D6BD><DABD><EFBFBD>
|
|
|
|
|
|
for (int i = 0; i < dataLenth; i += 2) {
|
|
|
|
|
|
p[i] = wrtData[i + 1]; //<2F>͵<EFBFBD>ַ
|
|
|
|
|
|
p[i + 1] = wrtData[i]; //<2F>ߵ<EFBFBD>ַ
|
|
|
|
|
|
}
|
|
|
|
|
|
p[dataLenth]= wrtData[dataLenth];//CRCֱ<43>Ӹ<EFBFBD><D3B8><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
WriteAllParamToFlash();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>˫<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------------
|
|
|
|
|
|
u16 ReadShortParameterFromFlash(u16 parameterAdr , u16 parameterDefault)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// if(parameterAdr >=REG_MEM_ADDR_START && parameterAdr < REG_INT_DWORD_MEM_ADDR_START)
|
|
|
|
|
|
// { }
|
|
|
|
|
|
u32 ADDR = ((u32)parameterAdr + USER_PARAMS_ADDR);// <20><>EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD> MEM_ADDR_REG_0X30 = 0x10<31><30>תΪ Flash <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
2026-03-20 21:09:48 +08:00
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
tempL.Word[0] = 0;
|
|
|
|
|
|
memcpy(tempL.Byte,(const void*)ADDR, 3);
|
|
|
|
|
|
|
|
|
|
|
|
if(tempL.Byte[2] != CRC8(tempL.Byte, 2))
|
|
|
|
|
|
{
|
|
|
|
|
|
tempL.Word[0] = (u32)parameterDefault;
|
|
|
|
|
|
isReadParameterOK = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
tempL.Byte[2] = 0;
|
|
|
|
|
|
isReadParameterOK = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return tempL.Word[0];
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------------
|
|
|
|
|
|
u32 ReadLongParameterFromFlash(u16 parameterAdr , u16 parameterDefault)
|
2026-03-20 21:19:04 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
// if( (parameterAdr >=REG_INT_DWORD_MEM_ADDR_START)&& parameterAdr <= REG_INT_DWORD_MEM_ADDR_END)
|
|
|
|
|
|
// { }
|
|
|
|
|
|
u32 ADDR = (u32)(parameterAdr + USER_PARAMS_ADDR);
|
|
|
|
|
|
tempDev.DWord[0] = 0;
|
|
|
|
|
|
memcpy(tempDev.Byte,(const void*)ADDR, 5);
|
|
|
|
|
|
|
|
|
|
|
|
if(tempDev.Byte[4] != CRC8(tempDev.Byte, 4))
|
|
|
|
|
|
{
|
|
|
|
|
|
tempDev.DWord[0] = (u32)parameterDefault;
|
|
|
|
|
|
isReadParameterOK = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
isReadParameterOK = 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
return tempDev.DWord[0];
|
|
|
|
|
|
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>,У<D0A3><D7BC><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>------------------------------------------------------------------
|
|
|
|
|
|
void ReadMultiByteFromFlash(u16 address,u8 *wrtData, u16 dataLenth, u8 flashAdr)
|
2026-03-20 21:09:48 +08:00
|
|
|
|
{
|
2026-03-20 21:19:53 +08:00
|
|
|
|
(void)flashAdr; // û<>ж<EFBFBD><D0B6><EFBFBD>Flash,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> warning
|
|
|
|
|
|
u32 ADDR;
|
|
|
|
|
|
//<2F><>У<D0A3><D7BC><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>--------------------------------------------------------
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD>ݵ<EFBFBD>ַ<EFBFBD><D6B7>Ϊeeprom<6F>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>У<D0A3><D7BC><EFBFBD>ڸõ<DAB8>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if(address >=CALI_DATA1_ADDR)
|
|
|
|
|
|
{
|
|
|
|
|
|
ADDR =(u32)(address-CALI_DATA1_ADDR );
|
|
|
|
|
|
ADDR += CORRECT_DATA_ADDR; //ת<><D7AA>ΪFlash<73><68>ַ
|
|
|
|
|
|
memcpy(wrtData,(const void*)ADDR, dataLenth);
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>----------------------------------------------------------
|
|
|
|
|
|
else if((address >=REG_MEMORY_ADDR) && (address <= REG_INT_DWORD_MEM_ADDR_END))
|
|
|
|
|
|
{
|
|
|
|
|
|
ADDR =((u32)address + USER_PARAMS_ADDR);
|
|
|
|
|
|
memcpy(wrtData,(const void*)ADDR, dataLenth); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λ<EFBFBD>Ǵ<EFBFBD><C7B4>˵ģ<CBB5><C4A3><EFBFBD><EFBFBD>жϵ<D0B6><CFB5><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=<3D><>δ<EFBFBD>ж<EFBFBD>
|
|
|
|
|
|
}
|
2026-03-20 21:09:48 +08:00
|
|
|
|
}
|