From a83cb8a8f7c784e266f8192a0a2076d48e5deca2 Mon Sep 17 00:00:00 2001 From: wu58430 Date: Fri, 5 Jan 2024 17:23:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96EEPROM=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20=E6=94=B9=E4=B8=BASTLINK-SWD=E7=83=A7?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 62 ++++++++++++-------------------------------- app/aircopy.c | 2 +- app/fm.c | 2 +- app/menu.c | 2 +- app/uart.c | 6 ++--- driver/eeprom.c | 41 +++-------------------------- driver/eeprom.h | 3 +-- firmware | Bin 162640 -> 162728 bytes main.c | 6 ++--- settings.c | 48 +++++++++++++++++----------------- 10 files changed, 53 insertions(+), 119 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 3052292..b9dec3d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -20,46 +20,16 @@ - - + - - - - - - + + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - @@ -670,7 +640,6 @@ - @@ -695,7 +664,8 @@ - diff --git a/app/aircopy.c b/app/aircopy.c index f3f148c..69bf942 100644 --- a/app/aircopy.c +++ b/app/aircopy.c @@ -111,7 +111,7 @@ void AIRCOPY_StorePacket(void) const uint16_t *pData = &g_FSK_Buffer[2]; for (unsigned int i = 0; i < 8; i++) { - EEPROM_WriteBuffer(Offset, pData); + EEPROM_WriteBuffer(Offset, pData,8); pData += 4; Offset += 8; } diff --git a/app/fm.c b/app/fm.c index ffbd66b..0dffa6b 100644 --- a/app/fm.c +++ b/app/fm.c @@ -125,7 +125,7 @@ void FM_EraseChannels(void) memset(Template, 0xFF, sizeof(Template)); for (i = 0; i < 5; i++) - EEPROM_WriteBuffer(0x0E40 + (i * 8), Template); + EEPROM_WriteBuffer(0x0E40 + (i * 8), Template,8); memset(gFM_Channels, 0xFF, sizeof(gFM_Channels)); } diff --git a/app/menu.c b/app/menu.c index 57833fd..a41cb03 100644 --- a/app/menu.c +++ b/app/menu.c @@ -80,7 +80,7 @@ void writeXtalFreqCal(const int32_t value, const bool update_eeprom) // EEPROM_ReadBuffer(0x1F88, &misc, 8); misc.BK4819_XtalFreqLow = value; - EEPROM_WriteBuffer(0x1F88, &misc); + EEPROM_WriteBuffer(0x1F88, &misc,8); } } #endif diff --git a/app/uart.c b/app/uart.c index fcaeae0..59ac429 100644 --- a/app/uart.c +++ b/app/uart.c @@ -309,7 +309,7 @@ static void CMD_051D(const uint8_t *pBuffer) { bReloadEeprom = true; if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !bIsInLockScreen || pCmd->bAllowPassword) - EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U]); + EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U],8); } @@ -615,9 +615,9 @@ static void CMD_0538(const uint8_t *pBuffer)//write if ((Offset > 0xffff || Offset < 0x0E98 || (Offset <= 0xffff && Offset >= 0x0EA0)) || !bIsInLockScreen || pCmd->bAllowPassword) { if(add&&i==((pCmd->Size) - 2) / 8+(add==0?0:1)-1) - EEPROM_WriteBuffer_1024(Offset, &pCmd->Data[i * 8U + 2], add); + EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U + 2], add); else - EEPROM_WriteBuffer_1024(Offset, &pCmd->Data[i * 8U + 2], 8); + EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U + 2], 8); // uint8_t back[8]; // EEPROM_ReadBuffer(Offset, back, 8); // UART_Send(back, 8); diff --git a/driver/eeprom.c b/driver/eeprom.c index b1d3459..2239fc8 100644 --- a/driver/eeprom.c +++ b/driver/eeprom.c @@ -23,22 +23,7 @@ uint8_t WRITE_SIZE=0; void EEPROM_ReadBuffer(uint32_t Address, void *pBuffer, uint8_t Size) { if(Size==0)return; - if(Address<0x10000) { - I2C_Start(); - I2C_Write(0xA0); - - I2C_Write((Address >> 8) & 0xFF); - I2C_Write((Address >> 0) & 0xFF); - - I2C_Start(); - - I2C_Write(0xA1); - - I2C_ReadBuffer(pBuffer, Size); - - I2C_Stop(); - } else{ I2C_Start(); uint8_t P0 = (Address / 0x10000) << 1; @@ -54,39 +39,19 @@ void EEPROM_ReadBuffer(uint32_t Address, void *pBuffer, uint8_t Size) { I2C_ReadBuffer(pBuffer, Size); I2C_Stop(); - } + } -void EEPROM_WriteBuffer(uint32_t Address, const void *pBuffer) { +void EEPROM_WriteBuffer(uint32_t Address, const void *pBuffer,uint8_t WRITE_SIZE) { if (pBuffer == NULL ) return; - if (Address < 0x10000) { - - uint8_t buffer[8]; - EEPROM_ReadBuffer(Address, buffer, 8); - if (memcmp(pBuffer, buffer, 8) == 0) { - return; - } - I2C_Start(); - I2C_Write(0xA0); - I2C_Write((Address >> 8) & 0xFF); - I2C_Write((Address >> 0) & 0xFF); - I2C_WriteBuffer(pBuffer, 8); - I2C_Stop(); - SYSTEM_DelayMs(8); - - // give the EEPROM time to burn the data in (apparently takes 5ms) - } - -} -void EEPROM_WriteBuffer_1024(uint32_t Address, const void *pBuffer,uint8_t WRITE_SIZE) { uint8_t buffer[128]; EEPROM_ReadBuffer(Address, buffer, WRITE_SIZE); if (memcmp(pBuffer, buffer, WRITE_SIZE) != 0) { uint8_t P0 = (Address / 0x10000) << 1; I2C_Start(); if(Address<0x10000) I2C_Write(0xA0); - else I2C_Write(0xA0 | P0); + else I2C_Write(0xA0 | P0); I2C_Write((Address >> 8) & 0xFF); I2C_Write((Address >> 0) & 0xFF); diff --git a/driver/eeprom.h b/driver/eeprom.h index 20f3ebe..41a9af5 100644 --- a/driver/eeprom.h +++ b/driver/eeprom.h @@ -20,9 +20,8 @@ #include void EEPROM_ReadBuffer(uint32_t Address, void *pBuffer, uint8_t Size); -void EEPROM_WriteBuffer(uint32_t Address, const void *pBuffer); +void EEPROM_WriteBuffer(uint32_t Address, const void *pBuffer,uint8_t WRITE_SIZE) ; extern uint8_t WRITE_SIZE; -void EEPROM_WriteBuffer_1024(uint32_t Address, const void *pBuffer,uint8_t WRITE_SIZE) ; #endif diff --git a/firmware b/firmware index 20cacbf8d989ef422c1168dd1dfb3727bc56afb7..4e0849914cabb6ec36f90f2ae35e90ec4848ab4e 100644 GIT binary patch delta 39956 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 delta 40322 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 diff --git a/main.c b/main.c index feba3df..cb996b6 100644 --- a/main.c +++ b/main.c @@ -158,7 +158,7 @@ void Main(void) { for (uint32_t i = 0; i < ALL_SIZE; i += 128) { if (i != (uint32_t) (ALL_SIZE / 128) * 128) { WRITE_SIZE = 128; - EEPROM_WriteBuffer_1024(start_add + i, p_font + i, WRITE_SIZE); + EEPROM_WriteBuffer(start_add + i, p_font + i, WRITE_SIZE); //check uint8_t B[128]; EEPROM_ReadBuffer(start_add + i, B, 128); @@ -196,7 +196,7 @@ void Main(void) { uint8_t tmp[128] = {0}; WRITE_SIZE = ALL_SIZE - (uint32_t) (ALL_SIZE / 128) * 128; memcpy(tmp, p_font + i, WRITE_SIZE); - EEPROM_WriteBuffer_1024(start_add + i, tmp, WRITE_SIZE); + EEPROM_WriteBuffer(start_add + i, tmp, WRITE_SIZE); //check uint8_t B[128]; memset(B, 0, sizeof(B)); @@ -373,7 +373,7 @@ void Main(void) { // uint32_t add=0; // uint8_t data_write[8]; // memset(data_write,'Z',sizeof (data_write)); -// EEPROM_WriteBuffer_1024(start_add + add,data_write , WRITE_SIZE); +// EEPROM_WriteBuffer(start_add + add,data_write , WRITE_SIZE); // uint8_t B[128]; // EEPROM_ReadBuffer(start_add + add, B, WRITE_SIZE); // if (memcmp(B, data_write, WRITE_SIZE) != 0) { diff --git a/settings.c b/settings.c index ece6fc8..8f281da 100644 --- a/settings.c +++ b/settings.c @@ -269,8 +269,8 @@ EEPROM_ReadBuffer(0x0EF0, Data, sizeof(gEeprom.REVIVE_CODE)); // 0F30..0F3F char B[8]; memset(B,0XFF,8); - EEPROM_WriteBuffer(0x0F30, B); - EEPROM_WriteBuffer(0x0F38, B); + EEPROM_WriteBuffer(0x0F30, B,8); + EEPROM_WriteBuffer(0x0F38, B,8); EEPROM_ReadBuffer(0x0F30, gCustomAesKey, sizeof(gCustomAesKey)); bHasCustomAesKey = false; @@ -422,7 +422,7 @@ void SETTINGS_FactoryReset(bool bIsAll) )) ) { - EEPROM_WriteBuffer(i, Template); + EEPROM_WriteBuffer(i, Template,8); } } @@ -460,9 +460,9 @@ void SETTINGS_SaveFM(void) State.Frequency = gEeprom.FM_SelectedFrequency; State.IsChannelSelected = gEeprom.FM_IsMrMode; - EEPROM_WriteBuffer(0x0E88, &State); + EEPROM_WriteBuffer(0x0E88, &State,8); for (i = 0; i < 5; i++) - EEPROM_WriteBuffer(0x0E40 + (i * 8), &gFM_Channels[i * 4]); + EEPROM_WriteBuffer(0x0E40 + (i * 8), &gFM_Channels[i * 4],8); } #endif @@ -485,7 +485,7 @@ void SETTINGS_SaveVfoIndices(void) State[7] = gEeprom.NoaaChannel[1]; #endif - EEPROM_WriteBuffer(0x0E80, State); + EEPROM_WriteBuffer(0x0E80, State,8); } void SETTINGS_SaveSettings(void) @@ -510,7 +510,7 @@ void SETTINGS_SaveSettings(void) State[6] = 0; #endif State[7] = gEeprom.MIC_SENSITIVITY; - EEPROM_WriteBuffer(0x0E70, State); + EEPROM_WriteBuffer(0x0E70, State,8); State[0] = (/*gEeprom.BACKLIGHT_MIN*/0 << 4) + gEeprom.BACKLIGHT_MAX; State[1] = gEeprom.CHANNEL_DISPLAY_MODE; @@ -520,7 +520,7 @@ void SETTINGS_SaveSettings(void) State[5] = gEeprom.BACKLIGHT_TIME; State[6] = gEeprom.TAIL_TONE_ELIMINATION; State[7] = gEeprom.VFO_OPEN; - EEPROM_WriteBuffer(0x0E78, State); + EEPROM_WriteBuffer(0x0E78, State,8); State[0] = gEeprom.BEEP_CONTROL; // State[0] |= 0;//gEeprom.KEY_M_LONG_PRESS_ACTION << 1; @@ -538,13 +538,13 @@ void SETTINGS_SaveSettings(void) State[5] = gEeprom.SCAN_RESUME_MODE; State[6] = 0;//gEeprom.AUTO_KEYPAD_LOCK; State[7] = 0;//gEeprom.POWER_ON_DISPLAY_MODE; - EEPROM_WriteBuffer(0x0E90, State); + EEPROM_WriteBuffer(0x0E90, State,8); memset(Password, 0xFF, sizeof(Password)); #ifdef ENABLE_PWRON_PASSWORD Password[0] = gEeprom.POWER_ON_PASSWORD; #endif - EEPROM_WriteBuffer(0x0E98, Password); + EEPROM_WriteBuffer(0x0E98, Password,8); memset(State, 0xFF, sizeof(State)); #ifdef ENABLE_VOICE @@ -554,7 +554,7 @@ void SETTINGS_SaveSettings(void) State[1] = gEeprom.S0_LEVEL; State[2] = gEeprom.S9_LEVEL; #endif - EEPROM_WriteBuffer(0x0EA0, State); + EEPROM_WriteBuffer(0x0EA0, State,8); #if defined(ENABLE_ALARM) || defined(ENABLE_TX1750) State[0] = gEeprom.ALARM_MODE; #else @@ -564,7 +564,7 @@ void SETTINGS_SaveSettings(void) State[2] = gEeprom.REPEATER_TAIL_TONE_ELIMINATION; State[3] = gEeprom.TX_VFO; State[4] = gEeprom.BATTERY_TYPE; - EEPROM_WriteBuffer(0x0EA8, State); + EEPROM_WriteBuffer(0x0EA8, State,8); State[0] = gEeprom.DTMF_SIDE_TONE; #ifdef ENABLE_DTMF_CALLING @@ -576,7 +576,7 @@ void SETTINGS_SaveSettings(void) State[5] = gEeprom.DTMF_PRELOAD_TIME / 10U; State[6] = gEeprom.DTMF_FIRST_CODE_PERSIST_TIME / 10U; State[7] = gEeprom.DTMF_HASH_CODE_PERSIST_TIME / 10U; - EEPROM_WriteBuffer(0x0ED0, State); + EEPROM_WriteBuffer(0x0ED0, State,8); memset(State, 0xFF, sizeof(State)); State[0] = gEeprom.DTMF_CODE_PERSIST_TIME / 10U; @@ -584,7 +584,7 @@ void SETTINGS_SaveSettings(void) #ifdef ENABLE_DTMF_CALLING State[2] = gEeprom.PERMIT_REMOTE_KILL; #endif - EEPROM_WriteBuffer(0x0ED8, State); + EEPROM_WriteBuffer(0x0ED8, State,8); State[0] = gEeprom.SCAN_LIST_DEFAULT; State[1] = gEeprom.SCAN_LIST_ENABLED[0]; @@ -594,7 +594,7 @@ void SETTINGS_SaveSettings(void) State[5] = gEeprom.SCANLIST_PRIORITY_CH1[1]; State[6] = gEeprom.SCANLIST_PRIORITY_CH2[1]; State[7] = 0xFF; - EEPROM_WriteBuffer(0x0F18, State); + EEPROM_WriteBuffer(0x0F18, State,8); memset(State, 0xFF, sizeof(State)); State[0] = gSetting_F_LOCK; @@ -615,7 +615,7 @@ void SETTINGS_SaveSettings(void) #endif State[7] = (State[7] & ~(3u << 6)) | ((2 & 3u) << 6); - EEPROM_WriteBuffer(0x0F40, State); + EEPROM_WriteBuffer(0x0F40, State,8); } void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, uint8_t Mode) @@ -640,7 +640,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, State._32[0] = pVFO->freq_config_RX.Frequency; State._32[1] = pVFO->TX_OFFSET_FREQUENCY; - EEPROM_WriteBuffer(OffsetVFO + 0, State._32); + EEPROM_WriteBuffer(OffsetVFO + 0, State._32,8); State._8[0] = pVFO->freq_config_RX.Code; State._8[1] = pVFO->freq_config_TX.Code; @@ -658,7 +658,7 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, ; State._8[6] = pVFO->STEP_SETTING; State._8[7] = pVFO->SCRAMBLING_TYPE; - EEPROM_WriteBuffer(OffsetVFO + 8, State._8); + EEPROM_WriteBuffer(OffsetVFO + 8, State._8,8); SETTINGS_UpdateChannel(Channel, pVFO, true); @@ -679,11 +679,11 @@ void SETTINGS_SaveChannel(uint8_t Channel, uint8_t VFO, const VFO_Info_t *pVFO, void SETTINGS_SaveBatteryCalibration(const uint16_t * batteryCalibration) { uint16_t buf[4]; - EEPROM_WriteBuffer(0x1F40, batteryCalibration); + EEPROM_WriteBuffer(0x1F40, batteryCalibration,8); EEPROM_ReadBuffer( 0x1F48, buf, sizeof(buf)); buf[0] = batteryCalibration[4]; buf[1] = batteryCalibration[5]; - EEPROM_WriteBuffer(0x1F48, buf); + EEPROM_WriteBuffer(0x1F48, buf,8); } void SETTINGS_SaveChannelName(uint8_t channel, const char * name) @@ -691,8 +691,8 @@ void SETTINGS_SaveChannelName(uint8_t channel, const char * name) uint16_t offset = channel * 16; uint8_t buf[16] = {0}; memcpy(buf, name, MIN(strlen(name), 10u)); - EEPROM_WriteBuffer(0x0F50 + offset, buf); - EEPROM_WriteBuffer(0x0F58 + offset, buf + 8); + EEPROM_WriteBuffer(0x0F50 + offset, buf,8); + EEPROM_WriteBuffer(0x0F58 + offset, buf + 8,8); } void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep) @@ -722,7 +722,7 @@ void SETTINGS_UpdateChannel(uint8_t channel, const VFO_Info_t *pVFO, bool keep) } state[channel & 7u] = att.__val; - EEPROM_WriteBuffer(offset, state); + EEPROM_WriteBuffer(offset, state,8); gMR_ChannelAttributes[channel] = att; @@ -781,5 +781,5 @@ void SETTINGS_WriteBuildOptions(void) | (1 << 4) #endif ; - EEPROM_WriteBuffer(0x1FF0, buf); + EEPROM_WriteBuffer(0x1FF0, buf,8); } \ No newline at end of file