OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7932|回复: 7

小弟求教.........被陀螺仪玩了2天...求各位大哥帮忙

[复制链接]

22

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2012-11-3
在线时间
0 小时
发表于 2012-11-16 19:08:08 | 显示全部楼层 |阅读模式

#include "iostm8l152c6.h"

long int a[4];
long int index=0,index1=0;
void IO_init()
{
  CLK_PCKENR1 = 0X10; //开外部时钟门控
  PB_DDR |= MASK_PB_DDR_DDR5 | MASK_PB_DDR_DDR6;
  PB_CR1 |= MASK_PB_CR1_C15 | MASK_PB_CR1_C16;
  PB_CR2 |= MASK_PB_CR2_C25 | MASK_PB_CR2_C26;    
  //PB5(CLK),PB6(MOSI)设置为快速推挽输出,PB7(MISO)为悬浮输入
  PD_DDR |= MASK_PD_DDR_DDR7;
  PD_CR1 |= MASK_PD_CR1_C17;
  //PD(CS)为推挽输出 
}
void SPI1_MOSI_init()
{
  SPI1_CR2 |= MASK_SPI1_CR2_SSM;     //设置为软件控制SNN
  SPI1_CR2 |= MASK_SPI1_CR2_SSI;     //设置为主模式
  SPI1_CR1 |= MASK_SPI1_CR1_MSTR | MASK_SPI1_CR1_SPE;    //开启主模式,SPI1使能
}
void L3G4200D_write(unsigned int a, unsigned int b)
{
  while(!(SPI1_SR & 0X02));
  SPI1_DR = a;
  while(!(SPI1_SR & 0X02));
  SPI1_DR = b;
}
long int L3G4200D_read(unsigned int m, unsigned int n)
{
  while(!(SPI1_SR & 0X02));
  SPI1_DR = m | 0X80;                //read signal
  while(!(SPI1_SR & 0X02));
  SPI1_DR = n;
  while(!(SPI1_SR & 0X01));
  a[0] = SPI1_DR;
 // while(!(SPI1_SR & 0X01));
  a[0] |= SPI1_DR << 8;
  return (a[0]);
}
void L3G4200D_init()
{
  L3G4200D_write(0x20,0x4f);       //CTRL_REG1
  L3G4200D_write(0x21,0x20);
  L3G4200D_write(0x24,0x10);
}
int main( void )
{
  IO_init();
  PD_ODR &= ~MASK_PD_ODR_ODR7;          //CE=0;open
  SPI1_MOSI_init();
  L3G4200D_init();
  index = L3G4200D_read(0X0F,0X00);
  while(1)
  {
  }
}
求教............我错在哪里................被陀螺仪玩了2天吃不消了.......

我决定的事,决定放弃。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-11-16 19:13:19 | 显示全部楼层
回复【楼主位】KFC:
---------------------------------
你这是SPI模式的陀螺仪吗?

我用过L3G4200D IIC模式下的陀螺仪(CS置VCC)。
回复 支持 反对

使用道具 举报

22

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2012-11-3
在线时间
0 小时
 楼主| 发表于 2012-11-16 19:18:09 | 显示全部楼层
回复【2楼】lsj9383:
---------------------------------
我用SPI来驱,读不对呀..............求教什么情况    读个标识都会变.
我决定的事,决定放弃。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-11-16 20:33:06 | 显示全部楼层
你试试用IIC呢,把CS的引脚给设为高电平吧。
SPI的驱动对吗?
回复 支持 反对

使用道具 举报

22

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2012-11-3
在线时间
0 小时
 楼主| 发表于 2012-11-16 20:36:08 | 显示全部楼层
回复【4楼】lsj9383:
---------------------------------
SPI1应该是没有问题的说............
我决定的事,决定放弃。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-11-16 20:44:47 | 显示全部楼层
回复【5楼】KFC:
---------------------------------
呵呵 我也不是很清楚SPI来控制陀螺仪,强烈建议你用IIC,如果你用IIC的话,我的程序应该可以
回复 支持 反对

使用道具 举报

22

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2012-11-3
在线时间
0 小时
 楼主| 发表于 2012-11-16 20:48:29 | 显示全部楼层
回复【6楼】lsj9383:
---------------------------------
谢了 。。。。。我明天弄下I2C试试..........    3克油
我决定的事,决定放弃。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-11-16 21:39:42 | 显示全部楼层
回复【7楼】KFC:
---------------------------------
客气,我也没帮上什么~
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 22:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表