From b262b7b522025e575125582016482258e6e12387 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Wed, 4 Sep 2024 11:52:36 +0800 Subject: [PATCH] =?utf8?q?=E9=80=82=E9=85=8D=20DS=5FZB25LQ128C=5FHRT=20NOR?= =?utf8?q?FLASH?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../driver/flash/flash_common_config.h | 3 ++ .../include/driver/flash/flash_config_info.h | 23 +++++++++++-- .../driver/flash/flash_others_config.h | 33 +++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/code/sdk/include/driver/flash/flash_common_config.h b/code/sdk/include/driver/flash/flash_common_config.h index d541fa469..9671895da 100755 --- a/code/sdk/include/driver/flash/flash_common_config.h +++ b/code/sdk/include/driver/flash/flash_common_config.h @@ -117,6 +117,8 @@ #define FLASH_MANUFACTURER_PUYA_PY25Q128LA 0x186585 +#define FLASH_MANUFACTURER_HRT_ZB25LQ128C 0x18505E + #define FLASH_CMD_LEN_MAX 4 #define addr_unalign(Addr, Boundary) ((Addr) & ((Boundary) - 1)) @@ -183,6 +185,7 @@ typedef enum flash_support_manufacturer { FLASH_PUYA_P25Q64SL, FLASH_MXIC_MX25U256, FLASH_PUYA_PY25Q128LA, + FLASH_HRT_ZB25LQ128C, FLASH_MANUFACTURER_MAX } flash_support_manufacturer_t; diff --git a/code/sdk/include/driver/flash/flash_config_info.h b/code/sdk/include/driver/flash/flash_config_info.h index 2b7293a52..542a210d4 100755 --- a/code/sdk/include/driver/flash/flash_config_info.h +++ b/code/sdk/include/driver/flash/flash_config_info.h @@ -125,10 +125,11 @@ static const flash_device_parameter_t g_flash_device_parameter[FLASH_MANUFACTURE g_puya_p25q32lc_enter_qspi_mode_cmd, NULL, &g_puya_p25q32lc_config }, { FLASH_MANUFACTURER_MXIC_MX25U256, FLASH_SIZE_32MB, 0xA5, 0xAA, WAIT_CYCLES_4, 0x2B, 0xB0, 0x30, g_mxic_mx25uxx_enter_qspi_mode_cmd, NULL, &g_mxic_mx25uxx_config }, - // { FLASH_MANUFACTURER_PUYA_PY25Q128LA, FLASH_SIZE_16MB, 0x38, 0xFF, WAIT_CYCLES_6, 0x48, 0x75, 0x7A, - // g_puya_py25q128la_enter_qspi_mode_cmd, NULL, &g_puya_py25q128la_config }, { FLASH_MANUFACTURER_PUYA_PY25Q128LA, FLASH_SIZE_16MB, 0x20, 0xFF, WAIT_CYCLES_4, 0x05, 0x75, 0x7A, g_puya_py25q128la_enter_qspi_mode_cmd, NULL, &g_puya_py25q128la_config }, + { FLASH_MANUFACTURER_HRT_ZB25LQ128C, FLASH_SIZE_16MB, 0x20, 0x0, WAIT_CYCLES_4, 0x05, 0x75, 0x7A, + g_hrt_zb25lq128c_enter_qspi_mode_cmd, NULL, &g_hrt_zb25lq128c_config }, + }; static const uint32_t g_xip_use_cmd_mode[] = { @@ -147,6 +148,7 @@ static const uint32_t g_xip_use_cmd_mode[] = { FLASH_MANUFACTURER_DOSILICON_DS25M4AB, FLASH_MANUFACTURER_PUYA_P25Q64SL, FLASH_MANUFACTURER_PUYA_PY25Q128LA, + FLASH_MANUFACTURER_HRT_ZB25LQ128C, }; static flash_cmd_exe_t g_winbond_w25qxx_set_qe_cmd[] = { @@ -224,6 +226,20 @@ static flash_cmd_exe_t g_puya_py25q128la_set_qe_cmd[] = { { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } } }; +static flash_cmd_exe_t g_hrt_zb25lq128c_set_qe_cmd[] = { + /* Check QE bit. */ + { FLASH_CMD_TYPE_CHECK, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR2_CMD, 0x1, 0x2 } }, + /* Write enable. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { FLASH_WREN_CMD } }, + /* Write status register-2 to 0x2, set QE bit. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 2, { 0x31, 0x02 } }, + /* Waite config done. */ + { FLASH_CMD_TYPE_PROCESSING, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR1_CMD, 0, 0 } }, + /* Check QE bit. */ + { FLASH_CMD_TYPE_PROCESSING, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { FLASH_RDSR2_CMD, 0x1, 0x2 } }, + /* End cmd, will not execute and need return. */ + { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } } +}; static const flash_qe_config_t g_flash_need_set_qe[] = { {FLASH_MANUFACTURER_WINBOND_W25Q32, g_winbond_w25qxx_set_qe_cmd}, @@ -235,7 +251,8 @@ static const flash_qe_config_t g_flash_need_set_qe[] = { {FLASH_MANUFACTURER_DOSILICON_DS25M4AB, g_winbond_w25qxx_set_qe_cmd}, {FLASH_MANUFACTURER_ELITE_EN25SX128A, g_winbond_en25sx128a_set_qe_cmd}, {FLASH_MANUFACTURER_XTX_XT25Q128D, g_xtx_xt25q128d_set_qe_cmd}, - {FLASH_MANUFACTURER_PUYA_PY25Q128LA, g_puya_py25q128la_set_qe_cmd} + {FLASH_MANUFACTURER_PUYA_PY25Q128LA, g_puya_py25q128la_set_qe_cmd}, + {FLASH_MANUFACTURER_HRT_ZB25LQ128C, g_hrt_zb25lq128c_set_qe_cmd} }; #define FLASH_WIP (bit(0)) diff --git a/code/sdk/include/driver/flash/flash_others_config.h b/code/sdk/include/driver/flash/flash_others_config.h index a95513dab..5528897f1 100755 --- a/code/sdk/include/driver/flash/flash_others_config.h +++ b/code/sdk/include/driver/flash/flash_others_config.h @@ -168,6 +168,21 @@ static flash_cmd_exe_t g_puya_py25q128la_enter_qspi_mode_cmd[] = { { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } } }; +/* HRT config. */ +/* PY25Q128LA PUYA flash config. */ +static flash_cmd_exe_t g_hrt_zb25lq128c_enter_qspi_mode_cmd[] = { + /* Write enable for Volatils status register. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { 0x50 } }, + /* Write volatile configuration register,config XIP disable. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 3, { 0x01, 0x00, 0x02 } }, + /* Enable QPI. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_STANDARD, 1, { 0x38 } }, + /* Set dummy 6, maxinum read freq 108MHZ. */ + { FLASH_CMD_TYPE_CMD, HAL_SPI_FRAME_FORMAT_QUAD, 2, { 0xC0, 0x10} }, + /* End cmd, will not execute and need return. */ + { FLASH_CMD_TYPE_END, HAL_SPI_FRAME_FORMAT_MAX_NUM, 0, { 0 } } +}; + /* OTHERS enter xip mode config. */ /* Micro config. */ /* MT25QU128 Micro flash config. */ @@ -293,6 +308,24 @@ static flash_qspi_xip_config_t g_puya_py25q128la_config = { false, false, }; + +/* HRT config. */ +/* ZB25LQ128C HRT flash config. */ +static flash_qspi_xip_config_t g_hrt_zb25lq128c_config = { + /* The config that before enter XIP mode. */ + WAIT_CYCLES_6, + HAL_SPI_INST_LEN_8, + HAL_SPI_ADDR_LEN_24, + HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q, + /* The config that after enter XIP mode. */ + WAIT_CYCLES_6, + HAL_SPI_INST_LEN_8, + HAL_SPI_ADDR_LEN_24, + HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q, + /* XIP 32bit addr & wrap config. */ + false, + false, +}; /** * @} */ -- 2.17.1