野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14822|回复: 4

IIC程序问题

[复制链接]
发表于 2016-5-27 18:11:48 | 显示全部楼层 |阅读模式

这段程序是火哥iic接口里的例程
箭头方向的判断条件是不是不对,如果24C02的起始地址不能被8整除,那 if(NumOfPage== 0) 这句就不能判断是否超过一页,比如Addr=7,往里面写入三个字节条件,if(NumOfPage== 0)依然成立,但是实际上已经超过页边界了,所以这句判断程序应该是有问题的吧,应该在这句前面加一句NumOfPage=(NumByteToWrite-count+NumOfPage)/NumOfPage; 有仔细看过这段代码的朋友帮忙分析一下,谢谢


QQ图片20160527175133.png
QQ图片20160527175133.png
回复

使用道具 举报

 楼主| 发表于 2016-5-27 18:13:34 | 显示全部楼层
下面那个图不用看,跟上面的图片一样。
回复 支持 1 反对 0

举报

发表于 2016-5-30 21:29:15 | 显示全部楼层
我个人是这样理解的:   页码 从0开始数  页 0  1 2 3    如果是7个字节    每页8个字节   也就是 刚不到一页   数字应写于 页0内
回复 支持 反对

举报

发表于 2016-7-20 09:36:36 | 显示全部楼层
宋星光1 发表于 2016-5-30 21:29
我个人是这样理解的:   页码 从0开始数  页 0  1 2 3    如果是7个字节    每页8个字节   也就是 刚不到一 ...

你没有理解楼主的意思,AT24C02每页是8个字节,并有相应的地址。第一页地址从0x00到0x07。如果写入的地址不是从0x00开始,且写入的字节数不超过每页的最大字节数——8个字节,就会有后面的字节覆盖前面的字节。这是因为AT24C02不会自动换页。
回复 支持 反对

举报

发表于 2016-7-20 09:41:19 | 显示全部楼层
我也发现了同样的问题。采用其逻辑没有考虑到的情况测试后,输入和输出不匹配,的确有问题。不过只要在那段代码里加一个判断就好。
回复 支持 反对

举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-3-16 04:53 , Processed in 0.122380 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表