/* * 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; }