35 lines
1.4 KiB
C
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);
|
|
}
|