From 53fc262beaacb6922d65e3e2001f28d90bd884a8 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期一, 24 三月 2025 17:28:57 +0800 Subject: [PATCH] V1.12,增加不休眠下5S单独一包上传逻辑 --- keil/include/drivers/mk_flash.c | 140 +++++++++++++++++++++++----------------------- 1 files changed, 70 insertions(+), 70 deletions(-) diff --git a/keil/include/drivers/mk_flash.c b/keil/include/drivers/mk_flash.c index 950d46c..5b6c37b 100644 --- a/keil/include/drivers/mk_flash.c +++ b/keil/include/drivers/mk_flash.c @@ -56,23 +56,23 @@ .dma_wr_ch = DMA_CH2, .dma_rd_ch = DMA_CH3, .config = - { - .timeout = 0xFFFFU, - .cs_high_time = 0xFU, - .dual_mode = false, - .prefetch_dis = false, - .cache_prefetch_dis = false, - .feedback_clk_sel = false, - .spi_sck_high = false, - .spi_falling_edge_active = true, - .dma_en = false, - .int_en = false, - .start_addr = FLASH_BASE, - .total_size = FLASH_SIZE, - .block_size = FLASH_BLOCK_SIZE, - .sector_size = FLASH_SECTOR_SIZE, - .page_size = FLASH_PAGE_SIZE, - }, + { + .timeout = 0xFFFFU, + .cs_high_time = 0xFU, + .dual_mode = false, + .prefetch_dis = false, + .cache_prefetch_dis = false, + .feedback_clk_sel = false, + .spi_sck_high = false, + .spi_falling_edge_active = true, + .dma_en = false, + .int_en = false, + .start_addr = FLASH_BASE, + .total_size = FLASH_SIZE, + .block_size = FLASH_BLOCK_SIZE, + .sector_size = FLASH_SECTOR_SIZE, + .page_size = FLASH_PAGE_SIZE, + }, .callback = NULL, .flash_type = 0, .wrsr_type = 0, // MXIC automotive flash type need set to 1 @@ -269,19 +269,19 @@ // update state switch (flash_handle[id].state) { - case FLASH_STATE_READY: - flash_handle[id].state = new_state; - break; - case FLASH_STATE_BUSY_READ: - case FLASH_STATE_BUSY_ERASE: - case FLASH_STATE_BUSY_WRITE: - ret = DRV_BUSY; - break; - case FLASH_STATE_RESET: - case FLASH_STATE_TIMEOUT: - case FLASH_STATE_ERROR: - ret = DRV_ERROR; - break; + case FLASH_STATE_READY: + flash_handle[id].state = new_state; + break; + case FLASH_STATE_BUSY_READ: + case FLASH_STATE_BUSY_ERASE: + case FLASH_STATE_BUSY_WRITE: + ret = DRV_BUSY; + break; + case FLASH_STATE_RESET: + case FLASH_STATE_TIMEOUT: + case FLASH_STATE_ERROR: + ret = DRV_ERROR; + break; } int_unlock(lock); @@ -812,51 +812,51 @@ else { for (flash_handle[id].wr_nbyte_cfg.write_count = 0x01U; flash_handle[id].wr_nbyte_cfg.write_count <= flash_handle[id].wr_nbyte_cfg.write_num; - flash_handle[id].wr_nbyte_cfg.write_count++) + flash_handle[id].wr_nbyte_cfg.write_count++) { switch (flash_handle[id].wr_nbyte_cfg.page_count) { - case WRITE_ONE_PAGES: + case WRITE_ONE_PAGES: + flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], + flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len); + break; + + case WRITE_TWO_PAGES: + if (0x01U == flash_handle[id].wr_nbyte_cfg.write_count) + { flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len); - break; + flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; + flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; + } + else if (flash_handle[id].wr_nbyte_cfg.write_count == flash_handle[id].wr_nbyte_cfg.write_num) + { + flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], + flash_handle[id].wr_nbyte_cfg.end_page_inc_data_len); + } + break; - case WRITE_TWO_PAGES: - if (0x01U == flash_handle[id].wr_nbyte_cfg.write_count) - { - flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], - flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len); - flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; - flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; - } - else if (flash_handle[id].wr_nbyte_cfg.write_count == flash_handle[id].wr_nbyte_cfg.write_num) - { - flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], - flash_handle[id].wr_nbyte_cfg.end_page_inc_data_len); - } - break; - - default: - if (0x01U == flash_handle[id].wr_nbyte_cfg.write_count) - { - flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], - flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len); - flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; - flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; - } - else if (flash_handle[id].wr_nbyte_cfg.write_count == flash_handle[id].wr_nbyte_cfg.write_num) - { - flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], - flash_handle[id].wr_nbyte_cfg.end_page_inc_data_len); - } - else - { - flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], - flash_handle[id].config.page_size); - flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].config.page_size; - flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].config.page_size; - } - break; + default: + if (0x01U == flash_handle[id].wr_nbyte_cfg.write_count) + { + flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], + flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len); + flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; + flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].wr_nbyte_cfg.start_page_inc_data_len; + } + else if (flash_handle[id].wr_nbyte_cfg.write_count == flash_handle[id].wr_nbyte_cfg.write_num) + { + flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], + flash_handle[id].wr_nbyte_cfg.end_page_inc_data_len); + } + else + { + flash_page_write_nbytes(id, flash_handle[id].wr_nbyte_cfg.dest_tmp_addr, &buf[flash_handle[id].wr_nbyte_cfg.src_buf_pos], + flash_handle[id].config.page_size); + flash_handle[id].wr_nbyte_cfg.dest_tmp_addr += flash_handle[id].config.page_size; + flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].config.page_size; + } + break; } } @@ -1099,7 +1099,7 @@ // wait until the flash writing operation is complete delay_us(350); if ((flash_handle[id].wr_nbyte_cfg.write_count == flash_handle[id].wr_nbyte_cfg.write_num) && - (flash_handle[id].wr_nbyte_cfg.write_count > 0x01U)) + (flash_handle[id].wr_nbyte_cfg.write_count > 0x01U)) { flash_handle[id].wr_nbyte_cfg.src_buf_pos += flash_handle[id].config.page_size; // Write enable -- Gitblit v1.9.3