发新帖我要提问
12
返回列表
打印
[其他ST产品]

关于LIS3DH工程例程

[复制链接]
楼主: 某某平
手机看帖
扫描二维码
随时随地手机跟帖
21
soodesyt| | 2016-10-15 22:32 | 只看该作者 回帖奖励 |倒序浏览
这个怎么不用数字传感器呢。

使用特权

评论回复
22
soodesyt| | 2016-10-15 22:33 | 只看该作者
还是iic读取mpu9050吧

使用特权

评论回复
23
vivilzb1985| | 2016-10-16 10:49 | 只看该作者
这个是陀螺仪的么?弱弱问一句的

使用特权

评论回复
24
pmp| | 2016-10-16 17:17 | 只看该作者
F3需要配置ADC吗

使用特权

评论回复
25
pmp| | 2016-10-16 17:19 | 只看该作者
推荐AXL345试试

使用特权

评论回复
26
xiaoyaozt| | 2016-10-17 22:25 | 只看该作者
怎么不用mpu6050或者9050

使用特权

评论回复
27
xiaoyaozt| | 2016-10-17 22:27 | 只看该作者
STM32F3有个开发板上自带这个的。

使用特权

评论回复
28
某某平|  楼主 | 2016-10-18 19:14 | 只看该作者
xiaoyaozt 发表于 2016-10-17 22:27
STM32F3有个开发板上自带这个的。

能发给我看看么?1402462106@qq.com
十分的感谢!!!

使用特权

评论回复
29
拉克丝| | 2016-10-18 20:47 | 只看该作者
用mpu6050吧,不贵资料也多

使用特权

评论回复
30
typeof| | 2016-10-18 22:42 | 只看该作者
LIS3DH三轴加速度传感器?

使用特权

评论回复
31
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 很给力!
32
typeof| | 2016-10-18 22:46 | 只看该作者
试试这段代码能够实现吗?

使用特权

评论回复
33
dirtwillfly| | 2016-10-19 08:33 | 只看该作者
typeof 发表于 2016-10-18 22:43
LIS3DH为三轴向高精度数字式加速度传感器,可以通过IIC,SPI方式直接采集加速度数据。这里使用的是模拟SPI。 ...

给力

使用特权

评论回复
34
某某平|  楼主 | 2016-10-19 13:31 | 只看该作者
typeof 发表于 2016-10-18 22:43
LIS3DH为三轴向高精度数字式加速度传感器,可以通过IIC,SPI方式直接采集加速度数据。这里使用的是模拟SPI。 ...

先行谢过,马上来试试!!!

使用特权

评论回复
35
某某平|  楼主 | 2016-10-19 13:36 | 只看该作者
typeof 发表于 2016-10-18 22:46
试试这段代码能够实现吗?

我来试试,好像以前试过了这个了!再试一次

使用特权

评论回复
36
某某平|  楼主 | 2017-10-25 14:36 | 只看该作者
已经解决,现在回来结贴

使用特权

评论回复
37
dirtwillfly| | 2017-10-25 15:49 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则