我已经陷入了LIS3DH的I2C驾驶员近一个星期,该怎么办

15个帖子 / 0新
最后一篇文章
夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
我已经陷入了LIS3DH的I2C驾驶员近一个星期,该怎么办

嗨,大家在这里。最近,我参与了使用LIS3DH的一个项目。有一些约束,因此我必须选择I2C驱动程序而不是SPI。如您所见,我一次测试了SPI驱动程序,并且一切都很好。但是,当它转向I2C时,我将陷入近一个星期的时间,而不会取得任何进展。我在这里阅读了有关I2C的所有帖子,没有任何帮助。我只试图读回我注册的人的内容,并使用一个逻辑分析仪来监视I2C总线,结果是,在一些建议的初始化过程后,没有从LIS3DH响应ACK。那么,这里有人可以通过给我一些建议来帮助我摆脱僵局吗?例如,我应该开发一些代码以模拟I2C总线吗?
谢谢。

维桑
离线
最后一次露面:5年4个月前
大师 掌握
加入:2014-06-26 08:49
您好夏季20100514!

您好夏季20100514!

您可以尝试很多事情。到目前为止,您尝试过什么?您可以仔细检查PIN销配置,可以检查芯片选择(CS)PIN在加速度计上高高拉动以选择I2C总线等。

维桑
离线
最后一次露面:5年4个月前
大师 掌握
加入:2014-06-26 08:49
一件有趣的事情

数据表中也有一件有趣的事情:

与LIS3DH相关的从属地址为001100X。SDO/SA0 PAD可用于修改设备地址的重要一点。如果SA0垫连接到电压供应,则LSB为1(地址0011001B),如果SA0 PAD连接到地面,则LSB值为0(地址0011000B)。该解决方案允许将两个不同的加速度计连接到相同的I2C线路。

因此,请检查您的从属地址,0011000或0011001

夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
感谢您的回复。我有

感谢您的回复。我已经检查了您至少5次提到的内容,所以我认为芯片或其他问题一定有问题?此外,是否有任何已测试的演示项目或.c文件,例如在某些芯片上效果很好,例如ADXL345?

维桑
离线
最后一次露面:5年4个月前
大师 掌握
加入:2014-06-26 08:49
不幸的是我不知道

不幸的是,我不知道会有DA1458X芯片。也许您可以分享驾驶员的一些代码?

谢谢!

夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
在发行项目中

在对话框提供的智能标签的发布项目中,我发现了用于一个I2C加速度计MC3410的驱动程序文件,这可能会有所帮助。

je_dialog
离线
最后一次露面:17小时35分钟前
职员
加入:2013-12-05 14:02
你好夏季20100514,你了吗

您好夏季20100514,您是否看过perhipherals项目中的I2C EEPROM驱动程序示例?虽然它不是传感器,但它是通用的I2C命令。

br je_dialog

je_dialog
离线
最后一次露面:17小时35分钟前
职员
加入:2013-12-05 14:02
你好夏季20100514,我

Hello Summer20100514,我在下面附上一个用于裁判的SE95 I2C温度传感器的示例。I2C API相当强大:我们有几个客户与I2C MEMS一起在Producton中,并且没有报告I2C API的问题。

br je_dialog

SDK…\ peripheral_examples…da14580_peripheral_setup.uvproj

步骤2.请参阅:periph_setup.h:
将hardware_configuration_index(。)更改为“ 1”。

/*测试定义 - 选择与H/W设置匹配的配置
*------------------------------------------------------------------------------------

  • (0)SPI闪存与UART
  • (1)I2C EEPROM与UART
  • (2)与蜂鸣器和UART的正交编码器
    *------------------------------------------------------------------------------------
    */
    // 硬件配置<0 => spi flash with uart <1 => i2c eeprom with uart <2 =>正交编码器,计时器和蜂鸣器带有uart
    #define hardware_configuration_index(1)// 1 => i2c

步骤3。
在以下位置添加新软件:EEPROM_TEST.C(在文件的开头)

挥发性INT16_T温度;
挥发性INT II;

//测试周围SE95温度传感器
//地址= 1001 A2 A1 A0 R/W => 7bitaddress = 0x48 ... 0x48 + 7 = 0x4f

i2c_eeprom_init(0x48,i2c_standard,i2c_7bit_addr,i2c_1byte_addr);

//阅读内部id-number:
ii = i2c_eeprom_read_byte(0x05);//测试阅读id-value = 0xa1

//阅读温度
btrd = i2c_eeprom_read_data(rd_data,0,2);

温度= 256 * rd_data[0]+ rd_data[1];
温度=温度 / 8;//向右移动3位

夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
@br je_dialog,谢谢

@br je_dialog,感谢您的关注和耐心。

Mohit3112
离线
最后一次露面:6个月3周前
专家
加入:2014-08-04 13:45
嘿夏季20100514,

嘿夏季20100514,

您的问题解决了吗,我在ADXL345上面临着同样的问题,我尝试了它被卡在的EEPROM示例代码
wait_for_received_byte()?

谢谢

夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
您应该检查上拉

您应该首先检查引体向后撤回器和从地址,并且应该更好地使用逻辑分析仪。祝你好运

Mohit3112
离线
最后一次露面:6个月3周前
专家
加入:2014-08-04 13:45
我正在使用4.7k的上拉

我正在为LIS3DH使用4.7K的上拉值,但它对我不起作用(顺便说一句,ADXL工作了!!)。您正在使用什么引体撤回器,如果SDO接地7位从地址为0x18(因为我们排除了读写位)?

夏季20100514
离线
最后一次露面:4年2个月前
大师
加入:2014-12-30 05:01
是的,还有一些东西

是的,仍然有些东西使我感到困惑。我的同事正在研究这一点,他对我说,他在I2C功能之间添加了一些延迟,并且似乎运行良好,因此您可以尝试一下。而且,如果您取得了任何进展,请在此处发布参考,谢谢。

Mohit Rai
离线
最后一次露面:4年6个月前
加入:2016-07-28 20:57
任何人都得到解决方案

任何人都得到了这个问题的解决方案...........因为我也遇到了同样的问题,我的代码也被困在ptri2c-> getStatus()的无限循环中。

Mohit Rai
离线
最后一次露面:4年6个月前
加入:2016-07-28 20:57
我也变得同样

我也遇到了同样的问题...我的代码也被困在“ ptri2c-> getStatus()的无限循环中。忙” .........这个问题的解决方案是什么?如果有任何身体解决此问题,请告诉解决方案。