bl_mcu_sdk/examples/peripherals/flash/flash_iomode/main.c
2022-11-23 19:49:26 +08:00

52 lines
No EOL
1.4 KiB
C

#include "bflb_flash.h"
#include "board.h"
const char *iomode_string[] = { "NIO", "DO", "QO", "DIO", "QIO" };
#define FLASH_DATA_LEN 4096
uint8_t write_buf[FLASH_DATA_LEN];
uint8_t read_buf[FLASH_DATA_LEN];
uint64_t start_time;
int main(void)
{
board_init();
for (uint16_t i = 0; i < FLASH_DATA_LEN; i++) {
write_buf[i] = i & 0xff;
}
for (uint8_t iomode = FLASH_IOMODE_NIO; iomode <= FLASH_IOMODE_QIO; iomode++) {
printf("select flash iomode:%s\r\n", iomode_string[iomode]);
bflb_flash_set_iomode(iomode);
start_time = bflb_mtimer_get_time_ms();
/* erase 0x00010000 4k flash */
bflb_flash_erase(0x00010000, 4096);
/* write 0x00010000 flash data */
bflb_flash_write(0x00010000, write_buf, sizeof(write_buf));
memset(read_buf, 0, FLASH_DATA_LEN);
/* read 0x00010000 flash data */
bflb_flash_read(0x00010000, read_buf, sizeof(read_buf));
printf("cost time:%lld ms\r\n", (bflb_mtimer_get_time_ms() - start_time));
for (uint16_t j = 0; j < FLASH_DATA_LEN; j++) {
if (read_buf[j] != write_buf[j]) {
printf("flash test fail at %d, expect:%d but with %d\r\n", j, write_buf[j], read_buf[j]);
while (1) {
}
}
}
}
printf("flash test success\r\n");
while (1) {
}
}