无法使用MPU6050使用i2c进行交易

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
goluguri andee ...
离线
最后一次露面:1年5天前
加入:2019-05-20 20:58
无法使用MPU6050使用i2c进行交易

大家好,

我正在尝试使用I2C接口读取MPU 6050的Whoami寄存器的值。我无法直接找到函数R / W.所以,使用适配器,我使用了这个代码。

EEPROM_DATA_READER(EEPROM_24FC256,0x75,PAGE_BUFF);

Page_Buff为空,读取后会收到值。

Tyatic Uint16_t EEPROM_DATA_READER(i2c_device dev,uint8_t pageaddr,uint8_t * buff)
{
uint8_t e_addr_buff [1];

/ *填写地址字节* /
e_addr_buff [0] = pageaddr;
// e_addr_buff [1] = 0;
// e_addr_buff [1] = pageaddr >> 8;

/ *打开设备* /
ad_i2c_handle_t dev_hdr = ad_i2c_open((ad_i2c_controller_conf_t *)dev);

I2C_ERROR_CODE = AD_I2C_WRITE_READ(dev_hdr,(const uint8_t *)e_addr_buff,
sizeof(e_addr_buff),buff,eeprom_24lc256_page_size,
hw_i2c_f_add_stop);

if(i2c_error_code == 0){
/ *
*达到最大数据大小时,将滚动到启动时
* 地址。
* /
printf(“读成功\ n”);
// pageaddr =(pageaddr + EEPROM_24LC256_PAGE_SIZE)%EEPROM_TEST_DATA_SIZE;
} 别的 {
printf(“\ n \ runsuccessful i2c读取操作错误代码:%d \ n \ r”,
i2c_error_code);
}

/ *关闭设备* /
ad_i2c_close(dev_hdr,false);

/ *返回下一个EEPROM页面* /
返回pageaddr;
}

我无法读取传感器的正确值,但它一直呈现值0x72。如果我断开传感器,则程序能够检测到该传感器。

我怀疑地址被发送到I2C总线的方式。我错过了什么吗?

谢谢,

乡间。

设备:
lc_dialog
离线
最后一次露面:1周前1周前
职员
加入:2016-09-19 23:20
嗨Sandeep,

嗨Sandeep,

请您还可以共享EEPROM_24FC256实例初始化数据。EEPROM_24LC256_PAGE_SIZE,这是重新批准到您的应用程序,或者这实际上是EEPROM页面大小。你能确认。

如果您有另一个传感器,可以使用不同的I2C传感器检查69倍,或用不同的设备读取此传感器。

此致,
lc_dialog

goluguri andee ...
离线
最后一次露面:1年5天前
加入:2019-05-20 20:58
/ * EEPROM特定于设备

/ * EEPROM设备特定参数* /
#define eeprom_test_data_size(1)
#define eeprom_24lc256_page_size(1)

我已经定义了它以读取1个字节。

#define EEPROM_24FC256_I2C_ADDRESS(0x68)

/ **
* I2C 1配置
* /
#define eeprom_24fc256_scl_port(hw_gpio_port_0)
#define EEPROM_24FC256_SCL_PIN(HW_GPIO_PIN_30)

#define eeprom_24fc256_sda_port(hw_gpio_port_0)
#define EEPROM_24FC256_SDA_PIN(HW_GPIO_PIN_31)

I2C地址是设备地址。

我能够与Arduino正确读取此传感器值。

lc_dialog
离线
最后一次露面:1周前1周前
职员
加入:2016-09-19 23:20
嗨Sandeep,

嗨Sandeep,

感谢您分享上面的代码。但是,我在要求这个结构ad_i2c_controller_conf_t.在您的实现中的实例。你传递给的设备EEPROM_DATA_READER()功能是EEPROM_24FC256这是定义所有适配器属性的结构的仪器。看着这会导致一些洞察力。
此外,在读者功能实现中也是一个观察sizeof(e_addr_buff)为您的用例提供2,也可以给您2,也可以是1。
我也试图复制我身边的问题,以检查任何固有问题。如果我找到了什么,请告诉你..

此致,
lc_dialog