目前觉得lm3S1138的I2C实现eeprOM的例程有问题

iceman5823   2013-6-18 00:46 楼主
最近在使用lm1811编写I2C对eepROM以及pcf8563进行通信,是从lm3s1138的例程移植的。但是运行的时候总是会进不了中断,之前有人提醒我是不是硬件问题,但是我检查了我的硬件是没有问题的,导致我有些搞不懂了。
还有就是如果程序能运行了以后,可以对FM24CL64进行写操作,但是在对fm24cl64对刚才的子地址进行读操作的时候就读不出来,我就有些不明白为什么?
期间我使用过逻辑分析仪去观察scl和sda两个引脚的时序,也是发现写操作的时候时序是好的,一到读操作的的时候,时序就是乱的。
     所以希望有使用过lm系列i2c的童鞋能够给予帮助,也顺便帮我分析一下到底是怎么回事吧?   
     关于程序代码的话,在咱们论坛【TI原创】LM3S使用笔记之I2C总线(一)_https://bbs.eeworld.com.cn/viewthread.php?tid=306278  这个标题下的帖子里面有的。

我的fm24cl64手册是英文的,然后中文的话再百度搜“fm24cl64 中文”   百度文库里面有。

[ 本帖最后由 iceman5823 于 2013-6-20 11:27 编辑 ]

    FM24CL64_ds.pdf (2013-6-20 11:27 上传)

    122.4 KB, 下载次数: 1

    fm24cl64

回复评论 (6)

回复 楼主 iceman5823 的帖子

你可以提供下 FM24CL64 的数据手册吗?
TI 的 IIC 相比 STM32 已经好用多了。
点赞  2013-6-18 11:39
我花了三天时间调试i2c,解决了进不去中断的问题,今天上午还看到你的帖子了呢,提示你下,你的io口初始化有问题,所以无法进入中断!
点赞  2013-6-19 23:45
IO 口初始化的问题一定要重视。
点赞  2013-6-20 10:59

回复 4楼 Study_Stellaris 的帖子

关于I2C初始化的问题 , 我发现了,应该设置成开漏的,我是将      GPIOPinTypeI2CSCL(GPIO_PORTJ_BASE,GPIO_PIN_0);
    GPIOPinTypeI2C(GPIO_PORTJ_BASE,GPIO_PIN_1);
按照上面的方式  是能够进入中断 , 应该也是能够向FM24CL64写数据,可是在读数据的时候出现了小问题,读不出来数据,   我有点弄不清楚是因为什么导致的这个问题。百度搜 “fm24cl64 中文”
就有手册的,我这有的是英文的。
点赞  2013-6-20 11:17

回复 板凳 taiji_feng 的帖子

我已经修改成开漏的了,  
GPIOPinTypeI2CSCL(GPIO_PORTJ_BASE,GPIO_PIN_0);
    GPIOPinTypeI2C(GPIO_PORTJ_BASE,GPIO_PIN_1);
但是可能有的时候也是会出现不进中断的问题。擦除一下就又可以了。这是为什么?
初始化的部分我就改了这个 , 要是跟你的不一样的话  ,帮忙给指点一下还有什么要改的?

然后就是如果能进中断,写数没有问题,但是读数据就有问题。       我是给fm24cl64读写数据。
你用这个例程也是要给eepROM收发数据吗?  要是的话能不能给我发个代码,我看看吧
点赞  2013-6-20 11:24
问题解决了。      问题出在 :在例程中scl和sda两个引脚设置成为开漏,还有一个属于低级错误吧,要看清楚eepROM的数据地址多少位。希望对别人有些帮助
点赞  2013-6-25 15:29
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复