📄 i2c_oper.c
字号:
/***************************************************************************/
#include "config.h"
/***************************************************************************/
uint16 ReadEEROM(uint8 *DataAddr, uint8 SaveAddr, uint16 DataSize)
{
uint16 ByteSize;
*DataAddr = SaveAddr;
ByteSize = I2cRead(CAT1025, DataAddr, DataAddr, 1, DataSize);
if (ByteSize != DataSize)
return ERROR;
return SUCCESS;
}
/***************************************************************************/
void WriteEEROM(uint8 *DataAddr, uint8 SaveAddr, uint16 DataSize)
{
uint8 DataBuf[17], TempAddr = SaveAddr;
uint16 j, i = DataSize;
uint8 *BufAddr;
while( i > 16)
{
BufAddr = DataBuf;
*BufAddr++ = TempAddr;
for(j = 0; j < 16; j++)
*BufAddr++ = *DataAddr++;
I2cWrite(CAT1025, DataBuf, 17);
OSTimeDly (OS_TICKS_PER_SEC / 50); //延时20毫秒
i = i - 16;
TempAddr += 16;
}
BufAddr = DataBuf;
*BufAddr++ = TempAddr;
for(j = 0; j < i; j++)
*BufAddr++ = *DataAddr++;
I2cWrite(CAT1025, DataBuf, (i + 1));
OSTimeDly (OS_TICKS_PER_SEC / 50); //延时20毫秒
}
/***************************************************************************/
//在CAT1025芯片的前128字节(0x00~0x7f)存储传感器地址信息,
//从0x80开始存储I2C1的当前指针信息,其表示下一条来车信息在I2C1存储的起始地址,
// 0x80 0x81 0x82 0x83 0x84 0x85
// 0xa5 0x5a 当前I2C1高位地址 当前I2C1低位地址 前I2C1高位地址 前I2C1低位地址
/***************************************************************************/
unsigned int GetI2C1CurAddr(void)
{
unsigned char Buffer[6];
ReadEEROM(Buffer, 0x80, 6);
if ((Buffer[0] == 0xa5) && (Buffer[1] == 0x5a)){
//CurI2C1Addr[0] = Buffer[2];
//CurI2C1Addr[1] = Buffer[3];
//PerI2C1Addr[0] = Buffer[4];
//PerI2C1Addr[1] = Buffer[5];
return SUCCESS;
}
Buffer[0] = 0xa5;
Buffer[1] = 0x5a;
Buffer[2] = 0x00;
Buffer[3] = 0x00;
Buffer[4] = 0x00;
Buffer[5] = 0x00;
OSTimeDly (OS_TICKS_PER_SEC / 50); //延时20毫秒
WriteEEROM(Buffer, 0x80, 6);
//CurI2C1Addr[0] = 0x00;
//CurI2C1Addr[1] = 0x00;
//PerI2C1Addr[0] = 0x00;
//PerI2C1Addr[1] = 0x00;
return SUCCESS;
}
/***************************************************************************/
void ClearI2C1CurAddr(void)
{
unsigned char Buffer[6];
Buffer[0] = 0xa5;
Buffer[1] = 0x5a;
Buffer[2] = 0x00;
Buffer[3] = 0x00;
Buffer[4] = 0x00;
Buffer[5] = 0x00;
WriteEEROM(Buffer, 0x80, 6);
//CurI2C1Addr[0] = 0x00;
//CurI2C1Addr[1] = 0x00;
//PerI2C1Addr[0] = 0x00;
//PerI2C1Addr[1] = 0x00;
}
/***************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -