C-Libs/AT24CSW.c
2021-11-12 12:03:44 +01:00

43 lines
1.0 KiB
C

/*
* AT24CSW.c
*
* Created on: Nov 12, 2021
* Author: angoosh
*/
#include "AT24CSW.h"
#include "main.h"
extern I2C_HandleTypeDef AT24CSW_I2C_HANDLE;
int AT24CSW_Read_Memory(uint8_t address, uint8_t size, uint8_t *data);
int AT24CSW_Page_Write(uint8_t address, uint8_t *bytes);
int AT24CSW_Byte_Write(uint8_t address, uint8_t byte);
int AT24CSW_Byte_Write(uint8_t address, uint8_t byte){
uint8_t data[2] = {address,byte};
HAL_I2C_Master_Transmit(&AT24CSW_I2C_HANDLE, (AT24CSW_ADDRESS << 1), data, 3, 0xFFFF);
return 0;
}
int AT24CSW_Page_Write(uint8_t address, uint8_t *bytes){
uint8_t data[9];
data[0] = address;
for(int i = 0; i < 8; i++){
data[i+1] = bytes[i];
}
HAL_I2C_Master_Transmit(&AT24CSW_I2C_HANDLE, (AT24CSW_ADDRESS << 1), data, 3, 0xFFFF);
return 0;
}
int AT24CSW_Read_Memory(uint8_t address, uint8_t size, uint8_t *data){
uint8_t memContent[256];
HAL_I2C_Master_Receive(&AT24CSW_I2C_HANDLE, (AT24CSW_ADDRESS << 1), memContent, 0xFF, 0xFFFF);
for(int i = 0; i < size; i++){
data[i] = memContent[address+i];
}
return 0;
}