mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
542 lines
19 KiB
C
542 lines
19 KiB
C
/*
|
|
* @brief LPC13xx Flash/EEPROM programming driver
|
|
*
|
|
* @note
|
|
* Copyright(C) NXP Semiconductors, 2012
|
|
* All rights reserved.
|
|
*
|
|
* @par
|
|
* Software that is described herein is for illustrative purposes only
|
|
* which provides customers with programming information regarding the
|
|
* LPC products. This software is supplied "AS IS" without any warranties of
|
|
* any kind, and NXP Semiconductors and its licensor disclaim any and
|
|
* all warranties, express or implied, including all implied warranties of
|
|
* merchantability, fitness for a particular purpose and non-infringement of
|
|
* intellectual property rights. NXP Semiconductors assumes no responsibility
|
|
* or liability for the use of the software, conveys no license or rights under any
|
|
* patent, copyright, mask work right, or any other intellectual property rights in
|
|
* or to any products. NXP Semiconductors reserves the right to make changes
|
|
* in the software without notification. NXP Semiconductors also makes no
|
|
* representation or warranty that such application will be suitable for the
|
|
* specified use without further testing or modification.
|
|
*
|
|
* @par
|
|
* Permission to use, copy, modify, and distribute this software and its
|
|
* documentation is hereby granted, under NXP Semiconductors' and its
|
|
* licensor's relevant copyrights in the software, without fee, provided that it
|
|
* is used in conjunction with NXP Semiconductors microcontrollers. This
|
|
* copyright, permission, and disclaimer notice must appear in all copies of
|
|
* this code.
|
|
*/
|
|
|
|
#ifndef __FLASH_EEPROM_13XX_H_
|
|
#define __FLASH_EEPROM_13XX_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @defgroup FLASH_EEPROM_13XX CHIP: LPC13xx FLASH/EEPROM Programming driver
|
|
* @ingroup CHIP_13XX_Drivers
|
|
* @{
|
|
*/
|
|
|
|
#if defined(CHIP_LPC1347)
|
|
#define ERASE_PAGE_SUPPORT
|
|
#define EEPROM_RW_SUPPORT
|
|
#endif
|
|
|
|
/** Flash Programming Entry Location */
|
|
#define FLASH_ENTRY_LOCATION (0x1fff1ff1)
|
|
|
|
/** The maximum number of flash programing parameters */
|
|
#define FLASH_PARAMETER_NUM (5)
|
|
|
|
/** The maximum number of flash programing results */
|
|
#define FLASH_RESULT_NUM (4)
|
|
|
|
/** Flash programming function type */
|
|
typedef void (*FLASH_ENTRY_T)(unsigned int[], unsigned int[]);
|
|
|
|
/**
|
|
* @brief Flash command code definitions
|
|
*/
|
|
typedef enum {
|
|
FLASH_PREPARE = 50, /*!< Prepare sector(s) for write operation */
|
|
FLASH_COPY_RAM_TO_FLASH = 51, /*!< Copy RAM to Flash */
|
|
FLASH_ERASE = 52, /*!< Erase sector(s) */
|
|
FLASH_BLANK_CHECK = 53, /*!< Blank check sector(s) */
|
|
FLASH_READ_PART_ID = 54, /*!< Read chip part ID */
|
|
FLASH_READ_BOOT_VER = 55, /*!< Read chip boot code version */
|
|
FLASH_COMPARE = 56, /*!< Compare memory areas */
|
|
FLASH_REINVOKE_ISP = 57, /*!< Reinvoke ISP */
|
|
FLASH_READ_UID = 58, /*!< Read UID */
|
|
#if defined(ERASE_PAGE_SUPPORT)
|
|
FLASH_ERASE_PAGE = 59, /*!< Erase page */
|
|
#endif
|
|
#if defined(EEPROM_RW_SUPPORT)
|
|
FLASH_EEPROM_WRITE = 61, /*!< EEPROM Write */
|
|
FLASH_EEPROM_READ = 62, /*!< EEPROM Read */
|
|
#endif
|
|
} FLASH_CMD_CODE_T;
|
|
|
|
/**
|
|
* @brief Flash status code definitions
|
|
*/
|
|
typedef enum {
|
|
CMD_SUCCESS, /*!< Command is executed successfully. */
|
|
INVALID_COMMAND, /*!< Invalid command. */
|
|
SRC_ADDR_ERROR, /*!< Source address is not on a word boundary. */
|
|
DST_ADDR_ERROR, /*!< Destination address is not on a correct boundary. */
|
|
SRC_ADDR_NOT_MAPPED, /*!< Source address is not mapped in the memory map. */
|
|
DST_ADDR_NOT_MAPPED, /*!< Destination address is not mapped in the memory map. */
|
|
COUNT_ERROR, /*!< Byte count is not multiple of 4 or is not a permitted value. */
|
|
INVALID_SECTOR, /*!< Sector number is invalid. */
|
|
SECTOR_NOT_BLANK, /*!< Sector is not blank. */
|
|
SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION, /*!< Command to prepare sector for write operation was not executed. */
|
|
COMPARE_ERROR, /*!< Source and destination data is not same. */
|
|
BUSY, /*!< Flash programming hardware interface is busy. */
|
|
} FLASH_STATUS_CODE_T;
|
|
|
|
#if defined(EEPROM_RW_SUPPORT)
|
|
/** EEPROM size */
|
|
#define EEPROM_SIZE (4 << 10)
|
|
#endif
|
|
|
|
/**
|
|
* @brief Command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t pParams[FLASH_PARAMETER_NUM]; /*!< Parameters*/
|
|
} FLASH_COMMAND_T;
|
|
|
|
/**
|
|
* @brief Command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint32_t pResult[FLASH_RESULT_NUM]; /*!< Results*/
|
|
} FLASH_OUTPUT_T;
|
|
|
|
/* Flash Programming Command Description
|
|
Command Parameters Return Code Result
|
|
----------------------------------------------------------------------------------------------------------
|
|
FLASH_PREPARE Start Sector Number CMD_SUCCESS None
|
|
End Sector Number BUSY
|
|
INVALID_SECTOR
|
|
FLASH_COPY_RAM2FLASH Destination Flash Addr CMD_SUCCESS None
|
|
Source RAM Addr SRC_ADDR_ERROR
|
|
Number of bytes written SRC_ADDR_NOT_MAPPED
|
|
CCLK in kHz DST_ADDR_NOT_MAPPED
|
|
COUNT_ERROR
|
|
SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION
|
|
BUSY
|
|
FLASH_ERASE Start Sector Number CMD_SUCCESS None
|
|
Emd Sector Number BUSY
|
|
CCLK in kHz SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION
|
|
INVALID_SECTOR
|
|
FLASH_BLANK_CHECK Start Sector Number CMD_SUCCESS Non Blank Sector Offset(if Status code is SECTOR_NOT_BLANK)
|
|
End Sector Number BUSY Content of non blank word location
|
|
SECTOR_NOT_BLANK
|
|
INVALID_SECTOR
|
|
FLASH_READ_PART_ID None CMD_SUCCESS Part ID
|
|
FLASH_READ_BOOT_VER None CMD_SUCCESS <byte1(Major)>.<byte0(Minor)>
|
|
FLASH_COMPARE Destination Addr CMD_SUCCESS Offset of the first mismatch
|
|
Source Address COMPARE_ERROR
|
|
Number of bytes compared COUNT_ERROR
|
|
ADDR_ERROR
|
|
ADDR_NOT_MAPPED
|
|
FLASH_REINVOKE_ISP None None None
|
|
FLASH_READ_UID None CMD_SUCCESS The first 32-bit word
|
|
The second 32-bit word.
|
|
The third 32-bit word.
|
|
The fourth 32-bit word
|
|
FLASH_ERASE_PAGE Start Page Number CMD_SUCCESS None
|
|
End Page Number BUSY
|
|
CCLK in kHz SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION
|
|
INVALID_SECTOR
|
|
FLASH_EEPROM_WRITE EEPROM Addr CMD_SUCCESS None
|
|
RAM Addr SRC_ADDR_NOT_MAPPED
|
|
Number of bytes written DST_ADDR_NOT_MAPPED
|
|
CCLK in kHz
|
|
FLASH_EEPROM_READ EEPROM Addr CMD_SUCCESS None
|
|
RAM Addr SRC_ADDR_NOT_MAPPED
|
|
Number of bytes read DST_ADDR_NOT_MAPPED
|
|
CCLK in kHz
|
|
*/
|
|
|
|
/**
|
|
* @brief [Prepare sectors] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t start; /*!< Start Sector Number */
|
|
uint32_t end; /*!<End Sector Number (should be greater than or equal to start sector number).*/
|
|
} FLASH_PREPARE_SECTORS_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Prepare sectors] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} FLASH_PREPARE_SECTORS_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Copy Ram to Flash] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t dst; /*!< Destination flash address where data bytes are to be written (256 byte boundary) */
|
|
uint32_t src; /*!<Source RAM address from which data bytes are to be read (a word boudary).*/
|
|
uint32_t byteNum; /*!<Number of bytes to be written. Should be 256 | 512 | 1024 | 4096.*/
|
|
uint32_t cclk; /*!<System Clock Frequency (CCLK) in kHz.*/
|
|
} FLASH_COPY_RAM_TO_FLASH_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Copy Ram to Flash] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} FLASH_COPY_RAM_TO_FLASH_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Erase Sector(s)] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t start; /*!< Start Sector Number */
|
|
uint32_t end; /*!<End Sector Number (should be greater than or equal to start sector number).*/
|
|
uint32_t cclk; /*!<System Clock Frequency (CCLK) in kHz.*/
|
|
} FLASH_ERASE_SECTORS_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Erase Sector(s)] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} FLASH_ERASE_SECTORS_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Blank check sector(s)] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t start; /*!< Start Sector Number */
|
|
uint32_t end; /*!<End Sector Number (should be greater than or equal to start sector number).*/
|
|
} FLASH_BLANK_CHECK_SECTORS_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Blank check sector(s)] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint32_t firstNonBlankLoc; /*!< Offset of the first non blank word location if the Status Code is SECTOR_NOT_BLANK.*/
|
|
uint32_t firstNonBlankVal; /*!<Contents of non blank word location.*/
|
|
} FLASH_BLANK_CHECK_SECTORS_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Read Part Identification number] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
} FLASH_READ_PART_ID_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Read Part Identification number] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint32_t partID; /*!< Part Identification Number*/
|
|
} FLASH_READ_PART_ID_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Read Boot code version number] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
} FLASH_READ_BOOTCODE_VER_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Read Boot code version number] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint8_t minor; /*!< Minor*/
|
|
uint8_t major; /*!< Major*/
|
|
} FLASH_READ_BOOTCODE_VER_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Compare memory] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t dst; /*!<Starting flash or RAM address of data bytes to be compared (a word boundary) */
|
|
uint32_t src; /*!<Starting flash or RAM address of data bytes to be compared (a word boudary).*/
|
|
uint32_t byteNum; /*!<Number of bytes to be compared; should be a multiple of 4.*/
|
|
} FLASH_COMPARE_MEM_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Compare memory] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint32_t offset; /*!< Offset of the first mismatch if the Status Code is COMPARE_ERROR.*/
|
|
} FLASH_COMPARE_MEM_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Reinvoke ISP] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
} FLASH_REINVOKE_ISP_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Reinvoke ISP] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} FLASH_REINVOKE_ISP_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [ReadUID] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
} FLASH_READ_UID_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [ReadUID] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
uint32_t id[4]; /*!< UID*/
|
|
} FLASH_READ_UID_OUTPUT_T;
|
|
|
|
#if defined(ERASE_PAGE_SUPPORT)
|
|
/**
|
|
* @brief [Erase page(s)] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t start; /*!< Start Page Number */
|
|
uint32_t end; /*!<End Page Number (should be greater than or equal to start page number).*/
|
|
uint32_t cclk; /*!<System Clock Frequency (CCLK) in kHz.*/
|
|
} FLASH_ERASE_PAGES_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Erase page(s)] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} FLASH_ERASE_PAGES_OUTPUT_T;
|
|
|
|
#endif /* defined(ERASE_PAGE_SUPPORT) */
|
|
|
|
#if defined(EEPROM_RW_SUPPORT)
|
|
/**
|
|
* @brief [Write EEPROM] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t eepromAddr; /*!< EEPROM address.*/
|
|
uint32_t ramAddr; /*!< RAM address.*/
|
|
uint32_t byteNum; /*!<Number of bytes to be written.*/
|
|
uint32_t cclk; /*!<System Clock Frequency (CCLK) in kHz.*/
|
|
} EEPROM_WRITE_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Write EEPROM] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} EEPROM_WRITE_OUTPUT_T;
|
|
|
|
/**
|
|
* @brief [Read EEPROM] command parameter table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t cmd; /*!< Command code */
|
|
uint32_t eepromAddr; /*!< EEPROM address.*/
|
|
uint32_t ramAddr; /*!< RAM address.*/
|
|
uint32_t byteNum; /*!<Number of bytes to be written.*/
|
|
uint32_t cclk; /*!<System Clock Frequency (CCLK) in kHz.*/
|
|
} EEPROM_READ_COMMAND_T;
|
|
|
|
/**
|
|
* @brief [Read EEPROM] command result table structure
|
|
*/
|
|
typedef struct {
|
|
uint32_t status; /*!< Status code */
|
|
} EEPROM_READ_OUTPUT_T;
|
|
|
|
#endif /* defined(EEPROM_RW_SUPPORT) */
|
|
|
|
/**
|
|
* @brief Get sector number of the specified address
|
|
* @param adr : flash address.
|
|
* @return sector number
|
|
*/
|
|
STATIC INLINE uint32_t Chip_FLASH_GetSecNum(uint32_t adr)
|
|
{
|
|
return adr >> 12;
|
|
}
|
|
|
|
/**
|
|
* @brief Execute flash programming command
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_Execute(FLASH_COMMAND_T *pCommand, FLASH_OUTPUT_T *pOutput)
|
|
{
|
|
((FLASH_ENTRY_T) FLASH_ENTRY_LOCATION)((unsigned int *) pCommand, (unsigned int *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Prepare sector(s) for write operation
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
* @note This command must be executed before executing "Copy RAM to flash" or "Erase Sector(s)" command. <br>
|
|
* The boot sector can not be prepared by this command.
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_PrepareSectors(FLASH_PREPARE_SECTORS_COMMAND_T *pCommand,
|
|
FLASH_PREPARE_SECTORS_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Copy RAM to flash
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
* @note The affected sectors should be prepared first by calling "Prepare Sector for Write Operation" command.<br>
|
|
* The boot sector can not be written by this command.
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_CopyRamToFlash(FLASH_COPY_RAM_TO_FLASH_COMMAND_T *pCommand,
|
|
FLASH_COPY_RAM_TO_FLASH_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Erase Sector(s)
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
* @note The boot sector can not be erased by this command.
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_EraseSectors(FLASH_ERASE_SECTORS_COMMAND_T *pCommand,
|
|
FLASH_ERASE_SECTORS_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Blank check sector(s)
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_BlankCheckSectors(FLASH_BLANK_CHECK_SECTORS_COMMAND_T *pCommand,
|
|
FLASH_BLANK_CHECK_SECTORS_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Read Part Identification number
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
void Chip_FLASH_ReadPartID(FLASH_READ_PART_ID_OUTPUT_T *pOutput);
|
|
|
|
/**
|
|
* @brief Read Boot code version number
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
void Chip_FLASH_ReadBootCodeVersion(FLASH_READ_BOOTCODE_VER_OUTPUT_T *pOutput);
|
|
|
|
/**
|
|
* @brief Compare memory
|
|
* @param pCommand : parameters
|
|
* @param pOutput : results
|
|
* @return Nothing
|
|
* @note The result may not be correct when the source or destination includes any
|
|
* of the first 512 bytes starting from address zero. The first 512 bytes can be re-mapped to RAM.
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_CompareMem(FLASH_COMPARE_MEM_COMMAND_T *pCommand,
|
|
FLASH_COMPARE_MEM_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Reinvoke ISP
|
|
* @return Nothing
|
|
*/
|
|
void Chip_FLASH_ReInvokeISP(void);
|
|
|
|
/**
|
|
* @brief Read UID
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
void Chip_FLASH_ReadUID(FLASH_READ_UID_OUTPUT_T *pOutput);
|
|
|
|
#if defined(ERASE_PAGE_SUPPORT)
|
|
/**
|
|
* @brief Erase Page(s)
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
STATIC INLINE void Chip_FLASH_ErasePages(FLASH_ERASE_PAGES_COMMAND_T *pCommand,
|
|
FLASH_ERASE_PAGES_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
#endif /* defined(ERASE_PAGE_SUPPORT) */
|
|
|
|
#if defined(EEPROM_RW_SUPPORT)
|
|
/**
|
|
* @brief Write EEPROM
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
* @note The top 64 bytes of the EEPROM memory are reserved and cannot be written to.
|
|
*/
|
|
STATIC INLINE void Chip_EEPROM_Write(EEPROM_WRITE_COMMAND_T *pCommand,
|
|
EEPROM_WRITE_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
/**
|
|
* @brief Read EEPROM
|
|
* @param pCommand : Command information
|
|
* @param pOutput : Output information
|
|
* @return Nothing
|
|
*/
|
|
STATIC INLINE void Chip_EEPROM_Read(EEPROM_READ_COMMAND_T *pCommand,
|
|
EEPROM_READ_OUTPUT_T *pOutput)
|
|
{
|
|
Chip_FLASH_Execute((FLASH_COMMAND_T *) pCommand, (FLASH_OUTPUT_T *) pOutput);
|
|
}
|
|
|
|
#endif /*defined(EEPROM_RW_SUPPORT)*/
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __FLASH_EEPROM_13XX_H_ */
|