TQ210 Linux下AT24L02的IIC驱动问题
我在TQ210下写的IIC驱动,结果老是time out ,这可能是什么原因呢?请高手指教!<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<7>i2c i2c-2: master_xfer W, addr=0x50, len=2
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<4>here is the i2c_transfer
<7>i2c i2c-2: master_xfer W, addr=0x50, len=1
<7>i2c i2c-2: master_xfer R, addr=0x50, len=1
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<4>the i2c_transfer return 0
<4>here is the i2c_transfer
<7>i2c i2c-2: master_xfer W, addr=0x50, len=1
<7>i2c i2c-2: master_xfer R, addr=0x50, len=1
<7>s3c-i2c s3c2440-i2c.2: START: 000000d0 to IICSTAT, a0 to DS
<7>s3c-i2c s3c2440-i2c.2: iiccon, 000000aa
<7>s3c-i2c s3c2440-i2c.2: timeout
<4>the i2c_transfer return 0
好像是s3c24xx_i2c_irq函数没有执行,造成的超时,也就是中断没有触发,中断一般发生在IICDS寄存器写入完成,以及发送完成时,为什么没有触发呢?难道是因为板文件中没有添加平台数据。请版主帮忙解决下,谢谢! stat |= S3C2410_IICSTAT_START;
writel(stat, i2c->regs + S3C2410_IICSTAT); 内核此处将IICSTAT寄存器第5位置1,则数据被自动发送出去,触发中断。但是为什么超时呢? nettui 发表于 2013-6-20 19:33 static/image/common/back.gif
stat |= S3C2410_IICSTAT_START;
writel(stat, i2c->regs + S3C2410_IICSTAT); 内核此处将IICSTAT寄存 ...
内核已经包含了IIC驱动了,不需要额外编写啊。
超时一般是IIC初始化有问题,
1、可能是24C02匹配的上拉电阻的阻值(因为我们的IIC总线上挂载了多个IIC的设备,都操作正常,这个基本上可以排除)。
2、可能是软件初始化有问题。 亚瑟王 发表于 2013-6-21 09:15 static/image/common/back.gif
内核已经包含了IIC驱动了,不需要额外编写啊。
超时一般是IIC初始化有问题,
1、可能是24C02匹配的上拉 ...
IIC总线驱动是/driver/i2c/buses/i2c-s3c2410.c,at24l02的设备驱动程序是不是没有提供啊?所以我才想编写下AT24L02的设备驱动程序啊 nettui 发表于 2013-6-21 11:07 static/image/common/back.gif
IIC总线驱动是/driver/i2c/buses/i2c-s3c2410.c,at24l02的设备驱动程序是不是没有提供啊?所以我才想编 ...
24C02使用的是IIC驱动,用应用程序来实现读写的。天嵌科技提供有参考的例子程序的。本论坛可以下载的。
页:
[1]