打印
[ZLG-ARM]

I2C问题..

[复制链接]
10774|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangbingg|  楼主 | 2008-10-15 21:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问周工:
  我买的easy2210板子自带的I2C代码只能读写一个字节,而你们网站上下的可以有多个了,比较全面,但问题是
  网站上那个代码里关于I2C中断函数中,switch里没有case18H的代码,而我光盘的那个里虽只能传一字节,但是case18H  后面是有几句语句的,也很好理解,周工解释下,感觉有问题???

相关帖子

沙发
huangbingg|  楼主 | 2008-10-16 19:27 | 只看该作者

周工好

关心下这边好吗.....  就这么个小问题解试下  谢谢

使用特权

评论回复
板凳
huangbingg|  楼主 | 2008-10-17 14:49 | 只看该作者

.......

周工好:
   就是少了这一段:
   case  0x18:                   // 已发送SLA+W,并已接收应答
            if(0==I2C_suba_en)      // 无子地址,则直接发送数据
            {  if(I2C_num>0)
               {  I2DAT = *I2C_buf++;
                  I2CONCLR = 0x28; 
                  I2C_num--;
               }
               else
               {  I2CONSET = 0x10;  // 无数据发送,结束总线
                  I2CONCLR = 0x28;
                  I2C_end = 1;      // 设置总线操作结束标志
               }
               break;
            }
            if(1==I2C_suba_en)      // 发送子地址
            {  I2DAT = I2C_suba;
               I2CONCLR = 0x28;
            }
            if(2==I2C_suba_en)
            {  I2DAT = I2C_suba;
               I2CONCLR = 0x28;
               I2C_suba_en = 0;     // 子地址己处理
            }
            break;
包括你213x书里也没这段代码,请解释?   难道不需要?

使用特权

评论回复
地板
huangbingg|  楼主 | 2008-10-17 15:14 | 只看该作者

补充下/

这里这段我是指单字节从地址的,就想不通为啥这段可以不用,直接从0x18跳到0x28?

使用特权

评论回复
5
zlg_lbq| | 2008-10-18 08:43 | 只看该作者

关于I2C

 huangbingg 您好:
   关于您所说的问题,可以参看ARM7基础教程或有关对I2C协议的其它资料,
case18与case28状态后要执行的内容是一样的,所以从case18跳到了case28, 如果用户需要case18这段代码,可根据自己的需要添加。
                                    by liangbaoqiong

使用特权

评论回复
6
huangbingg|  楼主 | 2008-10-19 20:43 | 只看该作者

为社么不行啊  代码都是你们通用的啊

使用特权

评论回复
7
huangbingg|  楼主 | 2008-10-20 09:34 | 只看该作者

周公帮忙分析下可能存在的原因阿

上次周工分析的很好啊,我单步做下来,I2C_end=-1也就是I2C中断里是0x20,0x30,0x38,0x48这四种错误情况,不能进行读写,咋回事啊?

使用特权

评论回复
8
huangbingg|  楼主 | 2008-10-20 09:35 | 只看该作者

使用特权

评论回复
9
huangbingg|  楼主 | 2008-10-20 09:36 | 只看该作者

我接开发板的是256

使用特权

评论回复
10
huangbingg|  楼主 | 2008-10-20 14:12 | 只看该作者

周公帮忙分析下可能存在的原因阿

使用特权

评论回复
11
huangbingg|  楼主 | 2008-10-22 11:05 | 只看该作者

........................................

使用特权

评论回复
12
huangbingg|  楼主 | 2008-10-23 13:15 | 只看该作者

周工:::::

出来答复下吧  谢谢~

使用特权

评论回复
13
ZLG_Dengz| | 2008-10-24 09:44 | 只看该作者

建议

建议你单步调试以下,比如在I2C接收中断里设上断点,观察数据发送和接收状态.同时观察一下I2C_WriteNByte();I2C_ReadNByte();的返回值.

使用特权

评论回复
14
huangbingg|  楼主 | 2008-10-24 10:33 | 只看该作者

这个早看过了

反回值都是-1,出错的,所以我说读写I2C_WriteNByte();I2C_ReadNByte();都没有应答.从i2C_end=-1就能看出来
   周工再帮忙分析下  看看我的main()的参数都没问题的吧

使用特权

评论回复
15
zlg_lly| | 2008-10-25 08:52 | 只看该作者

RE:huangbingg

您好!
看了您的Main函数,也没什么问题嘛,基本上就是例程上的东西。
不如这样试一下啊,用这个程序跑一下实验板上的CAT24C02,不能跑那可能就是程序问题;能跑那就是您的硬件有问题;然后对比程序/硬件和开发板的有什么不同。慢慢的就会找到原因了。

使用特权

评论回复
16
梁喜幸| | 2008-11-27 16:59 | 只看该作者

看看

呵呵,路过看看!这好热闹啊!

使用特权

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

本版积分规则

58

主题

270

帖子

0

粉丝