This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dm385 i2c 问题



i2c读写时,报错

root@DM385_IPNC:/opt/ipnc/bin# ./i2c_rdwr.out -r 78 300a
omap_i2c omap_i2c.3: controller timed out
I2C (0x78): Read ERROR !!! (reg[0x0a], count = 4)

查了下datasheet,我用的是c12,j13

在uboot里配置了复用为i2c

/* 135-I2C[2]_SDA 136-I2C[2]_SCL */
/* -136 */ BIT(0), BIT(0), BIT(6), BIT(6),

在kernel/arch/arm/mach-omap2/board-dm385ipnc.c里添加了

omap_writel(0xe0040, 0x48140A18);
 omap_writel(0xe0040, 0x48140A1c);
 omap_writel(0x1, 0x48140924);
 omap_writel(0x1, 0x48140928);
 omap_writel(0x1, 0x481409a0);
 omap_writel(0x1, 0x481409a4);
 omap_writel(0x1, 0x48140a6c);
 omap_writel(0x1, 0x48140b8c);
 omap_writel(0x1, 0x48140b90);
 omap_writel(0x1, 0x48140ba8);

跟踪代码,发现的确执行了上面代码,但在系统起来后,发现复用还是没有成功

root@DM385_IPNC:/opt/ipnc/bin# ./mem_rdwr.out --rd 48140A18
[host] 0x48140a18:
[host] 000E0001

手动配置也不成功

root@DM385_IPNC:/opt/ipnc/bin# ./mem_rdwr.out --wr 48140A18 000E0040
[host] ORG 0x48140a18: e0001
[host] NEW 0x48140a18: e0001

有两点疑惑:1、除了uboot和kernel里那两个地方复用外,还有什么地方需要操作的;

                         2、为什么手动配置也没有效果;

大家有熟悉的给指点下,先谢谢~

  • 手动配置若不成功,请先挂载附件中的ko

    可能系统起来之后app还是改了pinmux的,需要对比一下参考设计上这个管脚用作什么了。

  • Eason Wang 说:

    手动配置若不成功,请先挂载附件中的ko

    可能系统起来之后app还是改了pinmux的,需要对比一下参考设计上这个管脚用作什么了。

    谢谢 Eason Wang , 是不是直接insmod?

    root@DM385_IPNC:/opt/ipnc/bin# insmod 4846.prot_reg_rdwr.ko
    Successfully registered prot_reg DebugFS entry

    手动配置还是不行,参考设计和我手头的板子对C12,J13pin应用是一样的,我查下app里pinmux。

  • app里配一下是起作用了 估计是哪个地方配置为他用了 但是挺奇怪一个问题 我只配了i2c相关两个pin脚 系统起来后 直接变root@814X-evm了 不是dm385-ipnc 等后面调出图像再回头查查。