
程序设计
大约 1 分钟STM32开发环境介绍
新建AT24C02文件夹
添加at24c02.c
#include "at24c02.h"
//在指定地址,写入数据。addr是指定24c02写入的位置,pData为数组,num为写入的位数。
void AT24C02_Write(uint8_t addr,uint8_t *pData,uint8_t num)
{
for(int i=0 ;i<num;i++)
{
if(HAL_I2C_Mem_Write(&hi2c1,ADDR_AT24C02_Write,addr+i,I2C_MEMADD_SIZE_8BIT,pData+i,1,1000)==HAL_OK)
{
HAL_Delay(5);
}
}
}
void AT24C02_Read(uint8_t addr,uint8_t *pData,uint8_t num)
{
HAL_I2C_Mem_Read(&hi2c1,ADDR_AT24C02_Read,addr,I2C_MEMADD_SIZE_8BIT,pData,num,1000);
}
添加at24c02.h
#include "i2c.h"
#define ADDR_AT24C02_Write 0xA0
#define ADDR_AT24C02_Read 0xA1
#define ADDR_24_BufferSize 256
extern uint8_t ReadBuffer[ADDR_24_BufferSize];
void AT24C02_Write(uint8_t addr,uint8_t *pData,uint8_t num);
void AT24C02_Read(uint8_t addr,uint8_t *pData,uint8_t num);
测试
在主函数中定义
uint8_t Writebuff[4]={1,2,3,4};
uint8_t Readbuff[4]={0,0,0,0};
在主函数中调用
printf("写入数据为:%d%d%d%d\r\n",Writebuff[0],Writebuff[1],Writebuff[2],Writebuff[3]);
AT24C02_Write(0,Writebuff,4);
AT24C02_Read(0,Readbuff,4);
printf("读出数据为:%d%d%d%d\r\n",Readbuff[0],Readbuff[1],Readbuff[2],Readbuff[3]);