43 lines
1.0 KiB
C
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;
|
|
}
|