4336|8

39

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

为什么陀螺仪数据不变? [复制链接]

时钟我用的是HSI(36mhz),使用SPI读取L3GA20的值,在调试时,全速运行时感觉会卡,单步运行没问题,陀螺仪的数据不会变?

void Gyro_ReadAngRate (float* pfData)
{
  uint8_t tmpbuffer[6] ={0};
  int16_t RawData[3] = {0};
  uint8_t tmpreg = 0;
  float sensitivity = 0;
  int i =0;
  L3GD20_Read(&tmpreg,L3GD20_CTRL_REG4_ADDR,1);
  L3GD20_Read(tmpbuffer,L3GD20_OUT_X_L_ADDR,6);
  if(!(tmpreg & 0x40))
  {
  for(i=0; i<3; i++)
    {
      RawData=(int16_t)(((uint16_t)tmpbuffer[2*i+1] << 8) + tmpbuffer[2*i]);//ÏȶÁµÍλ
    }
  }
  else
  {
    for(i=0; i<3; i++)
    {
      RawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) + tmpbuffer[2*i+1]);//ÏȶÁ¸ßλ
    }
}
  
  switch(tmpreg & 0x30)
  {
  case 0x00:
    sensitivity=L3G_Sensitivity_250dps;  //L3G_Sensitivity_500dps=360/pi
    break;
  case 0x10:
  sensitivity=L3G_Sensitivity_500dps;  //L3G_Sensitivity_500dps=180/pi=57.1429
    break;
  case 0x20:
    sensitivity=L3G_Sensitivity_2000dps;//L3G_Sensitivity_500dps=1/4*180/pi
    break;
  }

for(i=0; i<3; i++)
  {
    pfData=(float)RawData/sensitivity; //¶Á³öÊý¾Ý³ýÒÔÁ¿³Ì
  }
}
各位大神看看是哪有问题,不甚感激!
此帖出自stm32/stm8论坛

最新回复

怎么解决的??   详情 回复 发表于 2015-8-7 17:25
点赞 关注
 

回复
举报

39

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
void gyro_Config(void)
{
        L3GD20_InitTypeDef   L3GD20_InitStructure;
        L3GD20_FilterConfigTypeDef   L3GD20_FilterConfigStructure;

        L3GD20_InitStructure.Power_Mode=L3GD20_MODE_ACTIVE;//L3GD20_MODE_POWERDOWN;
        L3GD20_InitStructure.Output_DataRate=L3GD20_OUTPUT_DATARATE_1;
        L3GD20_InitStructure.Axes_Enable=L3GD20_AXES_ENABLE;
        L3GD20_InitStructure.Band_Width=L3GD20_BANDWIDTH_4;
        L3GD20_InitStructure.BlockData_Update=L3GD20_BlockDataUpdate_Continous;//L3GD20_BlockDataUpdate_Single;
        L3GD20_InitStructure.Endianness=L3GD20_BLE_MSB;//ÏÈ´Ó¸ßλ·¢ËÍ
        L3GD20_InitStructure.Full_Scale=L3GD20_FULLSCALE_500;
       
        L3GD20_Init(&L3GD20_InitStructure);
       
        L3GD20_FilterConfigStructure.HighPassFilter_Mode_Selection=L3GD20_HPM_AUTORESET_INT;// L3GD20_HPM_NORMAL_MODE;
  L3GD20_FilterConfigStructure.HighPassFilter_CutOff_Frequency=L3GD20_HPFCF_0;
       
        L3GD20_FilterConfig(&L3GD20_FilterConfigStructure);
       
        //L3GD20_InterruptConfigStructure.Latch_Request=
        //L3GD20_InterruptConfigStructure.Interrupt_Axes=
        //L3GD20_InterruptConfigStructure.Interrupt_ActiveEdge=L3GD20_INT1INTERRUPT_HIGH_EDGE;
}
此帖出自stm32/stm8论坛
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这是主函数:
int main(void)
{

        RCC_configuration();
        //RCC_GetClocksFreq(&clock);
        gyro_Config();
  
  while (1)
  {
          //L3GD20_Read(l3gd20_id,L3GD20_ID,1);//¶ÁÈ¡ÍÓÂÝÒǵÄID
                //L3GD20_Read(tmp,L3GD20_CTRL_REG4_ADDR,1);
                //L3GD20_Read(tmpbuffer,L3GD20_OUT_X_L_ADDR,6);
    Gyro_ReadAngRate(GyroBuffer);
  }
}
此帖出自stm32/stm8论坛
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

4
 
我不知道是不是我没说清楚,为什么没人理我,这问题已经困扰我两天了,读出的数据是对的,但是全速运行时数据不会变。
此帖出自stm32/stm8论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

5
 
已解决忘了打勾了
此帖出自stm32/stm8论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

6
 

此帖出自stm32/stm8论坛
 
 
 

回复

5

帖子

1

TA的资源

一粒金砂(初级)

7
 
怎么解决的??
此帖出自stm32/stm8论坛

点评

在调试的时候,在view中将periodic windows update打勾,我忘打了,还以为时序有问题。  详情 回复 发表于 2015-8-7 18:22
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

8
 
在调试的时候,在view中将periodic windows update打勾,我忘打了,还以为时序有问题。
此帖出自stm32/stm8论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

9
 

在调试的时候,在view中将periodic windows update打勾,我忘打了,还以为时序有问题。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表