36 lines
919 B
C++
36 lines
919 B
C++
#include "i2c.h"
|
|
|
|
#include "eep.h"
|
|
|
|
static const unsigned char EEP_Addr = 0x50; // AT24C256
|
|
|
|
static inline short Rev16(short v)
|
|
{
|
|
asm("REV16 %1, %0" : "=r" (v) : "r" (v)); // v = v<<8 | v>>8;
|
|
return v;
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
|
|
void EEP_Init() // AT24C256
|
|
{
|
|
I2C1_Init();
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
|
|
void EEP_Read(unsigned short Addr, void* Data, unsigned short Size)
|
|
{
|
|
Addr=Rev16(Addr);
|
|
I2C1_Write(EEP_Addr, &Addr, 2);
|
|
I2C1_Read(EEP_Addr, Data, Size);
|
|
I2C1_Stop();
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
|
|
void EEP_Write(unsigned short Addr, const void* Data, unsigned short Size)
|
|
{
|
|
Addr=Rev16(Addr);
|
|
I2C1_Write2(EEP_Addr, &Addr, 2, Data, Size);
|
|
I2C1_Stop();
|
|
}
|
|
//------------------------------------------------------------------------------
|