[应用相关] stm32hal库应用笔记之 硬件I2C读写ZD24C64

[复制链接]
315|0
八层楼 发表于 2025-9-9 12:09 | 显示全部楼层 |阅读模式
这是ZD24C64 数据手册里面的读写操作时序。
数据手册网上有很多相信大家也能随便就找到。

如下图所示:
这是使用iic按字节写操作
器件地址:我的是0xA0、

1709468bfa87d3c6a2.png

3141368bfa873c9846.png

5779168bfa86b48239.png

来不及解释了赶快上车:
在下使用的是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);
                }

        }
}


————————————————
版权声明:本文为CSDN博主「zhao1peng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33954661/article/details/124881721

您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

4370

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部