⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
3个帖子/ 0个新帖子
最后发表
罗拉
离线
最后看到:3年3个月前
加入:2016-12-05 29
I2c示例不工作

亲爱的对话框,

我正在使用peripheral_examples中的i2c_eeprom项目,我想从tmp102传感器读取值,但我的程序在i2c_init()函数中的WAIT_UNTIL_I2C_FIFO_IS_EMPTY()中阻塞
如果我注释WAIT_UNTIL_I2C_FIFO_IS_EMPTY(),则在i2c_eeprom_read_byte()函数中的WAIT_FOR_RECEIVED_BYTE()中阻塞。

(我已经在Arduino Uno中测试了传感器,可以接收数据。)
我将SDA和SCL连接到P0_3和PO_2引脚上,我还需要连接其他东西吗?
删除J26跳投。
在user_peripher_setup .h中定义
#定义x20000 I2C_EEPROM_SIZE 0
#定义I2C_EEPROM_PAGE 256
#定义x48 I2C_SLAVE_ADDRESS 0
#定义I2C_SPEED_MODE I2C_FAST
#定义I2C_ADDRESS_MODE I2C_7BIT_ADDR
#定义I2C_ADDRESS_SIZE I2C_1BYTE_ADDR
#定义I2C_GPIO_PORT GPIO_PORT_0
#定义I2C_SCL_PIN GPIO_PIN_2
#定义I2C_SDA_PIN GPIO_PIN_3

在user_peripher_setup .c内部GPIO_reservations i添加
Reserve_gpio (i2c_scl, i2c_gpio_port, i2c_scl_pin, pid_i2c_scl);
Reserve_gpio (i2c_sda, i2c_gpio_port, i2c_sda_pin, pid_i2c_sda);
在set_pad_functions()中,
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SCL_PIN, INPUT, PID_I2C_SCL, false);
GPIO_ConfigurePin(I2C_GPIO_PORT, I2C_SDA_PIN, INPUT, PID_I2C_SDA, false);
在main()中,我调用了I2C EEPROM测试套件,但每个测试都在读命令中的WAIT_FOR_RECEIVED_BYTE()或写命令中的WAIT_UNTIL_I2C_FIFO_IS_EMPTY()处停止。

我尝试了不同的地址,pin,但是我仍然不能获得传感器的值。
如果你能告诉我哪里做错了,这对我很有帮助。
谢谢提前

设备:
MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨,罗拉,

嗨,罗拉,

i2c示例是一个演示,为了用于与eeprom交互,如果你想与传感器交互,你不需要大小或页面。通过在不同的I2C模块上运行示例,您将无法与您想要的传感器进行通信(如果您正在尝试这样做的话)。您将不得不修改代码以适应您正在使用的传感器,或者更好地以eeprom示例为参考,并基于此创建一些更简单的东西,以便与温度模块进行交互。这一事实的设备卡WAIT_FOR_RECEIVED_BYTE()意味着i2c模块没有任何数据从温度传感器和WAIT_UNTIL_I2C_FIFO_IS_EMPTY()意味着,当你在写,数据永远不会发送给对方,保持先进先出的设备,因为显然i2c线路正忙。您还需要在您的I2C通信上使用引体向上在两条线路上,我看到您没有使用内部引体向上,您使用外部引体向上吗?

由于MT_dialog

z0806020433
离线
最后看到:11个月,3个星期前
加入:2016-05-05 13:32
嗨罗拉!

嗨罗拉!
你处理好这个问题了吗?我得到了同样的问题。