使用STM8S003F3P6的硬件I2C读写AT24C16的EEPROM的经验心得

本文介绍了使用STM8S003F3P6单片机通过硬件I2C接口读写16K EEPROM(AT24C16)的过程。作者分享了遇到的地址码问题及解决方案,提供了读写函数和初始化代码,适用于需要超过256字节存储的场景。
摘要由CSDN通过智能技术生成

       由于工程需要,必须使用一个大容量的EEPROM才能够用,所以使用了16K的EEPROM,我使用的是FMD(辉芒微)公司的FT24C16A-ELR-T芯片,使用方式与AT24C16是一样的。
     首先我在网上搜索到的现成的代码,有一些地址码直接就是U8的,8位地址最多只能支持到256字节,16K的有2048个字节,所以地位需要用U16的才够用,后来找到地址是U16的示范代码,去测试开始是没有问题的,但是当容量超过256个字节后会出错了。

       废话不多说,直接贴上我修改后的读写函数和初始化三大主要部分。大家如果和我一样,使用STM8S003F3F6的芯片读写16KEEPROM时按下面的使用,应该就没有问题了。下面的代码中部分是从其它作者的代码中复制过来的,由于太懒没有标明出处,望见谅。


#define I2C_SPEED             400000
#define I2C_SLAVE_ADDRESS7     0xA0

void IIC_Read(uint16_t Addr , unsigned char *buffer , unsigned short num)
{
  uint8_t Did;//设备ID
  uint8_t Tmp;//方便计算中间量
  Tmp=(Addr>>8);
  if (Addr>255) Did=0xA0+(Tmp*2); //这里的计算目的就是把超过256字节部分需要做页偏移的数值计算到后四位中的p0 p1 p2的前三个位置 
  else Did=0xA0;  
  
  while (I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));
  
  /

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值