I2C实例不起作用

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
3个帖子/ 0新
最后一篇
洛拉
离线
最后一次露面:3年3个月前
加入:2016-12-05 10:29
I2C实例不起作用

亲爱的对话框,

我正在使用peripheral_examples的i2c_eeprom项目,我想从tmp102传感器读取值,但我的程序它是在等待_until_i2c_fifo_is_empty()中被阻止的I2c_init()函数中的
如果我评论wait_until_i2c_fifo_is_empty(),则在I2C_EEPROM_READ_BYTE()函数中的等待_FOR_RECEIVED_BYTE()中被阻止。

(我已经在Arduino Uno中测试了传感器,我能够收到数据。)
我连接了SDA和SCL到P0_3和PO_2引脚。我需要连接其他东西吗?
删除了J26跳线。
在user_periph_setup.h中定义
#define i2c_eeprom_size 0x20000.
#define i2c_eeprom_page 256.
#define i2c_slave_address 0x48
#define i2c_speed_mode i2c_fast.
#define i2c_address_mode i2c_7bit_addr.
#define i2c_address_size i2c_1byte_addr.
#define i2c_gpio_port gpio_port_0.
#define i2c_scl_pin gpio_pin_2.
#define i2c_sda_pin gpio_pin_3.

在USER_PERIPH_SETUP.c中的GPIO_RESERVATIONS()我添加了
保留_gpio(i2c_scl,i2c_gpio_port,i2c_scl_pin,pid_i2c_scl);
保留_gpio(i2c_sda,i2c_gpio_port,i2c_sda_pin,pid_i2c_sda);
在set_pad_functions()中,
gpio_configurepin(i2c_gpio_port,i2c_scl_pin,输入,pid_i2c_scl,false);
gpio_configurepin(i2c_gpio_port,i2c_sda_pin,输入,pid_i2c_sda,false);
在Main()我称为I2C EEPROM测试套件,但每个测试在WATE命令中的read命令或wait_until_i2c_fifo_is_empty()中在wait_for_receive_byte()停止。

我尝试了不同的地址,别针,但我仍然无法获得传感器的值。
如果你能告诉我我做错了什么,它会有所帮助。
提前致谢

设备:
mt_dialog.
离线
最后一次露面:3个月15小时前
职员
加入:2015-06-08 11:34
嗨Lora,

嗨Lora,

I2C示例是一个恶魔图示,以便用于与EEPROM进行交互,以便您希望与传感器交互,以便您不需要大小或页面。在不同的I2C模块上运行示例,您不会与您想要的传感器通信,在不同的I2C模块上(如果这是您正在尝试的)。您必须修改代码以适合您使用的传感器,或者更好地将EEPROM示例作为参考,并基于它创建更简单的东西,以便与温度模块交互。设备在wait_for_received_byte()中粘贴的事实意味着I2C模块从未从温度传感器中获取任何数据,等待_UNTIL_I2C_FIFO_IS_EMPTY()意味着当您写入时,数据永远不会发送到另一侧并留在FIFO中设备的内容,因为显然,I2C线很忙。还需要在这两条线上的I2C通信上使用上拉,而且我看到你没有使用内部拉起,你使用的是外部拉起吗?

谢谢mt_dialog.

Z0806020433.
离线
最后一次露面:15小时前1年
加入:2016-05-05 13:32
嗨洛拉!

嗨洛拉!
你有没有处理这个问题?我得到了同样的问题。