|
本帖最后由 dawnos 于 2013-8-16 10:03 编辑
自己做了个板子,L3G4200D部分如下(照搬论坛内的):
现在已经能读出芯片ID,是正确的。但三轴数据均无变化,一直不变,每次断电后才会改变:
可以看到OUT_TEMP(0x26)寄存器的值位0xf9。如果读取STATUS_REG的话,则一直是全0。
主循环如下:
L3G4200D的初始化如下:- int l3g4200d_init(void)
- {
- u8 id;
-
- if ((id = i2c_read(L3G4200D_I2C_ADDRESS, WHO_AM_I)) != L3G4200D_ID)
- return 1;
- #ifdef DEBUG
- printf("L3G4200D ID:0x%x\n", id);
- #endif
-
- /*
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG1, 0x0f); //使能三轴,设置低通滤波器为100±12.5Hz
- i2c_write(L3G4200D_I2C_ADDRESS,CTRL_REG2, 0x03); //设置高通滤波器
- i2c_write(L3G4200D_I2C_ADDRESS,CTRL_REG3, 0x20); //
- i2c_write(L3G4200D_I2C_ADDRESS,CTRL_REG4, 0x30|(1<<7));
- i2c_write(L3G4200D_I2C_ADDRESS,CTRL_REG5, 0x0F|(1<<4));
- */
-
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG1, 0xEF);
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG2, 0x00);
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG3, 0x08);
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG4, 0x10);
- i2c_write(L3G4200D_I2C_ADDRESS, CTRL_REG5, 0x00);
-
- return 0;
- }
复制代码 有需要的话可以贴出其他程序。
补充一句,程序在用模块调试的时候是正常的,可以正确读出数据。
第一次做这样的板子,求指导~~
另外,在调试ADXL345时,同样发现了这个问题:
http://www.amobbs.com/thread-5536186-1-1.html
我的也是119批次,请问有解决方法么?(除了换~~) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|