首页 > 解决方案 > Intel MAX10 I2C 不发送任何信号。我该如何解决?

问题描述

我用的是DE10-LITE板。

我尝试使用 I2C 连接外部 ROM。

在 QSYS 中,我设置了 NIOS 和 I2C Master Core。

编译没有错误。

这是我的代码

GPIO(0) <= '0' WHEN SDA_OE = '1' ELSE 'Z';
GPIO(1) <= '0' WHEN SCL_OE = '1' ELSE 'Z';

SDA <= GPIO(0);
SCL <= GPIO(1);

u0 : component QSYS
port map (
clk_clk         => MAX10_CLK1_50,         --       clk.clk
reset_reset_n      => RST,      --      reset.reset_n
i2c_0_i2c_serial_sda_in => SDA, -- i2c_0_i2c_serial.sda_in
i2c_0_i2c_serial_scl_in => SCL, --         .scl_in
i2c_0_i2c_serial_sda_oe => SDA_OE, --         .sda_oe
i2c_0_i2c_serial_scl_oe => SCL_OE --         .scl_oe
);

GPIO 是输入输出引脚。

我像这样在 Eclips 中编写程序代码。

 i2c_dev = alt_avalon_i2c_open("/dev/i2c_0");
 if (NULL==i2c_dev)
 {
  printf("Error: Cannot find /dev/i2c_0\n");
  //return 1;
 }

 while(1)
 {
  alt_avalon_i2c_master_target_set(i2c_dev,SLAVE_ROM_ADDR);
  status=alt_avalon_i2c_enable(i2c_dev);
  i2c_tx_buf[0] = 0x00;
  i2c_tx_buf[1] = 0x00;
  i2c_tx_buf[2] = 0x03;
  i2c_tx_buf[3] = 0x04;
  status=alt_avalon_i2c_master_tx(i2c_dev, i2c_tx_buf, 4, 0);
}

我将 gpio 引脚连接到示波器。但它不发送任何信号。

我还使用 BusBee 串行总线监视器来检查 I2C 信号。但它无法检测到任何信号。

什么是问题?

标签: i2cnios

解决方案


推荐阅读