追梦人ll 发表于 2018-8-27 10:22:35

用软件实现AT24C02按页写不成功

想实现AT24C02的页写功能,用软件实现,发现按字节写都没问题,按页写或连续写多字节却无法实现,求大神指点,附件中有我的工程代码

追梦人ll 发表于 2018-8-27 10:28:05

iic的.h和.c文件忘添加了,一更新自己的文件就会丢失

发表于 2018-8-27 10:46:27

AT24C02, 2K SERIAL EEPROM: Internally organized with 32 pages of 8 bytes each,the 2K requires an 8-bit data word address for random word addressing。
楼主计算地址计算可能有问题。不是最多256页,是一个片最多32页,每页8字节。当超过这个范围以后,硬件地址就要变更,比如256,这个地址应该是在第二片,第0个字节。硬件地址应该是A1,写入地址应该是0,依次类推。

wenyangzeng 发表于 2018-8-27 10:59:58

本帖最后由 wenyangzeng 于 2018-8-27 11:06 编辑

#define I2C_PAGESIZE 8    //每页8个字节
每页8个字节:不对吧?


追梦人ll 发表于 2018-8-27 11:35:56

按页写的意思不是针对一个器件吗,是对同一个器件访问起始地址后面的连续几个字节吗,你上面写的是不同器件,而我的是只针对一个器件

追梦人ll 发表于 2018-8-27 11:43:12

安 发表于 2018-8-27 10:46
AT24C02, 2K SERIAL EEPROM: Internally organized with 32 pages of 8 bytes each,the 2K requires an 8-b ...

关键是我只是连续写了3个字节,没有超过地址范围,也无法实现,一个字节一个字节的写就可以实现

Dandjinh 发表于 2018-8-27 12:45:43

跨页的时候要有个延时,一般为5ms,具体看手册

追梦人ll 发表于 2018-8-27 15:09:40

Dandjinh 发表于 2018-8-27 12:45
跨页的时候要有个延时,一般为5ms,具体看手册

我没有跨页,连续写三个字节无法实现

Dandjinh 发表于 2018-8-27 19:43:13

追梦人ll 发表于 2018-8-27 15:09
我没有跨页,连续写三个字节无法实现
跨页是指地址从上页尾到下页首写入,根据你的型号就是地址从8n+7 -> 8(n+1)写入,只要写多过1个字节都有可能出现跨页。
看了一下你的程序,你写入的是7,8,9三个地址,所以存在跨页的现象。
其次,你初始化的时候最好把IO速度设置成high。

feixiang20 发表于 2018-8-28 00:23:54

可能需要严格按照时序图来,如果读数据时最后等待发送一个应答信号将会导致有些数据无法读到
页: [1] 2
查看完整版本: 用软件实现AT24C02按页写不成功