本文为at24c02的驱动程序
我使用的是正点原子stm32f103的NANO开发板
经过测试可以直接导入使用!!!
下面为.h文件
#include "main.h"
#ifndef __AT24C02_I2C_DRV_H_
#define __AT24C02_I2C_DRV_H_
#define AT24C02_ADDR_WRITE 0xA0
#define AT24C02_ADDR_READ 0xA1
uint8_t At24c02_Write_Byte(uint16_t addr, uint8_t* dat);
uint8_t At24c02_Read_Byte(uint16_t addr, uint8_t* read_buf);
#endif
下面为.c文件
#include "at24c02_i2c_drv.h"
#include "i2c.h"
/**
* @brief AT24C02任意地址写一个字节数据
* @param addr —— 写数据的地址(0-255)
* @param dat —— 存放写入数据的地址
* @retval 成功 —— HAL_OK
*/
uint8_t At24c02_Write_Byte(uint16_t addr, uint8_t* dat)
{
return HAL_I2C_Mem_Write(&hi2c1, AT24C02_ADDR_WRITE, addr, I2C_MEMADD_SIZE_8BIT, dat, 1, 0xFFFF);
}
/**
* @brief AT24C02任意地址读一个字节数据
* @param addr —— 读数据的地址(0-255)
* @param read_buf —— 存放读取数据的地址
* @retval 成功 —— HAL_OK
*/
uint8_t At24c02_Read_Byte(uint16_t addr, uint8_t* read_buf)
{
return HAL_I2C_Mem_Read(&hi2c1, AT24C02_ADDR_READ, addr, I2C_MEMADD_SIZE_8BIT, read_buf, 1, 0xFFFF);
}
最后推荐一个众多有关stm32代码的链接: http://www.mculover666.cn/posts/578764034/.