358 lines
16 KiB
C
358 lines
16 KiB
C
/* ###################################################################
|
|
** This component module is generated by Processor Expert. Do not modify it.
|
|
** Filename : McuEE24.h
|
|
** Project : FRDM-K64F_Generator
|
|
** Processor : MK64FN1M0VLL12
|
|
** Component : 24AA_EEPROM
|
|
** Version : Component 01.042, Driver 01.00, CPU db: 3.00.000
|
|
** Compiler : GNU C Compiler
|
|
** Date/Time : 2021-04-18, 20:37, # CodeGen: 733
|
|
** Abstract :
|
|
** Driver for Microchip 24_AA/LC EEPROMs
|
|
** Settings :
|
|
** Component name : McuEE24
|
|
** SDK : McuLib
|
|
** Device Type : 8
|
|
** Initial I2C Device Address Bits : 0x0
|
|
** Block buffer size : 32
|
|
** Acknowledge Polling : Enabled
|
|
** Page Write Time (ms) : 5
|
|
** Wait : McuWait
|
|
** ACK Polling Time (us) : 100
|
|
** Connection :
|
|
** I2C : McuGenericI2C
|
|
** Write Protection Pin : Enabled
|
|
** WP : SDK_BitIO
|
|
** Timeout : Enabled
|
|
** Timeout : McuTimeout
|
|
** Timeout Byte (ms) : 10
|
|
** Timeout Block (ms) : 60
|
|
** Shell : Enabled
|
|
** Shell : McuShell
|
|
** Utility : McuUtility
|
|
** Contents :
|
|
** ReadByte - uint8_t McuEE24_ReadByte(McuEE24_Address addr, uint8_t *data);
|
|
** WriteByte - uint8_t McuEE24_WriteByte(McuEE24_Address addr, uint8_t data);
|
|
** ReadBlock - uint8_t McuEE24_ReadBlock(McuEE24_Address addr, uint8_t *data, uint16_t...
|
|
** WriteBlock - uint8_t McuEE24_WriteBlock(McuEE24_Address addr, uint8_t *data, uint16_t...
|
|
** WriteProtect - void McuEE24_WriteProtect(void);
|
|
** WriteUnprotect - void McuEE24_WriteUnprotect(void);
|
|
** SelectDevice - uint8_t McuEE24_SelectDevice(uint8_t addrI2C);
|
|
** GetSelectedDevice - uint8_t McuEE24_GetSelectedDevice(void);
|
|
** Test - uint8_t McuEE24_Test(void);
|
|
** ParseCommand - uint8_t McuEE24_ParseCommand(const unsigned char *cmd, bool *handled, const...
|
|
** Deinit - void McuEE24_Deinit(void);
|
|
** Init - void McuEE24_Init(void);
|
|
**
|
|
** * Copyright (c) 2013-2021, Erich Styger
|
|
** * Web: https://mcuoneclipse.com
|
|
** * SourceForge: https://sourceforge.net/projects/mcuoneclipse
|
|
** * Git: https://github.com/ErichStyger/McuOnEclipse_PEx
|
|
** * All rights reserved.
|
|
** *
|
|
** * Redistribution and use in source and binary forms, with or without modification,
|
|
** * are permitted provided that the following conditions are met:
|
|
** *
|
|
** * - Redistributions of source code must retain the above copyright notice, this list
|
|
** * of conditions and the following disclaimer.
|
|
** *
|
|
** * - Redistributions in binary form must reproduce the above copyright notice, this
|
|
** * list of conditions and the following disclaimer in the documentation and/or
|
|
** * other materials provided with the distribution.
|
|
** *
|
|
** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
** * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
** * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
** * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
** * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
** * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
** * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
** * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
** ###################################################################*/
|
|
/*!
|
|
** @file McuEE24.h
|
|
** @version 01.00
|
|
** @brief
|
|
** Driver for Microchip 24_AA/LC EEPROMs
|
|
*/
|
|
/*!
|
|
** @addtogroup McuEE24_module McuEE24 module documentation
|
|
** @{
|
|
*/
|
|
|
|
#ifndef __McuEE24_H
|
|
#define __McuEE24_H
|
|
|
|
/* MODULE McuEE24. */
|
|
#include "McuLib.h" /* SDK and API used */
|
|
#include "McuEE24config.h" /* configuration */
|
|
|
|
#if McuEE24_CONFIG_USE_SHELL
|
|
#include "McuShell.h"
|
|
#endif
|
|
|
|
|
|
#if McuEE24_CONFIG_DEVICE_ID==8
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 0 /* A2|A1|A0 are not used */
|
|
#define McuEE24_MAX_ADDRESS 0x03FF /* 8 kBit is 1KByte */
|
|
#define McuEE24_ADDRT uint16_t /* a word/16bit is enough to hold the address */
|
|
#define McuEE24_PAGE_SIZE 16 /* maximum page size (for page/block operation) */
|
|
#elif McuEE24_CONFIG_DEVICE_ID==16
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 0 /* A2|A1|A0 are not used */
|
|
#define McuEE24_MAX_ADDRESS 0x07FF /* 16 kBit is 2KByte */
|
|
#define McuEE24_ADDRT uint16_t /* a word/16bit is enough to hold the address */
|
|
#define McuEE24_PAGE_SIZE 16 /* maximum page size (for page/block operation) */
|
|
#elif McuEE24_CONFIG_DEVICE_ID==32
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 7 /* A2|A1|A0 form the I2C device address => address cannot be more than 7 (8 devices) */
|
|
#define McuEE24_MAX_ADDRESS 0x0FFF /* 32 kBit are 4KByte */
|
|
#define McuEE24_ADDRT uint16_t /* a word/16bit is enough to hold the address */
|
|
#define McuEE24_PAGE_SIZE 8 /* maximum page size (for page/block operation) */
|
|
#elif McuEE24_CONFIG_DEVICE_ID==256
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 7 /* A2|A1|A0 form the I2C device address => address cannot be more than 7 (8 devices) */
|
|
#define McuEE24_MAX_ADDRESS 0x7FFF /* 256 kBit are 32KByte */
|
|
#define McuEE24_ADDRT uint16_t /* a word/16bit is enough to hold the address */
|
|
#define McuEE24_PAGE_SIZE 64 /* maximum page size (for page/block operation) */
|
|
#elif McuEE24_CONFIG_DEVICE_ID==512
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 7 /* A2|A1|A0 form the I2C device address => address cannot be more than 7 (8 devices) */
|
|
#define McuEE24_MAX_ADDRESS 0xFFFF /* 512 kBit are 64KByte */
|
|
#define McuEE24_ADDRT uint16_t /* a word/16bit is enough to hold the address */
|
|
#define McuEE24_PAGE_SIZE 128 /* maximum page size (for page/block operation) */
|
|
#elif McuEE24_CONFIG_DEVICE_ID==1025
|
|
#define McuEE24_MAX_I2C_ADDR_MASK 3 /* A1|A0 form the I2C device address => address cannot be more than 3 (4 devices) */
|
|
#define McuEE24_MAX_ADDRESS 0x1FFFF /* 1024 kBit are 128KByte */
|
|
#define McuEE24_ADDRT uint32_t /* a longword/32bit is needed to hold the address */
|
|
#define McuEE24_PAGE_SIZE 128 /* maximum page size (for page/block operation) */
|
|
#else
|
|
#error "unknown device?"
|
|
#endif
|
|
|
|
#ifndef __BWUserType_McuEE24_Address
|
|
#define __BWUserType_McuEE24_Address
|
|
typedef McuEE24_ADDRT McuEE24_Address; /* A type large enought to hold the address, depending on the EEPROM used. */
|
|
#endif
|
|
|
|
#define McuEE24_PARSE_COMMAND_ENABLED 1 /* set to 1 if method ParseCommand() is present, 0 otherwise */
|
|
|
|
uint8_t McuEE24_WriteByte(McuEE24_Address addr, uint8_t data);
|
|
/*
|
|
** ===================================================================
|
|
** Method : WriteByte (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Writes a single byte to specified address
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** addr - The address inside the EEPROM
|
|
** data - The data value to write
|
|
** Returns :
|
|
** --- - Error code, possible values
|
|
** ERR_OK - OK
|
|
** otherwise it can return an error code of
|
|
** the underlying communication protocol.
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_ReadByte(McuEE24_Address addr, uint8_t *data);
|
|
/*
|
|
** ===================================================================
|
|
** Method : ReadByte (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Reads a single byte from the given memory address
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** addr - The address where to read from memory.
|
|
** * data - Pointer to a location where to store the
|
|
** data
|
|
** Returns :
|
|
** --- - Error code, possible values
|
|
** ERR_OK - OK
|
|
** otherwise it can return an error code of
|
|
** the underlying communication protocol.
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_ReadBlock(McuEE24_Address addr, uint8_t *data, uint16_t dataSize);
|
|
/*
|
|
** ===================================================================
|
|
** Method : ReadBlock (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Read a block of memory.
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** addr - Address where to read the memory
|
|
** * data - Pointer to a buffer where to store the
|
|
** data
|
|
** dataSize - Size of buffer the data pointer
|
|
** is pointing to
|
|
** Returns :
|
|
** --- - Error code, possible values
|
|
** ERR_OK - OK
|
|
** otherwise it can return an error code of
|
|
** the underlying communication protocol.
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_WriteBlock(McuEE24_Address addr, uint8_t *data, uint16_t dataSize);
|
|
/*
|
|
** ===================================================================
|
|
** Method : WriteBlock (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Writes a block of data to the EEPROM
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** addr - Address of memory
|
|
** * data - Pointer to the data
|
|
** dataSize - Size of data
|
|
** Returns :
|
|
** --- - Error code, possible values
|
|
** ERR_OK - OK
|
|
** ERR_OVERFLOW - data block passed has either
|
|
** size of zero or exceeds internal buffer
|
|
** size
|
|
** otherwise it can return an error code of
|
|
** the underlying communication protocol.
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_Test(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : Test (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Test routine to test the driver. Note that this routine
|
|
** writes to the EEPROM!
|
|
** Parameters : None
|
|
** Returns :
|
|
** --- - Error code, possible values
|
|
** ERR_OK - OK
|
|
** ERR_FAULT - Test failed
|
|
** ===================================================================
|
|
*/
|
|
|
|
void McuEE24_WriteProtect(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : WriteProtect (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Prevents writing to the memory. Read operations are not
|
|
** affected.
|
|
** Parameters : None
|
|
** Returns : Nothing
|
|
** ===================================================================
|
|
*/
|
|
|
|
void McuEE24_WriteUnprotect(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : WriteUnprotect (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Allows writing to the memory
|
|
** Parameters : None
|
|
** Returns : Nothing
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_SelectDevice(uint8_t addrI2C);
|
|
/*
|
|
** ===================================================================
|
|
** Method : SelectDevice (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Configures the I2C address to be used for the memory. With
|
|
** this multiple devices attached to the bus can be addressed.
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** addrI2C - I2C Address of the memory device,
|
|
** formed by the address pins.
|
|
** Returns :
|
|
** --- - Error code, possible codes:
|
|
** ERR_OK - OK
|
|
** ERR_VALUE - address exceeds address pins of
|
|
** device type used
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_ParseCommand(const unsigned char *cmd, bool *handled, const McuShell_StdIOType *io);
|
|
/*
|
|
** ===================================================================
|
|
** Method : ParseCommand (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Shell Command Line parser. This method is enabled/disabled
|
|
** depending on if you have the Shell enabled/disabled in the
|
|
** properties.
|
|
** Parameters :
|
|
** NAME - DESCRIPTION
|
|
** * cmd - Pointer to command string
|
|
** * handled - Pointer to variable which tells if
|
|
** the command has been handled or not
|
|
** * io - Pointer to I/O structure
|
|
** Returns :
|
|
** --- - Error code
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_GetSelectedDevice(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : GetSelectedDevice (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Returns the currently used I2C address (e.g. set with
|
|
** SelectDevice()).
|
|
** Parameters : None
|
|
** Returns :
|
|
** --- - I2C device address
|
|
** ===================================================================
|
|
*/
|
|
|
|
uint8_t McuEE24_WriteBlockPage(McuEE24_Address addr, uint8_t *data, uint16_t dataSize);
|
|
/*
|
|
** ===================================================================
|
|
** Method : McuEE24_WriteBlockPage (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** This method is internal. It is used by Processor Expert only.
|
|
** ===================================================================
|
|
*/
|
|
|
|
void McuEE24_Deinit(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : Deinit (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Driver de-initialization
|
|
** Parameters : None
|
|
** Returns : Nothing
|
|
** ===================================================================
|
|
*/
|
|
|
|
void McuEE24_Init(void);
|
|
/*
|
|
** ===================================================================
|
|
** Method : Init (component 24AA_EEPROM)
|
|
**
|
|
** Description :
|
|
** Driver initialization
|
|
** Parameters : None
|
|
** Returns : Nothing
|
|
** ===================================================================
|
|
*/
|
|
|
|
/* END McuEE24. */
|
|
|
|
#endif
|
|
/* ifndef __McuEE24_H */
|
|
/*!
|
|
** @}
|
|
*/
|