HAL  v0.6.1
Hardware Abstraction Layer
Loading...
Searching...
No Matches
NVM

Non-volatile Memory. More...

Collaboration diagram for NVM:

Enumerations

enum  nvm_result_t {
  NVM_RESULT_OK ,
  NVM_RESULT_INVALID ,
  NVM_RESULT_UNSUPPORTED ,
  NVM_RESULT_BUSY ,
  NVM_RESULT_ERR ,
  TOTAL_NVM_RESULT
}
 
enum  nvm_status_t {
  NVM_STATUS_UNKNOWN ,
  NVM_STATUS_OK ,
  NVM_STATUS_BUSY ,
  NVM_STATUS_STOP ,
  NVM_STATUS_WRITING ,
  NVM_STATUS_READING ,
  NVM_STATUS_ERR ,
  TOTAL_NVM_STATUS
}
 
enum  nvm_mode_t {
  NVM_MODE_PAGE_ERASE ,
  NVM_MODE_ROW_PROGRAM ,
  NVM_MODE_QUAD_WORD_PROGRAM ,
  NVM_MODE_WORD_PROGRAM ,
  TOTAL_NVM_MODE
}
 

Functions

nvm_result_t hal_nvm_init (void)
 Initialize NVM.
 
nvm_result_t hal_nvm_read (const uint32_t address, uint32_t *rx_buffer, const size_t len)
 Read memory from address to specified length.
 
nvm_result_t hal_nvm_write (const uint32_t address, const uint32_t *tx_buffer, const size_t len, const nvm_mode_t mode)
 Write to memory on specified address.
 
nvm_result_t hal_nvm_erase (const uint32_t address, const nvm_mode_t mode)
 Erase memory on specified address.
 
nvm_status_t hal_nvm_get_status (void)
 Get NVM operation status.
 
nvm_result_t hal_nvm_mutex_take (const uint8_t channel, const uint32_t timeout_ms)
 Try acquire RTOS mutex for specified channel.
 
nvm_result_t hal_nvm_mutex_give (const uint8_t channel)
 Release RTOS mutex for specified channel.
 

Detailed Description

Non-volatile Memory.

Enumeration Type Documentation

◆ nvm_mode_t

enum nvm_mode_t

#include <nvm/public_inc/hal_nvm.h>

Enumerator
NVM_MODE_PAGE_ERASE 
NVM_MODE_ROW_PROGRAM 
NVM_MODE_QUAD_WORD_PROGRAM 
NVM_MODE_WORD_PROGRAM 
TOTAL_NVM_MODE 

◆ nvm_result_t

#include <nvm/public_inc/hal_nvm.h>

Enumerator
NVM_RESULT_OK 

No error.

NVM_RESULT_INVALID 

Operation invalid.

NVM_RESULT_UNSUPPORTED 

Operation not supported.

NVM_RESULT_BUSY 

Bus busy.

NVM_RESULT_ERR 

Error occurred.

TOTAL_NVM_RESULT 

◆ nvm_status_t

#include <nvm/public_inc/hal_nvm.h>

Enumerator
NVM_STATUS_UNKNOWN 

Unknown bus status.

NVM_STATUS_OK 

No error.

NVM_STATUS_BUSY 

Bus busy.

NVM_STATUS_STOP 

Channel stopped.

NVM_STATUS_WRITING 

Channel writing.

NVM_STATUS_READING 

Channel reading.

NVM_STATUS_ERR 

Error occurred.

TOTAL_NVM_STATUS 

Function Documentation

◆ hal_nvm_erase()

nvm_result_t hal_nvm_erase ( const uint32_t address,
const nvm_mode_t mode )

#include <nvm/public_inc/hal_nvm.h>

Erase memory on specified address.

uint32_t start_addr = 0x8000000UL;
nvm_result_t
Definition hal_nvm.h:37
nvm_result_t hal_nvm_erase(const uint32_t address, const nvm_mode_t mode)
Erase memory on specified address.
@ NVM_MODE_PAGE_ERASE
Definition hal_nvm.h:62
Parameters
[in]addressStart address to be erased
[in]modeErase mode
Return values
NVM_RESULT_OKSuccess erase from specified address
NVM_RESULT_INVALIDInvalid address or invalid erase mode
NVM_RESULT_ERRErase operation failed

◆ hal_nvm_get_status()

nvm_status_t hal_nvm_get_status ( void )

#include <nvm/public_inc/hal_nvm.h>

Get NVM operation status.

Example usage:

         nvm_status_t status = hal_nvm_get_status();
Returns
NVM status

◆ hal_nvm_init()

nvm_result_t hal_nvm_init ( void )

#include <nvm/public_inc/hal_nvm.h>

Initialize NVM.

nvm_result_t hal_nvm_init(void)
Initialize NVM.
Return values
NVM_RESULT_OKSuccess initialize NVM
NVM_RESULT_UNSUPPORTEDOperation not supported
NVM_RESULT_ERRFailed initialize NVM

◆ hal_nvm_mutex_give()

nvm_result_t hal_nvm_mutex_give ( const uint8_t channel)

#include <nvm/public_inc/hal_nvm.h>

Release RTOS mutex for specified channel.

nvm_result_t result = hal_nvm_mutex_give( BSP_NVM_CHANNEL_1 );
nvm_result_t hal_nvm_mutex_give(const uint8_t channel)
Release RTOS mutex for specified channel.
Parameters
[in]channelNVM channel's mutex to be released
Return values
NVM_RESULT_OKSuccess release mutex
NVM_RESULT_INVALIDInvalid channel
NVM_RESULT_UNSUPPORTEDOperation not supported
NVM_RESULT_ERRFailed release mutex

◆ hal_nvm_mutex_take()

nvm_result_t hal_nvm_mutex_take ( const uint8_t channel,
const uint32_t timeout_ms )

#include <nvm/public_inc/hal_nvm.h>

Try acquire RTOS mutex for specified channel.

nvm_result_t result = hal_nvm_mutex_take( BSP_NVM_CHANNEL_1, 10U );
nvm_result_t hal_nvm_mutex_take(const uint8_t channel, const uint32_t timeout_ms)
Try acquire RTOS mutex for specified channel.
Parameters
[in]channelNVM channel's mutex to be locked
[in]timeout_msMutex acquiring timeout in milliseconds
Return values
NVM_RESULT_OKSuccess acquire mutex
NVM_RESULT_INVALIDInvalid channel
NVM_RESULT_UNSUPPORTEDOperation not supported
NVM_RESULT_ERRFailed acquire mutex

◆ hal_nvm_read()

nvm_result_t hal_nvm_read ( const uint32_t address,
uint32_t * rx_buffer,
const size_t len )

#include <nvm/public_inc/hal_nvm.h>

Read memory from address to specified length.

uint32_t rx_buffer = 0UL;
uint32_t start_addr = 0x8000000UL;
nvm_result_t result = hal_nvm_read( start_addr,
&rx_buffer,
sizeof( rx_buffer ) );
nvm_result_t hal_nvm_read(const uint32_t address, uint32_t *rx_buffer, const size_t len)
Read memory from address to specified length.
Parameters
[in]addressStart address to be read
[out]rx_bufferReceiving buffer
[in]lenRange to read from start address
Return values
NVM_RESULT_OKSuccess read memory
NVM_RESULT_INVALIDOperation invalid
NVM_RESULT_ERRRead operation failed

◆ hal_nvm_write()

nvm_result_t hal_nvm_write ( const uint32_t address,
const uint32_t * tx_buffer,
const size_t len,
const nvm_mode_t mode )

#include <nvm/public_inc/hal_nvm.h>

Write to memory on specified address.

uint32_t tx_buffer = 0xDEADBEEFUL;
uint32_t start_addr = 0x8000000UL;
nvm_result_t result = hal_nvm_write( start_addr,
&tx_buffer,
sizeof( tx_buffer ),
BSP_NVM_MODE_ROW_PROGRAM );
nvm_result_t hal_nvm_write(const uint32_t address, const uint32_t *tx_buffer, const size_t len, const nvm_mode_t mode)
Write to memory on specified address.
Parameters
[in]addressStart address to be written
[in]tx_bufferBuffer to be written to memory
[in]lenBuffer size
[in]modeWrite mode
Return values
NVM_RESULT_OKSuccess write to specified address
NVM_RESULT_INVALIDOperation invalid
NVM_RESULT_ERRWrite operation failed