[其他ST产品] 关于LIS3DH工程例程

[复制链接]
6929|36
soodesyt 发表于 2016-10-15 22:32 | 显示全部楼层
这个怎么不用数字传感器呢。
soodesyt 发表于 2016-10-15 22:33 | 显示全部楼层
还是iic读取mpu9050吧
vivilzb1985 发表于 2016-10-16 10:49 | 显示全部楼层
这个是陀螺仪的么?弱弱问一句的
pmp 发表于 2016-10-16 17:17 | 显示全部楼层
F3需要配置ADC吗
pmp 发表于 2016-10-16 17:19 | 显示全部楼层
推荐AXL345试试
xiaoyaozt 发表于 2016-10-17 22:25 | 显示全部楼层
怎么不用mpu6050或者9050
xiaoyaozt 发表于 2016-10-17 22:27 | 显示全部楼层
STM32F3有个开发板上自带这个的。
 楼主| 某某平 发表于 2016-10-18 19:14 | 显示全部楼层
xiaoyaozt 发表于 2016-10-17 22:27
STM32F3有个开发板上自带这个的。

能发给我看看么?1402462106@qq.com
十分的感谢!!!
拉克丝 发表于 2016-10-18 20:47 | 显示全部楼层
用mpu6050吧,不贵资料也多
typeof 发表于 2016-10-18 22:42 | 显示全部楼层
LIS3DH三轴加速度传感器?
typeof 发表于 2016-10-18 22:43 | 显示全部楼层

LIS3DH为三轴向高精度数字式加速度传感器,可以通过IIC,SPI方式直接采集加速度数据。这里使用的是模拟SPI。

1.初始化配置

   采集数据之前需要对有关寄存器进行必要的配置:

     write_reg(0x23, 0x08, GPIOA, GPIO_Pin_3);  //0x48大端 0x08小端
     write_reg(0x20, 0x57, GPIOA, GPIO_Pin_3);     //100HZ采样,电源正常模式,三个轴采样使能

这里GPIOA, GPIO_Pin_3是片选CS脚

2.读写寄存器

   u8 read_reg(u8 register_name, GPIO_TypeDef* GPIOCS, uint16_t GPIO_Pin_CS, GPIO_TypeDef* GPIOSDO, uint16_t GPIO_Pin_SDO)
   {
u8 value,i;
u8 nMISO=0;
value=0;
register_name |= 0x80; // D7=1 -> read; D6=0 -> single byte
GPIOCS->BRR=GPIO_Pin_CS;//CSN_L;
delayus(8);
for (i=0;i<8;i++) // address
{
if (register_name & 0x80)
GPIOB->BSRR=GPIO_Pin_9;//MOSI_H;
else
GPIOB->BRR=GPIO_Pin_9;//MOSI_L;
register_name <<= 1;
clk();
}
for (i=0;i<8;i++) // read data
{
clk();
in_byte <<= 1;
nMISO = ((GPIOSDO->IDR & GPIO_Pin_SDO)!=0)?1:0;
value|= nMISO;
}
GPIOCS->BSRR=GPIO_Pin_CS;//CSN_H;
return value;
  }

  void write_reg(u8 register_name, u8 register_value, GPIO_TypeDef* GPIOCS, uint16_t GPIO_Pin_CS)
  {
u8 i;
register_name &= 0x3f;  // D7=0 -> write; D6=0 -> single byte
GPIOCS->BRR=GPIO_Pin_CS;//CSN_L;
delayus(8);
for (i=0;i<8;i++) // address
{
if (register_name & 0x80)
GPIOB->BSRR=GPIO_Pin_9;//MOSI_H;
else
GPIOB->BRR=GPIO_Pin_9;//MOSI_L;
register_name <<= 1;
clk();
}
for (i=0;i<8;i++) // write data
{
if (register_value & 0x80)
GPIOB->BSRR=GPIO_Pin_9;//MOSI_H;
else
GPIOB->BRR=GPIO_Pin_9;//MOSI_L;
register_value <<= 1;
clk();
}
GPIOCS->BSRR=GPIO_Pin_CS;//CSN_H;
   }

3.读加速度传感器数据

  LIS3DH有6个加速度数据寄存器


   

读取数据时可以挨个读取寄存器也可以根据SPI 时序连续读取。


评分

参与人数 1威望 +6 收起 理由
dirtwillfly + 6 很给力!

查看全部评分

typeof 发表于 2016-10-18 22:46 | 显示全部楼层
试试这段代码能够实现吗?
dirtwillfly 发表于 2016-10-19 08:33 | 显示全部楼层
typeof 发表于 2016-10-18 22:43
LIS3DH为三轴向高精度数字式加速度传感器,可以通过IIC,SPI方式直接采集加速度数据。这里使用的是模拟SPI。 ...

给力
 楼主| 某某平 发表于 2016-10-19 13:31 | 显示全部楼层
typeof 发表于 2016-10-18 22:43
LIS3DH为三轴向高精度数字式加速度传感器,可以通过IIC,SPI方式直接采集加速度数据。这里使用的是模拟SPI。 ...

先行谢过,马上来试试!!!
 楼主| 某某平 发表于 2016-10-19 13:36 | 显示全部楼层
typeof 发表于 2016-10-18 22:46
试试这段代码能够实现吗?

我来试试,好像以前试过了这个了!再试一次
 楼主| 某某平 发表于 2017-10-25 14:36 | 显示全部楼层
已经解决,现在回来结贴
dirtwillfly 发表于 2017-10-25 15:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部