222|2

875

帖子

3

资源

纯净的硅(初级)

【CH579M-R1】+驱动LSM303DLH磁场传感器

本帖最后由 hujj 于 2020-10-16 18:57 编辑

    我自制的智能小车需要使用电子罗盘来定向,于是网购了一块LSM303DLH磁场传感器模块,试图用CH579M-R1开发板来驱动测试。模块的正面照片如下:

LSM303_04.jpg

    这是模块的反面:

LSM303_03.jpg

    

 这是三轴磁场+三轴加速度传感器模块,通过I2C协议与主设备通讯。模块上有8个焊盘,其中4个分别是GND、SDA、SCL和Vcc引脚,另外4个是运动传感器中断及控制引脚。我目前只使用了I2C通讯及电源引脚。

    商家提供的资料极其有限,其中范例代码因缺少相关库文件而无法通过编译,网上搜索也很少有完整的代码,因此只有在商家提供的范例基础上自己慢慢测试,为此花费了一周多的时间,也踩了许多坑,几次都准备放弃了,但又似乎看到一线希望。经过发帖求助,在大家的热心帮助下,最后终于驱动成功,下面就是我的调试过程。

    首先是I2C通讯,在我的测试环境中已经存在DS1307日历模块,这也是用I2C进行通讯的,我就在此基础上驱动LSM303DLH,可按照范例中对模块读写的代码,读出相关寄存器的却是固定的数值,无论如何转动模块均不变化(见下图)。

LSM303_00.jpg

    弄了几天都没有头绪,只好发帖求助,在littleshrimp版主的提示下,试着对比初始化前后寄存器的数值以及对空地址进行读操作,发现读取寄存器的数值全部是2,空地址返回的也是2,显然I2C通讯有问题。

    为此,我仔细查看到数据手册中对I2C通讯的时序要求,然后通过逻辑分析仪抓取的时序进行逐步调整。下图为手绘的相关时序要求:

LSM303_22.jpg

    经过反复调整代码,从逻辑分析仪抓取的时序图上到,已经比较接近标准值了,(见下图):

LSM303_05.jpg

    尽管如此,但模块并未响应I2C通讯,返回的数值全是零:

LSM303_21.jpg

    分析抓取的时序图也可以看出模块没有任何应答(见下图):

LSM303_06.jpg

    因为在我的测试环境中,I2C通讯是与LCD显示屏的DIN和CLK共用的,在驱动DS1307日历模块时没有出现过问题,能够各自正常驱动,所以测试LSM303DLH模块时也延用此方案。但测试了几天都不成功,我不得不考虑用单独的引脚来专门供I2C通讯用,为此还更换了多个引脚分别测试,结果均一样不成功。就在准备放弃测试,考虑另外再去购买模块时,忽然显示屏了出现了数据(见下图),我欣喜若狂。

LSM303_09.jpg

    就在准备进一步测试时,屏幕又全是零了,仍旧读不出数据。我反复测试,又折腾了两天,其间有时用手按压模块,偶尔也可读出数据,我猜想可能是杜邦线连接不好造成的,于是换上新的杜邦线,并用万用表检测,然而并不如愿,模块依旧是不能正常运行。我无计可施,又准备放弃时,w494143467版主建议我试试用电吹风加热一下模块,我将信将疑地照办,奇迹出现了,屏幕有数据显示了,证明I2C通讯正常了。就这样,遇到读不出数据时我就先呵几口气加热模块,不行再用电吹风。不知道厂家是否知道芯片的这个问题,按说我所处地区现在的气温不低,室内温度在20度以上,不应该会造成芯片工作不正常。

    I2C通讯正常后,紧接着是如何配置寄存器,商家提供的范例中仅配置了三个寄存器,按照这个配置,运动传感器的数据未读出来。要配置好寄存器,首先必须对芯片中寄存器有比较详细的了解,为此我将芯片寄存器的部分资料翻译成中文,整理到EXCEL表格中展示出来,下图为部分数据:

LSM303_23.jpg

    LSM303DLH芯片使用了两个I2C地址,其中磁场传感器I2C地址为0x3C,运动传感器I2C地址为0x30,它们的寄存器地址并未重叠,但为何要占用两个I2C地址就不得而知了。

    从上图中可以看到磁场传感器共使用有13个寄存器,地址分别为00H~0CH,其中可设置的寄存器只有前3个,其它都是只读的。按照范例中的代码,我只对00H和02H两个寄存器进行了设置。

    数据手册中运动传感器使用的寄存器共有22个,参见下图:

LSM303_24.jpg

    因为我没有启用中断功能,所以也只设置了其中的三个,范例中仅对地址为20H的模式寄存器进行了设置,但设置的数据为0x27,即数据速率为50Hz,我修改成0x2F(数据速率100Hz)后才读到运动传感器三轴数据。我增加设置了对数据的滤波功能和自我测试功能,自此,模块的配置基本完成。

LSM303_15.jpg

    模块基本正常工作之后,读取的数据波动非常大,此时还需要进行校准,这项工作很顺利,我只是将整个测试装置放在鼠标垫上改变了几次角度,数据就正常了,应该是校准完成了。由于天色已晚,拍摄效果差,明天再补上最后测试的动画。

    下面是我整理的资料EXCEL压缩文件和项目压缩文件:

LSM303DLHC.rar (402.42 KB, 下载次数: 0)

LSM303_08.jpg

回复

875

帖子

3

资源

纯净的硅(初级)

    这是补拍的测试照片:

LSM303_25.jpg

    这是磁场及运动传感器三轴数据:

LSM303_26.jpg

    这是拍摄的动画:

LSM303DLH3_2.gif


回复

1万

帖子

133

资源

管理员

个人签名

玩板看这里:

http://bbs.eeworld.com.cn/elecplay.html

EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!


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

关闭
站长推荐上一条 1/5 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表