我已经陷入了LIS3DH的I2C司机差不多一周,我该怎么办

15个帖子/ 0新
最后一篇
SUMMER20100514.
离线
最后一次露面:4年2个月前
格鲁鲁
加入:2014-12-30 05:01
我已经陷入了LIS3DH的I2C司机差不多一周,我该怎么办

嗨,每个人都在这里。最近,我从事LIS3DH使用的一个项目。有一些约束,所以我必须选择I2C驱动程序而不是SPI。正如您所看到的,我测试了SPI驱动程序一次,才能效果很好。但是当它转向I2C时,我将困在司机近一周而不进行任何进展。我在这里阅读了关于i2c的所有帖子,没有任何帮助。我只尝试读回谁是谁注册的内容,并使用一个逻辑分析器来监视I2C总线,结果是在一些建议的初始化过程之后没有从LIS3DH开始恢复ACK。所以在这里有人可以通过给我一些建议,帮助我走出僵局吗?例如,我应该开发一些代码来模拟I2C总线吗?
谢谢。

vesan.
离线
最后一次露面:5年4个月前
格鲁鲁 主
加入:2014-06-26 08:49
你好夏天20100514!

你好夏天20100514!

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

vesan.
离线
最后一次露面:5年4个月前
格鲁鲁 主
加入:2014-06-26 08:49
一个有趣的事情

数据表中也有趣的事情:

与LIS3DH相关联的从地址是001100x。SDO / SA0 PAD可用于修改设备地址的较小位。如果SA0焊盘连接到电压电源,则如果SA0焊盘连接到地,则LSB为1(地址0011001B),LSB值为0(地址0011000B)。该解决方案允许将两个不同的加速度计连接和地址到相同的I2C线路。

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

SUMMER20100514.
离线
最后一次露面:4年2个月前
格鲁鲁
加入:2014-12-30 05:01
感谢您的回复。我有

感谢您的回复。我已经检查过上面提到的至少5次,所以我认为芯片或其他东西必须有什么问题?更重要的是,在某些芯片上有效地测试了任何演示项目或.c文件,例如ADXL345?

vesan.
离线
最后一次露面:5年4个月前
格鲁鲁 主
加入:2014-06-26 08:49
不幸的是我不知道

不幸的是,我不知道da1458x芯片会有任何。也许你可以分享你的驱动程序的一些代码?

谢谢!

SUMMER20100514.
离线
最后一次露面:4年2个月前
格鲁鲁
加入:2014-12-30 05:01
在发布项目中

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

je_dialog.
离线
最后一次露面:15小时30分钟前
员工
加入:2013-12-05 14:02
你好夏天201400514,你曾经

您好夏季夏季2014年,您是否查看了Teh Peraipherals项目中的I2C EEPROM驱动程序示例?虽然它不是传感器,但它是通用的i2c命令。

BR JE_DIALOG.

je_dialog.
离线
最后一次露面:15小时30分钟前
员工
加入:2013-12-05 14:02
你好夏天2014年,我

Hello Summer20100514,我将下面附着在一个referebce的SE95 I2C温度传感器的示例。I2C API相当强壮:我们有几个在具有I2C MEMS中的产品中的客户,并且没有报告I2C API的问题。

BR JE_DIALOG.

sdk ... \ peripheral_examples ... da14580_peripheral_setup.uvproj

步骤2.查看:periph_setup.h:
将硬件_configuration_index(。)更改为'1'。

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

  • (0)带有UART的SPI闪存
  • (1)I2C EEPROM与UART
  • (2)具有蜂鸣器和UART的正交编码器
    * ---------------------------------------------------
    * /
    // 硬件配置<0 => SPI闪存与UART <1 =>带有UART <2 =>正交编码器,定时器和蜂鸣器,带有UART
    #define硬件_configuration_index(1)// 1 => I2C

第3步。
添加新软件:EEPROM_TEST.C(在文件的开头)

挥发性int16_t温度;
挥发性㈡

//测试外围设备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号:
II = I2C_EEPROM_READ_BYTE(0x05);//测试读数ID值= 0xA1

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

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

SUMMER20100514.
离线
最后一次露面:4年2个月前
格鲁鲁
加入:2014-12-30 05:01
@br je_dialog,谢谢

@br je_dialog,谢谢你的注意和耐心。

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

嘿夏天2014年,

你的问题是否解决了,我面临着与ADXL345相同的问题,我已经尝试了EEPROM示例代码它被困
wait_for_received_byte()?

谢谢

SUMMER20100514.
离线
最后一次露面:4年2个月前
格鲁鲁
加入:2014-12-30 05:01
你应该检查上拉

您应该先检查上拉电阻和从机地址,您应该更好地使用逻辑分析仪。祝好运

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

我正在使用4.7k的LIS3DH,但这对我来说不起作用(让ADXL通过谢谢!!)。您使用的是,如果SDO接地7位从地址为0x18,则使用哪些上拉resistist(如我们排除读写位)?

SUMMER20100514.
离线
最后一次露面: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(”忙碌的循环中。忙碌“.........这个问题的解决方案是什么?如果有任何机构解决这个问题,请告诉解决方案。事先告诉谢谢。