Functions | |
void | hal_flash_page_erase (uint8_t pn) |
void | hal_flash_byte_write (uint16_t a, uint8_t b) |
void | hal_flash_bytes_write (uint16_t a, const uint8_t *p, uint16_t n) |
uint8_t | hal_flash_byte_read (uint16_t a) |
void | hal_flash_bytes_read (uint16_t a, uint8_t *p, uint16_t n) |
Hardware dependencies | |
This sections contains hardware specific flash definitions. These definitions are not used inside the Flash HAL directly, but can become handy for the user of the Flash HAL. | |
#define | HAL_FLASH_PAGE_SIZE 512 |
#define | HAL_DATA_NV_BASE_ADDRESS 0xFE00 |
#define | HAL_DATA_NV_FLASH_PAGES 1 |
#define | HAL_DATA_NV_FLASH_PN0 31 |
#define | HAL_DATA_NV_FLASH_PN1 31 |
#define HAL_FLASH_PAGE_SIZE 512 |
Number of bytes per Flash page.
Definition at line 33 of file hal_flash_hw.h.
#define HAL_DATA_NV_BASE_ADDRESS 0xFE00 |
Start (xdata) address for "Non Volatile Data Memory".
Used by the EEPROM library.
Definition at line 40 of file hal_flash_hw.h.
#define HAL_DATA_NV_FLASH_PAGES 1 |
Defines the number of physical Flash pages used by one "Non Volatile Data Memory" page.
Definition at line 46 of file hal_flash_hw.h.
#define HAL_DATA_NV_FLASH_PN0 31 |
Defines the first physical flash page to which one "Non Volatile Data Memory" is mapped.
Used by the EEPROM library.
Definition at line 54 of file hal_flash_hw.h.
#define HAL_DATA_NV_FLASH_PN1 31 |
Definition at line 56 of file hal_flash_hw.h.
void hal_flash_page_erase | ( | uint8_t | pn ) |
Function to erase a page in the Flash memory
pn | Page number |
Definition at line 21 of file hal_flash.c.
{ // Save interrupt enable state and disable interrupts: F0 = EA; EA = 0; // Enable flash write operation: WEN = 1; // Write the page address to FCR to start the page erase operation. This // operation is "self timed" when executing from the flash; the CPU will // halt until the operation is finished: FCR = pn; // When running from XDATA RAM we need to wait for the operation to finish: while(RDYN == 1) ; WEN = 0; EA = F0; // Restore interrupt enable state }
void hal_flash_byte_write | ( | uint16_t | a, |
uint8_t | b | ||
) |
Function to write a byte to the Flash memory
a | 16 bit address in Flash |
b | byte to write |
Definition at line 44 of file hal_flash.c.
{ static uint8_t xdata *pb; // Save interrupt enable state and disable interrupts: F0 = EA; EA = 0; // Enable flash write operation: WEN = 1; // Write the byte directly to the flash. This operation is "self timed" when // executing from the flash; the CPU will halt until the operation is // finished: pb = (uint8_t xdata *)a; *pb = b; //lint -e613 "Null pointer ok here" // When running from XDATA RAM we need to wait for the operation to finish: while(RDYN == 1) ; WEN = 0; EA = F0; // Restore interrupt enable state }
void hal_flash_bytes_write | ( | uint16_t | a, |
const uint8_t * | p, | ||
uint16_t | n | ||
) |
Function to write n bytes to the Flash memory
a | 16 bit address in Flash |
*p | pointer to bytes to write |
n | number of bytes to write |
Definition at line 70 of file hal_flash.c.
{ static uint8_t xdata *pb; // Save interrupt enable state and disable interrupts: F0 = EA; EA = 0; // Enable flash write operation: WEN = 1; // Write the bytes directly to the flash. This operation is // "self timed"; the CPU will halt until the operation is // finished: pb = (uint8_t xdata *)a; while(n--) { *pb++ = *p++; // // When running from XDATA RAM we need to wait for the operation to // finish: while(RDYN == 1) ; } WEN = 0; EA = F0; // Restore interrupt enable state }
uint8_t hal_flash_byte_read | ( | uint16_t | a ) |
Function to read a byte from the Flash memory
a | 16 bit address in Flash |
Definition at line 100 of file hal_flash.c.
{
uint8_t xdata *pb = (uint8_t xdata *)a;
return *pb;
}
void hal_flash_bytes_read | ( | uint16_t | a, |
uint8_t * | p, | ||
uint16_t | n | ||
) |
Function to read n bytes from the Flash memory
a | 16 bit address in Flash |
*p | pointer to bytes to write |
n | number of bytes to read |
Definition at line 106 of file hal_flash.c.
{
uint8_t xdata *pb = (uint8_t xdata *)a;
while(n--)
{
*p = *pb;
pb++;
p++;
}
}