290 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|   MEMORY Generated Driver API Header File
 | |
| 
 | |
|   @Company
 | |
|     Microchip Technology Inc.
 | |
| 
 | |
|   @File Name
 | |
|     memory.h
 | |
| 
 | |
|   @Summary
 | |
|     This is the generated header file for the MEMORY driver using PIC10 / PIC12 / PIC16 / PIC18 MCUs
 | |
| 
 | |
|   @Description
 | |
|     This header file provides APIs for driver for MEMORY.
 | |
|     Generation Information :
 | |
|         Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.81.8
 | |
|         Device            :  PIC18F25K83
 | |
|         Driver Version    :  2.1.3
 | |
|     The generated drivers are tested against the following:
 | |
|         Compiler          :  XC8 2.36 and above
 | |
|         MPLAB             :  MPLAB X 6.00
 | |
| *******************************************************************************/
 | |
| 
 | |
| /*
 | |
|     (c) 2018 Microchip Technology Inc. and its subsidiaries. 
 | |
|     
 | |
|     Subject to your compliance with these terms, you may use Microchip software and any 
 | |
|     derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
 | |
|     license terms applicable to your use of third party software (including open source software) that 
 | |
|     may accompany Microchip software.
 | |
|     
 | |
|     THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
 | |
|     EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
 | |
|     IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
 | |
|     FOR A PARTICULAR PURPOSE.
 | |
|     
 | |
|     IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
 | |
|     INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
 | |
|     WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
 | |
|     HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
 | |
|     THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
 | |
|     CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
 | |
|     OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
 | |
|     SOFTWARE.
 | |
| */
 | |
| 
 | |
| #ifndef MEMORY_H
 | |
| #define MEMORY_H
 | |
| 
 | |
| /**
 | |
|   Section: Included Files
 | |
| */
 | |
| 
 | |
| #include <stdbool.h>
 | |
| #include <stdint.h>
 | |
| 
 | |
| #ifdef __cplusplus  // Provide C++ Compatibility
 | |
| 
 | |
|     extern "C" {
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|   Section: Macro Declarations
 | |
| */
 | |
| 
 | |
| #define WRITE_FLASH_BLOCKSIZE    64
 | |
| #define ERASE_FLASH_BLOCKSIZE    64
 | |
| #define END_FLASH                0x008000
 | |
| 
 | |
| /**
 | |
|   Section: Flash Module APIs
 | |
| */
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Reads a data byte from Flash
 | |
| 
 | |
|   @Description
 | |
|     This routine reads a data byte from given Flash address
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     flashAddr - Flash program memory location from which data has to be read
 | |
| 
 | |
|   @Returns
 | |
|     Data byte read from given Flash address
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint8_t    readByte;
 | |
|     uint32_t    flashAddr = 0x7D00;
 | |
| 
 | |
|     readByte = FLASH_ReadByte(flashAddr);
 | |
|     </code>
 | |
| */
 | |
| uint8_t FLASH_ReadByte(uint32_t flashAddr);
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Reads a data word from Flash
 | |
| 
 | |
|   @Description
 | |
|     This routine reads a data word from given Flash address
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     flashAddr - Flash program memory location from which data has to be read
 | |
| 
 | |
|   @Returns
 | |
|     Data word read from given Flash address
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint16_t    readWord;
 | |
|     uint32_t    flashAddr = 0x7D00;
 | |
| 
 | |
|     readWord = FLASH_ReadWord(flashAddr);
 | |
|     </code>
 | |
| */
 | |
| uint16_t FLASH_ReadWord(uint32_t flashAddr);
 | |
| 
 | |
|  /**
 | |
|   @Summary
 | |
|     Writes a data byte into Flash
 | |
| 
 | |
|   @Description
 | |
|     This routine writes the given data byte into mentioned Flash address.
 | |
| 
 | |
|     This routine intially reads block of data (from Flash) into RAM, updates
 | |
|     data values in RAM, and writes back updated values to Flash.
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     flashAddr      - Flash program memory location to which data has to be written
 | |
|     *flashRdBufPtr - Pointer to RAM buffer of size 'ERASE_FLASH_BLOCKSIZE' at least
 | |
|     byte           - Data byte to be written in Flash
 | |
| 
 | |
|   @Returns
 | |
|     None
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint8_t    writeData = 0xAA;
 | |
|     uint32_t    flashAddr = 0x7D00;
 | |
|     uint8_t    Buf[ERASE_FLASH_BLOCKSIZE];
 | |
| 
 | |
|     FLASH_WriteWord(flashAddr, Buf, writeData);
 | |
|     </code>
 | |
| */
 | |
| void FLASH_WriteByte(uint32_t flashAddr, uint8_t *flashRdBufPtr, uint8_t byte);
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Writes data to complete block of Flash
 | |
| 
 | |
|   @Description
 | |
|     This routine writes data bytes to complete block in Flash program memory
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     writeAddr      - A valid block starting address in Flash
 | |
|     *flashWrBufPtr - Pointer to an array of size 'WRITE_FLASH_BLOCKSIZE' at least
 | |
| 
 | |
|   @Returns
 | |
|     -1, if the given address is not a valid block starting address of Flash
 | |
|     0, in case of valid block starting address
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     #define FLASH_ROW_ADDRESS     0x7D00
 | |
| 
 | |
|     uint8_t wrBlockData[] =
 | |
|     {
 | |
|         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
 | |
|         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
 | |
|         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
 | |
|         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
 | |
|     };
 | |
| 
 | |
|     // write to Flash memory block
 | |
|     FLASH_WriteBlock((uint32_t)FLASH_ROW_ADDRESS, (uint8_t *)wrBlockData);
 | |
|     </code>
 | |
| */
 | |
| int8_t FLASH_WriteBlock(uint32_t writeAddr, uint8_t *flashWrBufPtr);
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Erases complete Flash program memory block
 | |
| 
 | |
|   @Description
 | |
|     This routine erases complete Flash program memory block
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     baseAddr - A valid block starting address in Flash program memory
 | |
| 
 | |
|   @Returns
 | |
|     None
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint32_t    flashBlockStartAddr = 0x7D00;
 | |
| 
 | |
|     FLASH_EraseBlock(flashBlockStartAddr);
 | |
|     </code>
 | |
| */
 | |
| void FLASH_EraseBlock(uint32_t baseAddr);
 | |
| 
 | |
| /**
 | |
|   Section: Data EEPROM Module APIs
 | |
| */
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Writes a data byte to Data EEPROM
 | |
| 
 | |
|   @Description
 | |
|     This routine writes a data byte to given Data EEPROM location
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     bAdd  - Data EEPROM location to which data to be written
 | |
|     bData - Data to be written to Data EEPROM location
 | |
| 
 | |
|   @Returns
 | |
|     None
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint16_t dataeeAddr = 0x10;
 | |
|     uint8_t dataeeData = 0x55;
 | |
| 
 | |
|     DATAEE_WriteByte(dataeeAddr, dataeeData);
 | |
|     </code>
 | |
| */
 | |
| void DATAEE_WriteByte(uint16_t bAdd, uint8_t bData);
 | |
| 
 | |
| /**
 | |
|   @Summary
 | |
|     Reads a data byte from Data EEPROM
 | |
| 
 | |
|   @Description
 | |
|     This routine reads a data byte from given Data EEPROM location
 | |
| 
 | |
|   @Preconditions
 | |
|     None
 | |
| 
 | |
|   @Param
 | |
|     bAdd  - Data EEPROM location from which data has to be read
 | |
| 
 | |
|   @Returns
 | |
|     Data byte read from given Data EEPROM location
 | |
| 
 | |
|   @Example
 | |
|     <code>
 | |
|     uint16_t dataeeAddr = 0x10;
 | |
|     uint8_t readData;
 | |
| 
 | |
|     readData = DATAEE_ReadByte(dataeeAddr);
 | |
|     </code>
 | |
| */
 | |
| uint8_t DATAEE_ReadByte(uint16_t bAdd);
 | |
| 
 | |
| void MEMORY_Tasks(void);
 | |
| 
 | |
| #ifdef __cplusplus  // Provide C++ Compatibility
 | |
| 
 | |
|     }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif // MEMORY_H
 | |
| /**
 | |
|  End of File
 | |
| */
 | |
| 
 |