stm32hal库应用笔记之 硬件I2C读写ZD24C64

本文档介绍了如何使用STM32_CubeIDE中的HAL_I2C_Mem_Write函数进行E2PROM的按字节写入操作,包括代码示例和针对0xA0地址的器件操作。作者提供了详细的步骤和用于E2PROM_DATA_Write的处理方法,适合STM32开发者进行IIC通信实践。
摘要由CSDN通过智能技术生成

话不多说 直接上资料

这是ZD24C64 数据手册里面的读写操作时序。
数据手册网上有很多相信大家也能随便就找到。

如下图所示:
这是使用iic按字节写操作
器件地址:我的是0xA0
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
来不及解释了赶快上车:
在下使用的是STM32_CubeIDE,个人觉得还是挺好用。

本人使用的版本为 Version: 1.8.0

使用stm32CubeIDE生成 硬件IIC 代码…(此处省略相关操作)直接上菜…

#define E2PROM_ADDRESS 0X00A0


void E2PROM_Write(uint16_t WtireAddress,uint8_t *pData,uint16_t DatSize)
{
	HAL_I2C_Mem_Write(&hi2c2, E2PROM_ADDRESS, WtireAddress, 2, pData, DatSize, 1000);
}

void E2PROM_Read(uint16_t ReadAddress,uint8_t *pData,uint16_t DatSize)
{
	HAL_I2C_Mem_Read(&hi2c2, E2PROM_ADDRESS, ReadAddress, 2, pData, DatSize, 1000);
}

void E2PROM_DATA_Write(uint16_t WtireAddress,uint8_t *pData,uint16_t DatSize)
{
	uint16_t dataLength;//数据长度
	uint16_t  i,j,AddressTemp;
	uint8_t *pDataTemp;

	pDataTemp = pData;
	dataLength = DatSize;
	AddressTemp = WtireAddress;

	for(i = 0; i < ((DatSize/32) + 1); i++)
	{
		if(dataLength > 32)
		{
			j = 32;
			E2PROM_Write(AddressTemp,pDataTemp,j);
			dataLength -= 32;
			AddressTemp += 32;
			pDataTemp += 32;
			HAL_Delay(1);
		}
		else
		{
			E2PROM_Write(AddressTemp,pDataTemp,dataLength);
		}

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值