TI中文支持网
TI专业的中文技术问题搜集分享网站

am335x I2C使用问题

1、将I2C1的复位引脚给配置

2、在linux系统/dev/上能够看到i2c-2这个设备文件。

但是操作的时候,通过示波器看没有任何波形.

[root@/]# echo 0x32>/dev/i2c-2
^[[Aomap_i2c omap_i2c.2: timeout waiting for bus ready

请问一下怎么配通i2c1…仍然不通的原因是????

3、linux系统启动的时候,i2c打印的信息

i2c /dev entries driver
Linux video capture interface: v2.00
i2c-core: driver [msp3400] using legacy suspend method
i2c-core: driver [msp3400] using legacy resume method
omap_i2c omap_i2c.2: controller timed out
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.2: timeout waiting for bus ready
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out
omap_i2c omap_i2c.3: controller timed out

andarm lin1:

这问题纠结了很久都还没有解决,求指导。

andarm lin1:

回复 andarm lin1:

board-am335xevm.c上的配置。

static struct pinmux_config i2c1_pin_mux[] = { {"uart0_ctsn.i2c1_sda", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, {"uart0_rtsn.i2c1_scl", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, {NULL, 0},};

static struct i2c_board_info am335x_i2c1[] = { { I2C_BOARD_INFO("pcf8563", 0x51),//lin add }, { I2C_BOARD_INFO("my_wsd", 0x40), },};

static void i2c1_init(int evm_id, int profile){ setup_pin_mux(i2c1_pin_mux); omap_register_i2c_bus(2, 100, am335x_i2c1, ARRAY_SIZE(am335x_i2c1)); return;}

不知道i2c1的使用还需要修改哪里….

现在老是提示:

sh: write error: Connection timed out

Yaoming Qin:

回复 andarm lin1:

1. pinmux再查下,最好能用我们的pinmux工具验证下

2. i2c的地址是否正确也查下。

Jian Zhou:

回复 Yaoming Qin:

请问您这个I2C 1总线上的设备的probe()函数执行有问题么?有没有跟进这个函数看下

user4088306:

回复 andarm lin1:

建议你首先核对一下原理图,确认PINMUX,其次你的i2c1_init需加入内核设备初始化列表中,还有就是你这两个i2c设备的驱动要编译进内核,其它应该就没什么了。我有一个疑问是你给的配置信息是关于i2c1的,而系统启动提示连接超时的却是有关i2c2和i2c3的。

andarm lin1:

回复 Yaoming Qin:

1、pinmux工具是什么工具没有使用过??能发一下吗?? 直接操控i2c1两个引脚设置高低电平是没有问题的。

2、查看过i2c地址没有问题

andarm lin1:

回复 Jian Zhou:

程序能够执行probe()而且貌似上面的打印就是和probe有关系。

andarm lin1:

回复 user4088306:

很细心,非常感谢。

貌似配置am335x  的i2c0的时候 ,对应kernel打印的就是i2c1

同理配置i2c1的时候,对应kernel就是打印i2c2了。

Yaoming Qin:

回复 andarm lin1:

关于pinmux,请查看 http://processors.wiki.ti.com/index.php/Pin_Mux_Utility_for_ARM_MPU_Processors 

andarm lin1:

回复 Yaoming Qin:

参考i2c0配置i2c1的pinmux

static struct pinmux_config i2c1_pin_mux[] = {{"uart0_ctsn.i2c1_sda", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |AM33XX_PULL_ENBL | AM33XX_INPUT_EN},{"uart0_rtsn.i2c1_scl", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |AM33XX_PULL_ENBL | AM33XX_INPUT_EN},{NULL, 0},};

没有发现pinmux有什么问题。这样配是对了吗???

赞(0)
未经允许不得转载:TI中文支持网 » am335x I2C使用问题
分享到: 更多 (0)