搜索

48

主题

604

帖子

1923

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1923
发表于 2017-9-4 18:14:47 14681 浏览 4 回复

i2c总线问题(对应视频31)

本帖最后由 TOPEET_moon 于 2017-9-4 19:25 编辑



有问题可以跟帖~
回复

使用道具 举报

2

主题

6

帖子

91

积分

注册会员

Rank: 2

积分
91
发表于 2018-9-27 13:58:17
本帖最后由 ch122633 于 2018-9-27 14:01 编辑

你好,我的问题可能有点奇怪:
我使用4412精英板,因为发现I2C6是3.3v的接口。然后还能连接出来,手头有个MPU9250模块,就想连上试试。
我卸载了内核的
menuconfig中去掉触摸的驱动
  • Device Drivers  --->
  • Input device support  --->
  • Touchscreens  --->
  • FT5X0X based touchscreens(去掉)
然后是去掉RC522的驱动(SPI占用I2C了)
  • Device Drivers  --->
  • SPI support   --->
  • < >   RC522 Module driver support(去掉)
-> Networking support (NET [=y])                                 
-> CAN bus subsystem support (CAN [=y])                        
-> CAN Device Drivers                                          
-> Platform CAN drivers with Netlink support (CAN_DEV [=y])
    < >   Microchip MCP251x SPI CAN controllers

然后在arch/arm/mach-exynos/mach-itop4412.c中注释了
  1. /*
  2.     sclk = clk_get(spi2_dev, "dout_spi2");
  3.     if (IS_ERR(sclk))
  4.         dev_err(spi2_dev, "failed to get sclk for SPI-2\n");
  5.     prnt = clk_get(spi2_dev, "mout_mpll_user");
  6.     if (IS_ERR(prnt))
  7.         dev_err(spi2_dev, "failed to get prnt\n");
  8.     if (clk_set_parent(sclk, prnt))
  9.         printk(KERN_ERR "Unable to set parent %s of clock %s.\n",
  10.                 prnt->name, sclk->name);

  11.     clk_set_rate(sclk, 800 * 1000 * 1000);
  12.     clk_put(sclk);
  13.     clk_put(prnt);
  14.    
  15.     if (!gpio_request(EXYNOS4_GPC1(2), "SPI_CS2")) {
  16.         gpio_direction_output(EXYNOS4_GPC1(2), 1);
  17.         s3c_gpio_cfgpin(EXYNOS4_GPC1(2), S3C_GPIO_SFN(1));
  18.         s3c_gpio_setpull(EXYNOS4_GPC1(2), S3C_GPIO_PULL_UP);
  19.         exynos_spi_set_info(2, EXYNOS_SPI_SRCCLK_SCLK,
  20.             ARRAY_SIZE(spi2_csi));
  21.     }

  22.     for (gpio = EXYNOS4_GPC1(1); gpio < EXYNOS4_GPC1(5); gpio++)
  23.         s5p_gpio_set_drvstr(gpio, S5P_GPIO_DRVSTR_LV3);

  24.     spi_register_board_info(spi2_board_info, ARRAY_SIZE(spi2_board_info));
  25. */
复制代码
然后在I2C6中添加部分代码:
  1. static struct i2c_board_info i2c_devs6[] __initdata = {
  2.     {
  3.         I2C_BOARD_INFO("mpu9250", MPU9250_ADDRESS>>1),
  4.     },
  5. };
复制代码
然后用视频里的方法发送数据,然后下面是错误信息:
[root@iTOP-4412]# insmod i2c6_9250.ko                                                  
[   30.696430] ==i2c_mpu9250_init:
[   30.698349] ==i2c_mpu9250_probe:
[   35.710029] s3c-i2c s3c2440-i2c.6: timeout waiting for bus idle
[   35.714526] mpu9250 who am i ret value is 0
[root@iTOP-4412]# insmod i2c6_9250.ko                                                  
insmod: can't insert 'i2c6_9250.ko': File exists
[root@iTOP-4412]# rmmod i2c6_9250                                                      
[   45.833934] ==i2c_mpu9250_exit:
[   45.835786] ==i2c_mpu9250_remove:
[root@iTOP-4412]# insmod i2c6_9250.ko                                                  
[   47.618201] ==i2c_mpu9250_init:
[   47.620257] ==i2c_mpu9250_probe:
[   51.620152] s3c-i2c s3c2440-i2c.6: cannot get bus (error -110)
[   55.620040] s3c-i2c s3c2440-i2c.6: cannot get bus (error -110)
[   55.624500] read reg (0x75) error, -121
[   55.628228] mpu9250 who am i ret value is 255
[root@iTOP-4412]# rmmod i2c6_9250                                                      
[   56.911676] ==i2c_mpu9250_exit:
[   56.913568] ==i2c_mpu9250_remove:

另外我发现开发板上电启动后,I2C6的SCL一直的低电平。
我现在束手无策,请问我应该超哪个方向解决,是可能还有驱动占用着I2C6的部分,还是其他什么原因。。谢谢



回复 点赞 1

使用道具 举报

1

主题

3

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2019-5-15 11:31:39
请问你现在解决了这个问题吗 我现在也有这个问题的困扰
回复 点赞

使用道具 举报

0

主题

1

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2020-1-9 15:41:54
视频31的代码在我板子运行时出现错误,menuconfig和平台文件都已经按照视频操作了,还是出错,请问是因为什么呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 点赞

使用道具 举报

0

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2020-8-29 15:50:20

视频31的代码在我板子运行时出现错误,menuconfig和平台文件都已经按照视频操作了,还是出错,请问是因为什么呢
回复 点赞

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表