这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » I2C I2C问题

共2条 1/1 1 跳转至

I2C I2C问题

院士
2006-09-17 18:14:16     打赏
I2C I2C问题



关键词: 问题    

院士
2006-12-22 22:43:00     打赏
2楼

void __irq IRQ_I2C(void)
{ /* 读取I2C状态寄存器I2DAT */
/* 按照全局变量的设置进行操作及设置软件标志 */
/* 清除中断逻辑,中断返回 */

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

1、在LPC213X的I2C例程中,为何I2C总线都需要重复起始条件?
2、在08H状态下读数据,发送起始条件的时候为何把R/W置0,
   I2DAT = I2C_sla & 0xFE;     /* 先写入地址     */     
我现在碰到的问题是,使用LPC2138读X1288内的EEPROM时,有时会发生从器件不回ACK的问题。  用逻辑分析仪分析可能是由于发送第一次器件地址的时候当作是读数据,而此时X1288内部的WEL是不确定的,有可能为低时不应答。难道我一定要用模拟I2C总线? 1: 有时I2C器件是会怪怪的几样东西可以考虑:

上拉电阻小点试试
时钟弄慢点
或什么也别干,先送20到80个时钟

2: I2C是一个较完善的协议细节要自己把握... 3: 尿童是测试班?谢谢...

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]