5372|11

9799

帖子

24

TA的资源

版主

楼主
 

【NUCLEO-L4R5ZI移植LSM6DSL驱动】一、通信验证 [复制链接]

 
  本帖最后由 littleshrimp 于 2018-6-24 20:14 编辑

LSM6DSL支持SPI和I2C通信,评估板使用I2C接口,引脚顺序是SCL、SDA、VDD、INT1、INT2
正好接在Arduion的I2C上,需要从CN8的PIN7处引一个3.3V到CN7的PIN6上
官网找到能用STM32上的LSM6DSL的驱动en.x-cube-mems1、en.x-cube-mems-xt1_firmware和C-Driver-MEMS
不过里边都不支持NUCLEO-STM32LR45ZI的板子
直接在原有的项目里改需要保留原有的文件结构,用起来不是很方便
或者使用STM32CubeMX生成新的项目,再把LSM6DSL相关的件移植过来
不管使用哪种方法根据以往的经验做起来都不是一件容易的事
使用STM32CubeMX生成的项目更灵活一起,也方便以后修改,最后决定使用这种方法
先在STM32CubeMX里新建一个项目,选择NUCLEO-L4R5ZI板子
找到I2C1,在下接列表里选择I2C
将PB8、PB9的功能设置为I2C1_SCL和I2C1_SDA
PA5和PA6的功能设置成GPIO_EXTx用来接收LSM6DSL的中断
时钟改成MSI,120M(默认选择了HSE,而HSE并没有外部晶振)
将PA5和PA6引脚的别名改成LSM6DSL_INTx
将EXIT LINE[9:5] interrupts打钩
设置UART参数
点Generate Code生成项目并用对应的IDE打开项目,到这步已经完成单片机设置的大部分工作
为了验证配置是否正确和硬件是否正常可以在USER CODE BEGIN 2里加入下边代码
0x0f是who_am_i的地址
0xd4是LSM6DSL的器件ID(当SAD为LOW时)
  /* USER CODE BEGIN 2 */
  //读取who am i
  static uint8_t who_am_i;
  HAL_I2C_Mem_Read(&hi2c1,0xd4,0x0f,I2C_MEMADD_SIZE_8BIT,&who_am_i,1,0x100);
  HAL_UART_Transmit(&hlpuart1,&who_am_i,1,500);
  /* USER CODE END 2 */
打开串口助手,如果收到的数据为6A说明单片机和LSM6DSL通信成功

最新回复

谢谢,又有新东西可以学习了  详情 回复 发表于 2019-5-18 17:44
点赞 关注(1)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

1903

帖子

0

TA的资源

版主

沙发
 
路过看看了
 
 
 

回复

875

帖子

1

TA的资源

纯净的硅(高级)

板凳
 
有LSM6DSL的配置信息吗?我看看是不是我的配置出错了,加了低通滤波之后,Z轴的噪声变的大了,

点评

自己画的板吗? 试试这个 https://bbs.eeworld.com.cn/thread-649230-1-1.html  详情 回复 发表于 2018-7-3 15:54
 
 
 

回复

9799

帖子

24

TA的资源

版主

4
 
曹伟1993 发表于 2018-7-3 13:14
有LSM6DSL的配置信息吗?我看看是不是我的配置出错了,加了低通滤波之后,Z轴的噪声变的大了,

自己画的板吗?
试试这个
https://bbs.eeworld.com.cn/thread-649230-1-1.html
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

5
 
请问cubemx在写lsm6dsl程序时,是不是还需要安装东西

点评

cubemx如果能生成对应的MCU工程,可以直接在源代码里添加对应的I2C或SPI代码,操作LSM6DSL寄存器就可以读写,不需要安装任何东西 这种代码写起来相对麻烦,如果想简单可以在ST官网下载LSM6DSL的驱动,是把LSM6DSL寄  详情 回复 发表于 2018-11-5 17:27
 
 
 

回复

9799

帖子

24

TA的资源

版主

6
 
zfw152666 发表于 2018-11-5 15:20
请问cubemx在写lsm6dsl程序时,是不是还需要安装东西

cubemx如果能生成对应的MCU工程,可以直接在源代码里添加对应的I2C或SPI代码,操作LSM6DSL寄存器就可以读写,不需要安装任何东西
这种代码写起来相对麻烦,如果想简单可以在ST官网下载LSM6DSL的驱动,是把LSM6DSL寄存器操作都写好的,可以直接调用对应的函数
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

7
 
littleshrimp 发表于 2018-11-5 17:27
cubemx如果能生成对应的MCU工程,可以直接在源代码里添加对应的I2C或SPI代码,操作LSM6DSL寄存器就可以读 ...

大佬方便留个联系方式吗?我现在在调这个模块不是很会用,我现在是用的ST官网的列程,现在列程能跑起来,但是很多地方还看不明白,希望大佬能帮忙看看。 QQ1812669090  15752819024   微信z1812669090
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢,学习,感谢楼主
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

9
 
博主 ,0xd4不是LSM6DSL的地址加写位吗,不应该是0xd5吗

点评

stm32的i2c函数会自动处理读写位 写函数是d4读函数是d5 读的时候如果是d4它会自动将最后一位置1  详情 回复 发表于 2019-4-26 15:09
 
 
 

回复

9799

帖子

24

TA的资源

版主

10
 
duguyining 发表于 2019-4-26 14:46
博主 ,0xd4不是LSM6DSL的地址加写位吗,不应该是0xd5吗

stm32的i2c函数会自动处理读写位 写函数是d4读函数是d5 读的时候如果是d4它会自动将最后一位置1
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

11
 
明白了,但是我简单的测试了一下,串口没有打印出来任何的数据
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢,又有新东西可以学习了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表