打印
[ZLG-ARM]

LPC2131 I2C问题请教~

[复制链接]
1126|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leeding|  楼主 | 2008-3-14 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    switch (I2C0STAT & 0xF8)
    {

          // 根据状态码进行相应的处理 
    case 0x08:    //已发送起始条件.主发送和主接收都有         
           //--------------------------------------------------------
           // 装入从地址+读/写位(写SLA+W或者SLA+R) 
       if(I2C_suba_en == 1)/* SLA+R */    //指定子地址读    
       {    
                I2C0DAT = I2C_sla & 0xFE;    //先写入地址    
        }
            else    /* SLA+W */
            {  
               I2C0DAT = I2C_sla;     // 否则直接发送从机地址     
            }
            /* 清零SI位 */
            I2C0CONCLR =    (1 << 3)|      /* SI */
                    (1 << 5);      /* STA */
            break;

           ...
以上程序是EASYARM2131板配套的I2C程序的中断服务部分,其中
       if(I2C_suba_en == 1)/* SLA+R */    //指定子地址读    
       {    
                I2C0DAT = I2C_sla & 0xFE;    //先写入地址    
        }
的意思是发送 从地址+读,I2C0DAT的最低位应为1才是呀,为什么是I2C_sla&0xFE呢,这样最低位不是0吗?不明白,请指点!

相关帖子

沙发
zlgarm| | 2008-3-14 15:53 | 只看该作者

I2C

leeding 您好!
    1、根据I2C协议要对从机寻址(写从机地址)I2CDAT寄存器最低位(R/W)为0
    2、如果是读从机数据,I2CDAT寄存器最低位(R/W)为1
                              On zlgarm_lijintao

使用特权

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

本版积分规则

17

主题

24

帖子

0

粉丝