社区导航

 

搜索
查看: 7409|回复: 26

[传感器MCU驱动例程] LIS2DH12(三轴加速度计)驱动例程ver2.3

  [复制链接]

86

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-10-10 18:01 | 显示全部楼层 |阅读模式
这里分享官方提供的LIS2DH12芯片的MCU驱动代码及例程 (版本ver2.3),供大家参考使用。

lis2dh12_ver_2.3.zip (14.6 KB, 下载次数: 823)


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-12-14 18:42 | 显示全部楼层
请问这个驱动在ST官网什么地方可以下载到,方便给个链接不?

点评

nmg
官网没有,这里是ST MEMS官方论坛,需要直接在这里下载即可。  详情 回复 发表于 2017-12-14 20:55


回复

使用道具 举报

3654

TA的帖子

202

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2017-12-14 20:55 | 显示全部楼层
wanpengming 发表于 2017-12-14 18:42
请问这个驱动在ST官网什么地方可以下载到,方便给个链接不?

官网没有,这里是ST MEMS官方论坛,需要直接在这里下载即可。


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-12-14 21:12 | 显示全部楼层
nmg 发表于 2017-12-14 20:55
官网没有,这里是ST MEMS官方论坛,需要直接在这里下载即可。

谢谢了,我在官网找了好久都没有找到这个版本。

点评

nmg
关注谍纸天眼这个论坛账号吧,ST相关官方资源都会通过这个账号发布。  详情 回复 发表于 2017-12-15 08:09


回复

使用道具 举报

3654

TA的帖子

202

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2017-12-15 08:09 | 显示全部楼层
wanpengming 发表于 2017-12-14 21:12
谢谢了,我在官网找了好久都没有找到这个版本。

关注谍纸天眼这个论坛账号吧,ST相关官方资源都会通过这个账号发布。


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-1-8 10:57 | 显示全部楼层
LIS2DH12-V2.3版本 reg22/26/30/34写操作接口,实际为读接口,请注意。。。

点评

多谢提醒,看了一下代码,除了22h,26h,30h,34h还有25h,38h也有同样的问题 我把对应的宏定义和函数都列出来了 #define LIS2DH12_REFERENCE 0x26 lis2dh12_filter_reference_set [attachimg]338923  详情 回复 发表于 2018-1-8 15:16

评分

1

查看全部评分



回复

使用道具 举报

6388

TA的帖子

10

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-1-8 15:16 | 显示全部楼层
wanpengming 发表于 2018-1-8 10:57
LIS2DH12-V2.3版本 reg22/26/30/34写操作接口,实际为读接口,请注意。。。

多谢提醒,看了一下代码,除了22h,26h,30h,34h还有25h,38h也有同样的问题
我把对应的宏定义和函数都列出来了

#define LIS2DH12_REFERENCE            0x26

lis2dh12_filter_reference_set
QQ图片20180108150526.png

#define LIS2DH12_INT1_CFG             0x30

lis2dh12_int1_gen_conf_set QQ图片20180108150603.png

#define LIS2DH12_INT2_CFG             0x34

lis2dh12_int2_gen_conf_set
QQ图片20180108150640.png

#define LIS2DH12_CTRL_REG3             0x22
lis2dh12_pin_int1_config_set
QQ图片20180108150710.png

#define LIS2DH12_CTRL_REG6            0x25
lis2dh12_pin_int2_config_set
QQ图片20180108150755.png

#define LIS2DH12_CLICK_CFG            0x38
lis2dh12_tap_conf_set
QQ图片20180108150827.png

点评

您好,请教个问题。 我发现驱动代码中,platform_write和platform_read里的DevAddress是设备地址设LIS2DH12_I2C_ADD_L 0x31,不对。手册里25页里Read 001100 0 1 00110001 (31h)Read;Write 001100 0 0 00110000 (  详情 回复 发表于 2018-5-16 17:33
虾扯蛋


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-1-23 10:41 | 显示全部楼层
thanks


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-4-19 13:52 | 显示全部楼层
请问楼主驱动使用正常吗?我使用数据一直没有变化


回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-5-16 17:33 | 显示全部楼层
littleshrimp 发表于 2018-1-8 15:16
多谢提醒,看了一下代码,除了22h,26h,30h,34h还有25h,38h也有同样的问题
我把对应的宏定义和函数都列出 ...

您好,请教个问题。 我发现驱动代码中,platform_write和platform_read里的DevAddress是设备地址设LIS2DH12_I2C_ADD_L   0x31,不对。手册里25页里Read 001100 0 1 00110001 (31h)Read;Write 001100 0 0 00110000 (30h)Write;所以这边认为platform_read的设备地址设为0x31,platform_Write的设备地址设为 0X30. 是否有遇到该问题

QQ图片20180516172857.png

点评

你的意思是说platform_write要使用0x30,platform_read要使用0x31这样区分吗? 这个例程是使用stm32操作的,platform_write函数里调用了HAL_I2C_Mem_Write 传递的设备地址是0x30 一搬情况下(我觉得是为了方便记忆  详情 回复 发表于 2018-5-16 18:34


回复

使用道具 举报

6388

TA的帖子

10

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-5-16 18:34 | 显示全部楼层
hometown 发表于 2018-5-16 17:33
您好,请教个问题。 我发现驱动代码中,platform_write和platform_read里的DevAddress是设备地址设LIS2DH ...

你的意思是说platform_write要使用0x30,platform_read要使用0x31这样区分吗?
这个例程是使用stm32操作的,platform_write函数里调用了HAL_I2C_Mem_Write
传递的设备地址是0x30
一搬情况下(我觉得是为了方便记忆),I2C设备地址通常用写地址表示(0x30)
有些单片机或者使用I/O模拟I2C的时候需要在对应的读函数里将设备ID&0x01
STM32的驱动库里已经将这个操作封装好了,所以可以直接使用写地址,它会自己处理
例如HAL_I2C_Mem_Read会调用I2C_RequestMemoryRead
I2C_RequestMemoryRead在发送地址时会根据读写做相应处理
  1.   /* Send slave address */
  2.   hi2c->Instance->DR = I2C_7BIT_ADD_WRITE(DevAddress);
复制代码

  1.   /* Send slave address */
  2.   hi2c->Instance->DR = I2C_7BIT_ADD_READ(DevAddress);
复制代码



I2C_7BIT_ADD_WRITE和I2C_7BIT_ADD_READ就是将设备地址的最后一位置零和写1的过程
  1. #define I2C_7BIT_ADD_WRITE(__ADDRESS__)                    ((uint8_t)((__ADDRESS__) & (~I2C_OAR1_ADD0)))
  2. #define I2C_7BIT_ADD_READ(__ADDRESS__)                     ((uint8_t)((__ADDRESS__) | I2C_OAR1_ADD0))
复制代码

点评

好的,谢谢,我这边明白了。目前IIC的读 0,写 1;刚刚查了STM32中HAL库底层代码,确实对读写做相应处理。  详情 回复 发表于 2018-5-17 11:00
虾扯蛋


回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-5-17 11:00 | 显示全部楼层
littleshrimp 发表于 2018-5-16 18:34
你的意思是说platform_write要使用0x30,platform_read要使用0x31这样区分吗?
这个例程是使用stm32操作 ...

  好的,谢谢,我这边明白了。目前IIC的读 0,写 1;刚刚查了STM32中HAL库底层代码,确实对读写做相应处理。


回复

使用道具 举报

226

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2018-5-17 20:54 | 显示全部楼层
这个驱动倒是可以用的,使用STM32F4很容易就移植了。但是STM32F1系列的就不行,后来查了一圈,发现是STM32F1系列的硬件I2C的BUG,总是困在总线忙的状态,看来F1系列以后只能用软件I2C了。
心率传感器:https://shop108071095.taobao.com


回复

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-7-7 11:55 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽


回复

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-7-7 12:04 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2018-7-18 15:24 | 显示全部楼层
littleshrimp 发表于 2018-5-16 18:34
你的意思是说platform_write要使用0x30,platform_read要使用0x31这样区分吗?
这个例程是使用stm32操作 ...

你好,关于你说原来代码里面的 22 26 那几个寄存器的写接口实际为读接口的问题,我们改动是不是只需要把读的接口换成写接口就可以了?

谢谢

点评

写寄存器时先读取,然后修改读取数据对应的位,再把修改后的写回去 你需要在它读取寄存器后添加修改和写回代码  详情 回复 发表于 2018-7-18 18:09


回复

使用道具 举报

6388

TA的帖子

10

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-7-18 18:09 来自手机 | 显示全部楼层
lfengxp 发表于 2018-7-18 15:24
你好,关于你说原来代码里面的 22 26 那几个寄存器的写接口实际为读接口的问题,我们改动是不是只需要把 ...

写寄存器时先读取,然后修改读取数据对应的位,再把修改后的写回去
你需要在它读取寄存器后添加修改和写回代码


回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-10-27 17:46 | 显示全部楼层
我用的是NRF的单片机,用这个驱动  IIC通讯
寄存器配置都正常了,但是为什么读取0x27 返回0

点评

检查一下通信,看看WHO AM I读取正确吗?  详情 回复 发表于 2018-10-28 15:56


回复

使用道具 举报

6388

TA的帖子

10

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-10-28 15:56 | 显示全部楼层
快乐程序员 发表于 2018-10-27 17:46
我用的是NRF的单片机,用这个驱动  IIC通讯
寄存器配置都正常了,但是为什么读取0x27 返回0

检查一下通信,看看WHO AM I读取正确吗?
虾扯蛋


回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-10-29 08:23 | 显示全部楼层
littleshrimp 发表于 2018-10-28 15:56
检查一下通信,看看WHO AM I读取正确吗?

who am i 正常的,其他需要配置的寄存器我也是先写再读,保证配置正确

点评

再不行试下这个代码  详情 回复 发表于 2018-10-29 11:12


回复

使用道具 举报

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

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-9-20 22:59 , Processed in 0.555435 second(s), 19 queries , Gzip On, MemCache On.

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