Files
bassofono/codice/Core/Src/i2c_eeprom.c
2022-02-06 17:40:36 +01:00

35 lines
1.4 KiB
C

#include <stdint.h>
#include "stm32g4xx_hal.h"
#include "i2c_eeprom.h"
#include "bassofono.h"
// HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
void i2c_eeprom_scrivi_pagina(uint16_t indirizzo, uint8_t * dati){
while (HAL_I2C_IsDeviceReady(&hi2c1, (uint16_t)(EEPROM_INDIRIZZO_I2C), 3, 100) != HAL_OK) { }
HAL_I2C_Mem_Write(&hi2c1, (uint16_t)(EEPROM_INDIRIZZO_I2C), indirizzo, I2C_MEMADD_SIZE_16BIT, dati, EEPROM_BYTES_PER_PAGINA, 100);
}
uint8_t i2c_eeprom_leggi_pagina(uint16_t indirizzo, uint8_t * dati){
HAL_StatusTypeDef status = HAL_OK;
while (HAL_I2C_IsDeviceReady(&hi2c1, (uint16_t)(EEPROM_INDIRIZZO_I2C), 3, 100) != HAL_OK) { }
status = HAL_I2C_Mem_Read(&hi2c1, (uint16_t)(EEPROM_INDIRIZZO_I2C), indirizzo, I2C_MEMADD_SIZE_8BIT, dati, EEPROM_BYTES_PER_PAGINA, 100);
return status;
}
void salva_canale(uint8_t numero){
i2c_eeprom_scrivi_pagina((EEPROM_OFFSET_CANALE + numero) * EEPROM_BYTES_PER_PAGINA, (uint8_t)&canale);
}
void leggi_canale(uint8_t numero){
i2c_eeprom_leggi_pagina((EEPROM_OFFSET_CANALE + numero) * EEPROM_BYTES_PER_PAGINA, (uint8_t)&canale);
}
void salva_stato(void){
i2c_eeprom_scrivi_pagina(EEPROM_INDIRIZZO_STATO * EEPROM_BYTES_PER_PAGINA, (uint8_t)&stato);
}
void leggi_stato(void){
i2c_eeprom_leggi_pagina(EEPROM_INDIRIZZO_STATO * EEPROM_BYTES_PER_PAGINA, (uint8_t)&stato);
}