#ifndef __DRV_FLASH_H #define __DRV_FLASH_H #ifdef __cplusplus extern "C" { #endif #ifdef __DRV_FLASH_H_GLOBAL #define __DRV_FLASH_H_EXTERN #else #define __DRV_FLASH_H_EXTERN extern #endif /************************************************************************************************ * Version * ************************************************************************************************/ /************************************************************************************************ * How to use * ************************************************************************************************/ /************************************************************************************************ * Enable config * ************************************************************************************************/ /************************************************************************************************ * Includes * ************************************************************************************************/ #include /************************************************************************************************ * Defines * ************************************************************************************************/ #define FMC_PAGE_SIZE ((uint16_t)0x800) #define FMC_PAGE_SIZE_U16 ((uint16_t)0x400) #define FMC_FLASH_BASE ((uint32_t)0x08000000) #define FMC_PAGE_SIZE_16K ((uint32_t)0x4000) #define FMC_PAGE_SIZE_32K ((uint32_t)0x8000) #define FMC_PAGE_SIZE_64K ((uint32_t)0x10000) #define FMC_PAGE_SIZE_128K ((uint32_t)0x20000) /************************************************************************************************ * Defines * ************************************************************************************************/ void fmc_clear_flag_star(void); void fmc_clear_flag_end(void); uint8_t fmc_read_byte(uint32_t read_addr); uint16_t fmc_read_half_word(uint32_t read_addr); uint8_t fmc_read_n_half_word(uint32_t read_addr, uint16_t *buff, uint16_t count); uint8_t fmc_read_one_page(uint32_t read_addr, uint16_t *buff); uint8_t fmc_erase_pages(uint32_t erase_addr, uint16_t len); uint8_t fmc_write_n_half_word(uint32_t write_addr, uint16_t *buff, uint16_t len); uint16_t firmware_crc16_ccitt_false(uint16_t init_value, uint8_t *pbuff, uint32_t len); #ifdef __cplusplus }; #endif #endif // __DRV_FLASH_H