软件iic测试成功
This commit is contained in:
+72
-8
@@ -9,16 +9,80 @@
|
||||
#include "eeprom.h"
|
||||
#include "iic.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void EEPROM_READ_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
//在AT24CXX指定地址读出一个数据
|
||||
//ReadAddr:开始读数的地址
|
||||
//返回值 :读到的数据
|
||||
uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr)
|
||||
{
|
||||
IIC_READ_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
|
||||
uint8_t temp=0;
|
||||
IIC_Start();
|
||||
if(EE_TYPE>AT24C16)
|
||||
{
|
||||
IIC_Send_Byte(0XA0); //发送写命令
|
||||
IIC_Wait_Ack();
|
||||
IIC_Send_Byte(ReadAddr>>8);//发送高地址
|
||||
IIC_Wait_Ack();
|
||||
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据
|
||||
|
||||
IIC_Wait_Ack();
|
||||
IIC_Send_Byte(ReadAddr%256); //发送低地址
|
||||
IIC_Wait_Ack();
|
||||
IIC_Start();
|
||||
IIC_Send_Byte(0XA1); //进入接收模式
|
||||
IIC_Wait_Ack();
|
||||
temp=IIC_Read_Byte(0);
|
||||
IIC_Stop();//产生一个停止条件
|
||||
return temp;
|
||||
}
|
||||
//在AT24CXX指定地址写入一个数据
|
||||
//WriteAddr :写入数据的目的地址
|
||||
//DataToWrite:要写入的数据
|
||||
void AT24CXX_WriteOneByte(uint16_t WriteAddr,uint8_t DataToWrite)
|
||||
{
|
||||
IIC_Start();
|
||||
if(EE_TYPE>AT24C16)
|
||||
{
|
||||
IIC_Send_Byte(0XA0); //发送写命令
|
||||
IIC_Wait_Ack();
|
||||
IIC_Send_Byte(WriteAddr>>8);//发送高地址
|
||||
}else
|
||||
{
|
||||
IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据
|
||||
}
|
||||
IIC_Wait_Ack();
|
||||
IIC_Send_Byte(WriteAddr%256); //发送低地址
|
||||
IIC_Wait_Ack();
|
||||
IIC_Send_Byte(DataToWrite); //发送字节
|
||||
IIC_Wait_Ack();
|
||||
IIC_Stop();//产生一个停止条件
|
||||
|
||||
}
|
||||
|
||||
void EEPROM_WRITE_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
|
||||
|
||||
//在AT24CXX里面的指定地址开始读出指定个数的数据
|
||||
//ReadAddr :开始读出的地址 对24c02为0~255
|
||||
//pBuffer :数据数组首地址
|
||||
//NumToRead:要读出数据的个数
|
||||
void AT24CXX_Read(uint16_t ReadAddr,uint8_t *pBuffer,uint16_t NumToRead)
|
||||
{
|
||||
IIC_SAND_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
|
||||
while(NumToRead)
|
||||
{
|
||||
*pBuffer++=AT24CXX_ReadOneByte(ReadAddr++);
|
||||
NumToRead--;
|
||||
}
|
||||
}
|
||||
//在AT24CXX里面的指定地址开始写入指定个数的数据
|
||||
//WriteAddr :开始写入的地址 对24c02为0~255
|
||||
//pBuffer :数据数组首地址
|
||||
//NumToWrite:要写入数据的个数
|
||||
void AT24CXX_Write(uint16_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite)
|
||||
{
|
||||
while(NumToWrite--)
|
||||
{
|
||||
AT24CXX_WriteOneByte(WriteAddr,*pBuffer);
|
||||
WriteAddr++;
|
||||
pBuffer++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user