From 0d28ae7d781bc6f393ed49d359460f8b4546fd83 Mon Sep 17 00:00:00 2001 From: spam-receiver <48826370+spam-receiver@users.noreply.github.com> Date: Wed, 17 Jul 2024 01:51:35 +0300 Subject: [PATCH] =?UTF-8?q?QE=3D1=20=D0=B5=D1=81=D0=BB=D0=B8=20QE=3D=3D0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Не перезаписывать энергонезависимую ячейку QE, если там уже записана «1». --- src/bootloader.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/bootloader.c b/src/bootloader.c index 8a501c2..158046c 100644 --- a/src/bootloader.c +++ b/src/bootloader.c @@ -373,14 +373,15 @@ void SPIFI_Init() HAL_SPIFI_MspInit(&spifi); HAL_SPIFI_Reset(&spifi); - uint8_t sreg1 = HAL_SPIFI_W25_ReadSREG(&spifi, W25_SREG1); + / *В Winbond для выставления QE используется команда 0x01 в 1-м бите 2го статус регистра. */ uint8_t sreg2 = HAL_SPIFI_W25_ReadSREG(&spifi, W25_SREG2); - - - /*В Winbond для выставления QE используется команда 0x01 в 1-м бите 2го статус регистра. - Количество промежуточных данных в команде 4READ = 0xEB равно 3 байта (в cmd_mem)*/ - HAL_SPIFI_W25_WriteSREG(&spifi, sreg1, sreg2 | (1 << 1)); // ? HAL_SPIFI_W25_QuadEnable(&spifi); + if (!(sreg2 & (1 << 1))) + { + uint8_t sreg1 = HAL_SPIFI_W25_ReadSREG(&spifi, W25_SREG1); + HAL_SPIFI_W25_WriteSREG(&spifi, sreg1, sreg2 | (1 << 1)); // ? HAL_SPIFI_W25_QuadEnable(&spifi); + } + /* Количество промежуточных данных в команде 4READ = 0xEB равно 3 байта (в cmd_mem). */ SPIFI_MemoryCommandTypeDef cmd_mem = { .OpCode = 0xEB, .FieldForm = SPIFI_CONFIG_CMD_FIELDFORM_OPCODE_SERIAL, @@ -406,4 +407,4 @@ void go_to_spifi() SPIFI_Init(); write_csr(mtvec, 0x80000000); JALR_TO_SPIFI(); -} \ No newline at end of file +}