/******************************************************************//** * @file dev_sflash.h * @brief SPI Flash driver of RT-Thread RTOS for using EFM32 USART module * This driver is tested by using the M25PX16 device on the EFM32 development * kit. * COPYRIGHT (C) 2011, RT-Thread Development Team * @author onelife * @version 0.4 beta ********************************************************************** * @section License * The license and distribution terms for this file may be found in the file LICENSE in this * distribution or at http://www.rt-thread.org/license/LICENSE ********************************************************************** * @section Change Logs * Date Author Notes * 2011-05-06 onelife Initial creation for using EFM32 USART module *********************************************************************/ #ifndef __DEV_SFLASH_H__ #define __DEV_SFLASH_H__ /* Includes -------------------------------------------------------------------*/ /* Exported types -------------------------------------------------------------*/ enum sflash_inst_type_t { /* Instruction only */ sflash_inst_wren = 0x00, sflash_inst_wrdi, sflash_inst_rdid_l, sflash_inst_rdid_s, sflash_inst_rdsr, sflash_inst_wrsr, sflash_inst_be, sflash_inst_dp, sflash_inst_rdp, /* Instruction and address */ sflash_inst_wrlr, sflash_inst_rdlr, sflash_inst_read, sflash_inst_potp, sflash_inst_pp, sflash_inst_difp, sflash_inst_sse, sflash_inst_se, /* Instruction, address and dummy read */ sflash_inst_read_f, sflash_inst_dofr, sflash_inst_rotp }; /* Exported constants ---------------------------------------------------------*/ /* Exported macro -------------------------------------------------------------*/ #define SFLASH_SPI_COMMAND_SKIP (1) #define SFLASH_SPI_READ_SKIP (2) #define SFLASH_INST_CODE_WREN (0x06) #define SFLASH_INST_CODE_WRDI (0x04) #define SFLASH_INST_CODE_RDID_L (0x9F) #define SFLASH_INST_CODE_RDID_S (0x9E) #define SFLASH_INST_CODE_RDSR (0x05) #define SFLASH_INST_CODE_WRSR (0x01) #define SFLASH_INST_CODE_WRLR (0xE5) #define SFLASH_INST_CODE_RDLR (0xE8) #define SFLASH_INST_CODE_READ (0x03) #define SFLASH_INST_CODE_READ_F (0x0B) #define SFLASH_INST_CODE_DOFR (0x3B) #define SFLASH_INST_CODE_ROTP (0x4B) #define SFLASH_INST_CODE_POTP (0x42) #define SFLASH_INST_CODE_PP (0x02) #define SFLASH_INST_CODE_DIFP (0xA2) #define SFLASH_INST_CODE_SSE (0x20) #define SFLASH_INST_CODE_SE (0xD8) #define SFLASH_INST_CODE_BE (0xC7) #define SFLASH_INST_CODE_DP (0xB9) #define SFLASH_INST_CODE_RDP (0xAB) #define SFLASH_REPLY_LEN_WREN (0) #define SFLASH_REPLY_LEN_WRDI (0) #define SFLASH_REPLY_LEN_RDID_L (20) #define SFLASH_REPLY_LEN_RDID_S (3) #define SFLASH_REPLY_LEN_RDSR (1) #define SFLASH_REPLY_LEN_WRSR (1) #define SFLASH_REPLY_LEN_WRLR (1) #define SFLASH_REPLY_LEN_RDLR (1) #define SFLASH_REPLY_LEN_READ (-1) #define SFLASH_REPLY_LEN_READ_F (-1) #define SFLASH_REPLY_LEN_DOFR (-1) #define SFLASH_REPLY_LEN_ROTP (65) #define SFLASH_REPLY_LEN_POTP (65) #define SFLASH_REPLY_LEN_PP (256) #define SFLASH_REPLY_LEN_DIFP (256) #define SFLASH_REPLY_LEN_SSE (0) #define SFLASH_REPLY_LEN_SE (0) #define SFLASH_REPLY_LEN_BE (0) #define SFLASH_REPLY_LEN_DP (0) #define SFLASH_REPLY_LEN_RDP (0) /* Exported functions --------------------------------------------------------- */ rt_err_t efm_spiFlash_init(void); rt_err_t efm_spiFlash_deinit(void); rt_uint32_t efm_spiFlash_cmd( enum sflash_inst_type_t command, rt_uint32_t address, rt_uint8_t *buffer, rt_uint32_t size); #endif /* __DEV_SFLASH_H__ */