打印
[51单片机]

AT24C02写入多个数据

[复制链接]
5710|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Bellon|  楼主 | 2015-1-4 09:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ningling_21| | 2015-1-4 09:19 | 只看该作者
芯片资料需多看,写多个数据时,有多少数据? 又没超过一个页的数量?超过需加延时再写下一个页的数据

使用特权

评论回复
板凳
ayb_ice| | 2015-1-4 09:25 | 只看该作者
写注意跨页,

注意应答与非应答信号

使用特权

评论回复
地板
Bellon|  楼主 | 2015-1-4 11:31 | 只看该作者
ningling_21 发表于 2015-1-4 09:19
芯片资料需多看,写多个数据时,有多少数据? 又没超过一个页的数量?超过需加延时再写下一个页的数据 ...

没有跨页呢,芯片资料看了呀,我就写两个字节的数据,不牵扯到跨页的问题,一个字节的读和写都没问题的呢,代码如下:
void write_add_2byte(uchar add,uint dat)
{
        uchar datH,datL;
        datH=(uchar)(dat>>8);
        datL=(uchar)(dat&0x00ff);
        start();
        write_byte(0xa0);//
        response();
        write_byte(add);//
        response();
        write_byte(datH);//
        response();
        write_byte(datL);//
        response();
        stop();
}
uint read_add_2byte(uchar add)
{
        uint dat;
        uchar datH,datL;
        start();
        write_byte(0xa0);//
        response();
        write_byte(add);//
        response();
        start();
        write_byte(0xa1);//
        response();
        datH=read_byte();
        response();
        datL=read_byte();
        stop();
        dat=datH*256+datL;
        return dat;       
}

使用特权

评论回复
5
Bellon|  楼主 | 2015-1-4 11:32 | 只看该作者
ayb_ice 发表于 2015-1-4 09:25
写注意跨页,

注意应答与非应答信号

应答和非应答信号要如何写呢?

使用特权

评论回复
6
ningling_21| | 2015-1-4 12:08 | 只看该作者
Bellon 发表于 2015-1-4 11:31
没有跨页呢,芯片资料看了呀,我就写两个字节的数据,不牵扯到跨页的问题,一个字节的读和写都没问题的呢 ...

对应答的处理有点问题

使用特权

评论回复
7
ayb_ice| | 2015-1-4 13:33 | 只看该作者
本帖最后由 ayb_ice 于 2015-1-4 14:23 编辑
Bellon 发表于 2015-1-4 11:32
应答和非应答信号要如何写呢?

看手册吧

每个字节都要响应,但接收与发送的响应是有区别的,

接收是自己响应别人,发送是接收别人的响应

连续读操作最后一个字节是发送非应答信号,对方收到非应答信号信号会释放SDA线,否则可能会导致SDA被锁在低电平,导致后面的操作失效

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
Bellon + 1 谢谢!
8
arisexue| | 2015-1-4 15:33 | 只看该作者
首先把时序写对,每次读完或写完作延时一下。

使用特权

评论回复
9
Bellon|  楼主 | 2015-1-4 16:21 | 只看该作者
ningling_21 发表于 2015-1-4 12:08
对应答的处理有点问题

什么问题呢,请指出?

使用特权

评论回复
10
ayb_ice| | 2015-1-4 16:35 | 只看该作者
Bellon 发表于 2015-1-4 16:21
什么问题呢,请指出?

读写应答是不一样的东西,一个是你应答别人,一个是别人应答你

使用特权

评论回复
11
Bellon|  楼主 | 2015-1-4 17:19 | 只看该作者
ayb_ice 发表于 2015-1-4 16:35
读写应答是不一样的东西,一个是你应答别人,一个是别人应答你

多谢指导,果真是应答信号的问题,添加了MCU的应答信号和非应答信号,调试成功!!!:victory:

使用特权

评论回复
12
雪夜虫子| | 2015-1-4 17:43 | 只看该作者
本帖最后由 雪夜虫子 于 2015-7-23 08:58 编辑

...试试。

使用特权

评论回复
13
受不了了| | 2015-1-4 21:26 | 只看该作者
没人带是痛苦的,这么基础的一个问题让楼主折腾半天

使用特权

评论回复
14
yixiao22| | 2015-1-5 08:14 | 只看该作者
时序是不是要调整下。

使用特权

评论回复
15
cddxcdx| | 2015-1-5 08:32 | 只看该作者
每次操作之间需要延时,具体也忘记了,应该是ms级的,写个延时程序调试看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝