Files
StepMotorCtrl/bsp/device/eeprom/eeprom_driver.c
T

65 lines
1.3 KiB
C

#include "eeprom_driver.h"
#include "i2c_driver.h"
#include "config.h"
static uint8_t eeprom_initialized;
static uint8_t eeprom_init_attempted;
static ret_code_t eeprom_last_error;
ret_code_t eeprom_init(void)
{
ret_code_t ret;
uint32_t speed = I2C1_SPEED;
eeprom_init_attempted = 1;
ret = i2c_init(speed);
if (ret == RET_OK) {
eeprom_initialized = 1;
}
eeprom_last_error = ret;
return ret;
}
ret_code_t eeprom_write(uint16_t addr, const uint8_t *data, uint32_t len)
{
ret_code_t ret;
if (addr + len > EEPROM_TOTAL_SIZE) {
eeprom_last_error = RET_INVALID_PARAM;
return RET_INVALID_PARAM;
}
ret = i2c_mem_write(EEPROM_DEV_ADDR, addr, 1, data, len);
eeprom_last_error = ret;
return ret;
}
ret_code_t eeprom_read(uint16_t addr, uint8_t *data, uint32_t len)
{
ret_code_t ret;
if (addr + len > EEPROM_TOTAL_SIZE) {
eeprom_last_error = RET_INVALID_PARAM;
return RET_INVALID_PARAM;
}
ret = i2c_mem_read(EEPROM_DEV_ADDR, addr, 1, data, len);
eeprom_last_error = ret;
return ret;
}
ret_code_t eeprom_get_last_error(void)
{
return eeprom_last_error;
}
uint8_t eeprom_is_initialized(void)
{
return eeprom_initialized;
}
void eeprom_reset_status(void)
{
eeprom_last_error = RET_OK;
}