微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 将de1 soc中i2c2 设置为fpga后无法正常工作

将de1 soc中i2c2 设置为fpga后无法正常工作

时间:10-02 整理:3721RD 点击:
我想要把hps 里面i2c2设置为fpga的io,但是他无法正常工作
qsys 设置如下:


verilog部分添加了输入输出接口

  1. output i2c2_clk,
  2. inout i2c2_sda_io

复制代码


两根线

  1.   wire i2c2_sda;
  2.   wire i2c2_out_data;

复制代码



一个ip核

  1. ALT_IOBUF sda_iobuf (.i(1'b0), .oe(i2c2_out_data), .o(i2c2_sda), .io(i2c2_sda_io)); //

复制代码



soc声明

  1. soc_system u0 (

  2.         .pio_led_external_connection_export    (LEDR),     // pio_led_external_connection.export
  3.                   .pio_hex0_external_connection_export    (HEX0),     // pio_led_external_connection.export
  4.                   
  5.         .hps_0_i2c2_clk_clk                    (i2c2_clk),                    //               hps_0_i2c2_clk.clk
  6.         .hps_0_i2c2_out_data                   (i2c2_out_data),                   //                   hps_0_i2c2.out_data
  7.         .hps_0_i2c2_sda                        (i2c2_sda),                         //                             .sda
  8.      ……

复制代码



然后修改了linux的dtb

  1. &i2c2 {
  2.     status = "okay";
  3.     speed-mode = ;

  4.     mpu6050@1 {
  5.             compatible = "invensense,mpu6050";
  6.             reg = ;
  7.             //interrupt-parent = ;
  8.             //interrupts = ;
  9.             mount-matrix = "-0.984807753012208",  /* x0 */
  10.                            "0",                   /* y0 */
  11.                            "-0.173648177666930",  /* z0 */
  12.                            "0",                   /* x1 */
  13.                            "-1",                  /* y1 */
  14.                            "0",                   /* z1 */
  15.                            "-0.173648177666930",  /* x2 */
  16.                            "0",                   /* y2 */
  17.                            "0.984807753012208";   /* z2 */
  18.     };

  19.     pca@1 {
  20.             compatible = "nxp,pca9685-pwm";
  21.             #pwm-cells = ;
  22.             reg = ;
  23.             invert;
  24.             open-drain;
  25.     };
  26. };

复制代码


之后在linux上面不能工作,(i2c总线1上面没连接mpu6050,2上面连接着)

  1. ubuntu@DE1_SoC ~/l/linux-socfpga> i2cdetect -y -r 2
  2. 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  3. 00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
  4. 10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
  5. 20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
  6. 30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
  7. 40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
  8. 50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
  9. 60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
  10. 70: 70 71 72 73 74 75 76 77
  11. ubuntu@DE1_SoC ~/l/linux-socfpga> sudo insmod drivers/iio/imu/inv_mpu6050/inv-mpu6050.ko
  12. ubuntu@DE1_SoC ~/l/linux-socfpga> dmesg | tail
  13. [  963.440404] inv-mpu6050: probe of 2-0068 failed with error -22
  14. [ 1169.547496] inv-mpu6050: probe of 1-0068 failed with error -121
  15. [ 1169.782021] inv-mpu6050 2-0068: trigger probe fail -22
  16. [ 1169.787196] inv-mpu6050: probe of 2-0068 failed with error -22
  17. [ 1802.398730] inv-mpu6050: probe of 1-0068 failed with error -121
  18. [ 1802.585387] inv-mpu6050 2-0068: trigger probe fail -22
  19. [ 1802.590546] inv-mpu6050: probe of 2-0068 failed with error -22
  20. [ 5026.801030] inv-mpu6050: probe of 1-0068 failed with error -121
  21. [ 5026.955238] inv-mpu6050 2-0068: trigger probe fail -22
  22. [ 5026.960391] inv-mpu6050: probe of 2-0068 failed with error -22

复制代码

求助解决方法


上一篇:数字时钟制作
下一篇:FPGA 求助

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top