亲爱的对话框,
我正在使用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()停止。
我尝试了不同的地址,别针,但我仍然无法获得传感器的值。
如果你能告诉我我做错了什么,它会有所帮助。
提前致谢
嗨Lora,
I2C示例是一个恶魔图示,以便用于与EEPROM进行交互,以便您希望与传感器交互,以便您不需要大小或页面。在不同的I2C模块上运行示例,您不会与您想要的传感器通信,在不同的I2C模块上(如果这是您正在尝试的)。您必须修改代码以适合您使用的传感器,或者更好地将EEPROM示例作为参考,并基于它创建更简单的东西,以便与温度模块交互。设备在wait_for_received_byte()中粘贴的事实意味着I2C模块从未从温度传感器中获取任何数据,等待_UNTIL_I2C_FIFO_IS_EMPTY()意味着当您写入时,数据永远不会发送到另一侧并留在FIFO中设备的内容,因为显然,I2C线很忙。还需要在这两条线上的I2C通信上使用上拉,而且我看到你没有使用内部拉起,你使用的是外部拉起吗?
谢谢mt_dialog.
嗨洛拉!
你有没有处理这个问题?我得到了同样的问题。