打印
[ZLG-ARM]

几个I2C的弱弱的问题...

[复制链接]
1432|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangbingg|  楼主 | 2008-4-2 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
周工好:
   几个地方看不太明白,这里问下:
问1.你们资料,I2C线上进行多字节数据传输时,按你们的接口函数,如:ISendStr,里面通过"I2CONSET = 0x60;"将起始位置1,即发送起始条件后,那传完1字节在传第2字节前还会不会再发起始条件?
 若不会的话为啥你们的 IRQ_I2C 中的每个 case里最后都要 I2CONCLR = 0x28(0x2C),这不是又在清0起始位吗??

问2.IRQ_I2C中有这么一句:
    " case  0x08:   // 己发送起始条件
                 if(1==I2C_suba_en) I2DAT = I2C_sla&0xFE;   
          // 指定子地址读时,先写入地址 "右边与上0xFE与后面注解实在联系不起来,周工解释下好吗??
两疑问,小弟万分感激!!!

相关帖子

沙发
zlgarm| | 2008-4-3 14:38 | 只看该作者

Re

huangbingg 您好:
I2CONCLR是清除I2CONSET的置位,方便下一次的I2C操作;I2C_sla包含地址和读写位(最低位)。

                                       On duty: zlgarm_liuzhaofu

使用特权

评论回复
板凳
huangbingg|  楼主 | 2008-4-3 14:50 | 只看该作者

这些我知道

我的意思是:多字节数据传输时,按你们的接口函数,如:ISendStr,里面通过"I2CONSET = 0x60;"将起始位置1,即发送起始条件后,那传完1字节在传第2字节前还会不会再发送起始条件?
   
   就发一次对不?

使用特权

评论回复
地板
huangbingg|  楼主 | 2008-4-3 15:36 | 只看该作者

就确定下我

呵呵

使用特权

评论回复
5
huangbingg|  楼主 | 2008-4-3 15:54 | 只看该作者

di

使用特权

评论回复
6
huangbingg|  楼主 | 2008-4-3 17:10 | 只看该作者

另外:

  假如当主机发送一数据后(或只是发了SLA+W),若改为主机读,则要I2CONSET = 0x20,即重新启动总线对吧?   
  这样当再次进如I2C中断检测到I2STAT=0x10(即已发送重新启动条件)时:器件地址(即从地址)I2C_sla的最低位是不是已经由硬件置1???(重新启动总线前是0)  所以才有 
       case  0x10:
                   I2DAT = I2C_sla; 
             ...    
  反之亦然!

  周工只要告诉我,我的理解对吗?????  谢谢!!!!!!!!!

使用特权

评论回复
7
huangbingg|  楼主 | 2008-4-6 13:14 | 只看该作者

顶上来!!!

,,,谢周工!!!

使用特权

评论回复
8
huangbingg|  楼主 | 2008-4-7 20:41 | 只看该作者

我的问题在6楼

只求个肯定或否定的说法,,,谢谢!!!

使用特权

评论回复
9
zlgarm| | 2008-4-8 10:39 | 只看该作者

To huangbingg

huangbingg您好:
    关于IIC的读写操作,您可以参考《嵌入式系统基础教程》210页内容和仔细阅读我们公司为您提供的IIC函数包。在函数包的IIC读取数据的函数包中,有地址的转换。
By zlgarm_glh

使用特权

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

本版积分规则

58

主题

270

帖子

0

粉丝