在STM32使用硬件I2C读写AT24C02 EEPROM(一)中我们读写了eeprom的一个字节,但是我们想要读写多个字节应该怎么办?
HAL_I2C_Mem_Write
HAL_I2C_Mem_Read
对这个两个函数进行了封装
uint8_t at24cxx_read(uint16_t addr, uint8_t *pbuf, uint16_t datalen)
{
}
uint8_t at24cxx_write(uint16_t addr, uint8_t *pbuf, uint16_t datalen)
{
}
在main函数中while循环读写
读出来的结果都是0,读写失败
什么原因呢?查找资料写完不能马上读需要等待写完,很奇怪,所有加个延时吧
可以了正常读写了
那读写任意字节呢,多读写些字节
什么情况,多读写了两位就不行了?
通过页写入每次只能最多写8个字节,要不就只能按一个字节写,尝试了几种方法最终还是以单个字节写的方式来改。
uint8_t at24cxx_hal_writeonebyte(uint16_t WriteAddr,uint8_t DataToWrite)
{
if(EE_TYPE < AT24C16)
return HAL_I2C_Mem_Write(&hi2c2,AT24C02_ADDR_WRITE,WriteAddr,I2C_MEMADD_SIZE_8BIT,&DataToWrite,1,1000);
else
return HAL_I2C_Mem_Write(&hi2c2,AT24C02_ADDR_WRITE,WriteAddr,I2C_MEMADD_SIZE_16BIT,&DataToWrite,1,1000);
}
}
使用stm32 硬件i2c读写at24c02 芯片需要注意延时否则会锁死和多字节读写的限制,谨慎处理读写操作中的细节,可以有效解决通信中遇到的问题,确保数据的可靠存储和读取
STM32使用硬件I2C读写AT24C02 EEPROM,实现任意字节读写
到此这篇at24c02擦写次数(at24c02擦除)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/56937.html