搜索
bottom↓
回复: 4

TWI硬件中断方式(非中断查询)读写AT24C256 不能直接跨页写?

[复制链接]

出0入76汤圆

发表于 2012-12-19 23:22:54 | 显示全部楼层 |阅读模式
几天一直在折腾AVR的 TWI模块,准备写一个完整的基于TWI硬件模块 以中断方式(非以往的中断查询方式),读写AT24C256,PCF8563。
现在基本上读写功能以实现:
1.当前地址读取、 任意地址(指定)读取N字节 (N可以横跨整个存储器内存空间)
2. 多字节写入...

AT2C256 手册中说到,一个页面  64 byte,共有512个页面, 写操作时,只有低6位(页内地址指针)自动循环累加, 而高9位(页面地址)保持不变。

在进行多字节写入时,写操作的换页动作是在中断中实现的,是通过发 RE START信号 后直接切换页面地址,感觉这样会比写完一个页面后 STOP ,再重新开始写下一个页面数据 的操作方式更有效率,但现在就发现了一个奇怪的问题(可能以前没有注意到这个问题 ^|^.....):
1.当写入的数据在一个页面范围内时,写入数据正常;
2.当写入的数据大于一个页面范围时,即数据横跨两个页面, 在第一个页面的数据没有写进去(感觉是数据没有生效),而只有写入到第2个页面的数据才生效了。
3.当写入的数据横跨三个页面时,也只有第三个页面的数据生效了。

于是,想到可能只允许64byte的数据量,再次进行跨页写操作,横跨两个页面,得到的结果也是一样,只有写在第2页面的数据生效了。

最后总结出:
1. 开始写入地址  + 写入数量 须在一个页面范围内,如果没有实现换页动作,则页内最前面的数据可以遭到覆盖(大于页面地址时,自动回到0x00地址重新开始)
2. 要实现多字节跨页写入,不能在中断 中发RE START后直接 换页,写满一页后,必须发STOP信号,让EEPROM更本页面数据。 数据更新后,发START信号 重新启动 TWI总线, 并将地址切换到下一个页面, 接着写剩下的数据,又写满一面后(或数据写入完成),再发STOP信号, 让EEPROM再次更新当前页的数据,如此重复操作直至完成全部数据写入,从而实现多字节跨页面写入。

写了这么多,有点乱, 不知大家看明白了么....   

常在BBS上看到的多数还是用IO模拟的方式, 或者是用TWI中断查询的方式在实现, 就在想为什么不用TWI硬件中断方式(状态机试)呢? 这样不是更有效率么?  

期待与大家交流....

稍后把这个程序完成后,会放上来...     目前 Coding........

出0入76汤圆

 楼主| 发表于 2012-12-20 10:45:59 | 显示全部楼层
我自己来顶顶,看来现在没有多少人用TWI硬件中断方式来操作I2C总线,哎.....
已经想到解决办法了,还是靠自己吧....

出0入0汤圆

发表于 2013-11-25 13:25:45 | 显示全部楼层
foxpro2005 发表于 2012-12-20 10:45
我自己来顶顶,看来现在没有多少人用TWI硬件中断方式来操作I2C总线,哎.....
已经想到解决办法了,还是靠自 ...

你这个模块弄得怎么样了啊

出0入76汤圆

 楼主| 发表于 2013-11-25 18:08:37 | 显示全部楼层
呵呵,早就搞定了
http://www.amobbs.com/forum.php? ... =5513101&extra=

出0入0汤圆

发表于 2016-12-14 15:40:00 | 显示全部楼层
这个要mark一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 23:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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