sasa_spirit 发表于 2011-11-7 18:09:40

L3G4200D 问题讨论

1,L3G4200D的输出是采用补码的形式,
它是(高字节+低字节)还原成原码,
还是(高字节还原)+(低字节还原)?

2,我焊接的L3G4200D芯片,好像没焊好,SPI写入数据和读取数据倒是正常,
但是芯片发热很快,虽然不是很高,但是发热明显不正常,电路板都很热。
没有进行SPI读写时,不发热。。。
我像问下,一般L3G4200D的工作温度是多少?

3,我读取的到数据不是很正常,传感器处于静止状态,理应:3轴采集的数据变化不大的,但是数据是这样的:

8,0,35,254,201,254
185,3,165,249,215,249
186,238,169,9,232,253
192,15,60,242,158,251
233,232,225,12,226,251
31,14,42,244,219,253
240,242,88,5,24,250
228,254,236,254,182,254
174,3,197,249,226,249
134,239,13,9,252,253
117,14,247,242,142,251
176,233,95,12,63,252
151,15,234,242,75,253
225,238,66,8,167,250
120,5,105,250,157,254
32,251,161,255,253,249
212,246,52,4,169,254

可以看出X,Y轴的数据明显有问题,但是Z轴的数据还算变化不大。

nnnkey 发表于 2011-11-16 17:02:52

数据是高字节加低字节合成16位然后取补码

arielw 发表于 2011-11-22 10:38:56

回复【楼主位】sasa_spirit
-----------------------------------------------------------------------

楼主可否把你的程序给我看一下撒,谢谢啦~我这边用示波器测试SDO有数据,但是就是不能正常显示。。。

arielw 发表于 2011-11-22 16:38:15

回复【楼主位】sasa_spirit
-----------------------------------------------------------------------

请问你都配置了哪些寄存器,是如何配置的?

sasa_spirit 发表于 2011-12-19 10:50:29

回复【3楼】arielw
-----------------------------------------------------------------------

unsigned char L3gWr;
    unsigned char MSub;
    unsigned char byData;
        unsigned char tmp=0;

    L3gWr = L3G_IIC_ADDR << 1;
    L3gWr = L3gWr | WRITE_L3G;

    MSub =0x40|CTRL_REG2;

    byData = 0x00; // CTRL_REG1
    byData = 0x16; // CTRL_REG2
    byData = 0x08; // CTRL_REG3
    byData = 0x90; // CTRL_REG4.
    byData = 0x12; // CTRL_REG5
    byData = 0x00; // REFERENCE


        STM_EVAL_LEDOn(LED4);
        SPI_FLASH_SendByte(MSub);
        for(tmp=1;tmp<6;tmp++)
        {
                SPI_FLASH_SendByte(byData);
        }
       STM_EVAL_LEDOff(LED4);


        STM_EVAL_LEDOn(LED4);
        SPI_FLASH_SendByte(0x20);
        SPI_FLASH_SendByte(0x0f);
        STM_EVAL_LEDOff(LED4);       



这个配置是正常的,但是DRDY没反应

sasa_spirit 发表于 2011-12-19 10:50:46

回复【3楼】arielw
-----------------------------------------------------------------------

unsigned char L3gWr;
    unsigned char MSub;
    unsigned char byData;
        unsigned char tmp=0;

    L3gWr = L3G_IIC_ADDR << 1;
    L3gWr = L3gWr | WRITE_L3G;

    MSub =0x40|CTRL_REG2;

    byData = 0x00; // CTRL_REG1
    byData = 0x16; // CTRL_REG2
    byData = 0x08; // CTRL_REG3
    byData = 0x90; // CTRL_REG4.
    byData = 0x12; // CTRL_REG5
    byData = 0x00; // REFERENCE


        STM_EVAL_LEDOn(LED4);
        SPI_FLASH_SendByte(MSub);
        for(tmp=1;tmp<6;tmp++)
        {
                SPI_FLASH_SendByte(byData);
        }
       STM_EVAL_LEDOff(LED4);


        STM_EVAL_LEDOn(LED4);
        SPI_FLASH_SendByte(0x20);
        SPI_FLASH_SendByte(0x0f);
        STM_EVAL_LEDOff(LED4);       



这个配置是正常的,但是DRDY没反应

young-ive 发表于 2011-12-22 22:29:42

回复【楼主位】sasa_spirit
-----------------------------------------------------------------------

你好,你的输出数据波动大的问题解决了吗
byData = 0x00; // CTRL_REG1对这句表示不是很理解

young-ive 发表于 2011-12-22 22:30:39

回复【楼主位】sasa_spirit
-----------------------------------------------------------------------

我读的TEMP寄存器的值,在室温环境下,为0x30

arielw 发表于 2011-12-29 16:46:23

回复【7楼】young-ive
-----------------------------------------------------------------------

我的TEMP一直都是0xff...STATUS_REG也一直是0xff...

arielw 发表于 2011-12-29 16:48:50

回复【5楼】sasa_spirit
-----------------------------------------------------------------------

这个DRDY应该是有数据更新后就置1的,我的是不断置1

arielw 发表于 2011-12-29 16:52:54

回复【6楼】young-ive
-----------------------------------------------------------------------

应该是把“0000 0000”送到CTRG_REG1里边去

kdaiee 发表于 2011-12-30 19:35:31

楼主的数据静止的时候是正常的,陀螺不飘应该还没厂家做得出来

MrLCL 发表于 2012-1-7 23:22:54

我买的几个都是一样。不稳定,不动都有输出,一方面是器件本身的问题。一方面是你的截止频率没设置好,可以设置高点。也可以多次采集求平均数

szblue 发表于 2013-3-9 02:35:47

{:smile:}我现在做的读出来也是不动的的XYZ
页: [1]
查看完整版本: L3G4200D 问题讨论