[AVR单片机] AVR 的TWI 一次性写入多个字节

[复制链接]
1830|10
 楼主| he_junpeng 发表于 2014-4-27 09:54 | 显示全部楼层 |阅读模式
   关于AVR的TWI,大家应该用过,他的写入顺序是
        start --> 8位地址 --> 应答 --> 8位数据 --> 应答 --> stop
他的地址和数据都是8位,现在是数据是5个字节或者多个字节,必须一次性在start和stop之间写完,写数据应该怎么操作啊?
perry_peng 发表于 2014-4-28 08:55 | 显示全部楼层
start --> 8位地址 --> 应答 --> 8位数据 --> 应答 --> 8位数据 --> 应答--> 8位数据 --> 应答--> 8位数据 --> 应答--> 8位数据 --> 应答--> stop
perry_peng 发表于 2014-4-28 08:56 | 显示全部楼层
用TWI跟I2C是一样的
飞言走笔 发表于 2014-4-28 09:09 | 显示全部楼层
就是I2C
 楼主| he_junpeng 发表于 2014-5-5 18:22 | 显示全部楼层
perry_peng 发表于 2014-4-28 08:55
start --> 8位地址 --> 应答 --> 8位数据 --> 应答 --> 8位数据 --> 应答--> 8位数据 --> 应答--> 8位数据  ...

嗯,应该是这样的。
liwei900712 发表于 2014-5-8 16:11 | 显示全部楼层
perry_peng 发表于 2014-4-28 08:55
start --> 8位地址 --> 应答 --> 8位数据 --> 应答 --> 8位数据 --> 应答--> 8位数据 --> 应答--> 8位数据  ...

那要是写入数据超过八个字节,是不是要分页?要怎么实现呢
perry_peng 发表于 2014-5-9 08:34 | 显示全部楼层
你用的device好像是24c01,02。
perry_peng 发表于 2014-5-9 08:49 | 显示全部楼层
这种EEPROM写入的地址字节后的第一个数据就是内存地址。
perry_peng 发表于 2014-5-9 08:52 | 显示全部楼层
这个内存地址的高4bit(24c01,24c02是5bit)就是页地址,低3位就是offset。刚好8个byte,连续写入时这个3bit会自动增加,如果超过7就又回到0。
liwei900712 发表于 2014-5-9 11:08 | 显示全部楼层
perry_peng 发表于 2014-5-9 08:52
这个内存地址的高4bit(24c01,24c02是5bit)就是页地址,低3位就是offset。刚好8个byte,连续写入时这个3bit ...

at24c02可以一次写入八个字节,如果超过八个字节要换页操作,具体怎么做呢?是加个延时,还是?
reuben123 发表于 2014-5-16 09:17 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

48

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部