飞思卡尔地磁传感器MAG3110调试笔记

首先我们要了解这么一个基本概念:地磁传感器必须和重力传感器一起工作,指南针才可以正常工作。

一.    调试要点:

1.    重力传感器的3轴有方向性,地磁传感器的数据输出也有方向性。我们必须根据硬件layout布板传感器的相对LCD视图的位置配置正确的位置,指南针才能指示正确的方向。

2.    Mag3110的驱动在linux底层注册时,其实是注册了两种Input设备,一种是地磁设备FreescaleMagnetometer,另一种是电子罗盘eCompass。后者会输出指南针等APP应用所需要的两种类型数据(magnetic 地磁和orientation方向)。

3.    飞思卡尔在系统启动时额外增加了一个名为magd的service,当系统启动时该service会检查系统中是否存在地磁传感器FreescaleMagnetometer及重力传感器以及eCompass这三种设备(前两者实际存在,有具体的硬件IC),如果不存在,则退出服务。

4.    使用地磁传感器,我们还需要在HAL 层的sensors.cpp里注册两种类型的传感器:magnetic 地磁和orientation方向。也就说上层APP可以看到有地磁传感器和方向传感器存在。

5.    Mag3110的HAL层代码MagSensor.cpp,负责读取的数据为eCompass设备的input数据(包括magnetic 地磁和orientation方向),所以在FreescaleMagnetometer被enable之后,我们用getevent命令可以看到底层有报数据,但如果magd这个service未正确运行,在HAL层中是不会去读取这个数据并显示出来的。

6.    正确运行中的magd,读取FreescaleMagnetometer及gsensor传来的两种数据,经过一系列运算(飞思卡尔自己的算法,用库封装)之后生成eCompass类型的input数据,该数据才会被Mag3110的HAL层正确读取识别,并最终在上层APP中显示出来(参见附图)。

7.    但是,但是…FreescaleMagnetometer及gsensor这两种数据在被magd 这个serivice处理后会生成magnetic(地磁)数据,但如果数据输入不正确(例如gsensor 或Magnetometer方向设置不正确、数据不准确等),则orientation(方向)这个数据并不会生成出来,则此时指南针仍然不能正常工作。

8.    由于各个地方的磁场强度不同,所以我们在每个地方初次使用指南针应用时,为保准确,请先使用指南针应用中的“校准”操作,否则会出现方向偏差的问题。具体在飞思卡尔的代码中,它会保存/data/misc/fsl_mag.txt这么一个文件来保留校准参数。而在调试时,我们在需要改变数据大小或方向配置时,也请务必记得首先删除这个文件并执行重新校准的操作。

二.    调试中的重要问题:

1.    HAL层代码中SensorBase(NULL, "FreescaleAccelerometer")指令,后一个参数为Input设备名,一定要以linux驱动层注册的设备名一致,否则会造成hal 层读取不到底层数据。

2.    我们在init.rc文件中除了可以对各种设备文件设置其读写权限之外,我们还可以在此启动一些可执行的文件(service服务)。例如我们增加了magd服务。

service magdservice /system/bin/magd

class main

user root

group root

onshot

需要进一步补充说明的是:

(1)    在系统system/bin中的文件为可执行文件;

(2)    如何将某个模块编译为可执行文件并放置在系统system/bin目录下呢?

LOCAL_MODULE_PATH := $(TARGET_OUT)/bin       #设置编译后生成的模块需要存放的位置;

LOCAL_MODULE_CLASS := EXECUTABLES        #指定编译类型为可执行文件

include $(BUILD_EXECUTABLE)              #引入编译成可执行文件的规则

3.    在调试过程中指南针方向不准确,原厂FAE让检查输入的地磁数据和重力数据是否正确。在打log 中发现magd获取到的重力数据与实际输出的重力传感器数据有很大差别,进一步分析发现重力传感器输出的数据类型为int类型,而magd程序中获取重力数据时用的是short Int类型,从而造成数据只获取到重力传感器的Input数据的低16位。

4.    同样是在调试过程中,由于没有删除/data/misc/fsl_mag.txt这个文件,造成系统每次启动时仍然使用这个旧的校准参数,从而造成数据不准确,甚至无orientation(方向)数据输出(在指南针APP界面看到的现象就是指针一直静止不动)。

附图:地磁传感器数据生成流程图

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 07:41:58

飞思卡尔地磁传感器MAG3110调试笔记的相关文章

博世传感器调试笔记(三)加速度及地磁传感器BMC156

一.    器件简介:1.    BMC 156是一款整合三轴地磁传感器与三轴(12bit)加速度传感器于一体的传感器,以BMC 150 电子罗盘模块为基础, 并与Bosch Sensortec 2x2平方毫米的加速度传感器引脚兼容.智能手机开发商可轻松将现有加速度传感器的设计升级为功能齐全的电子罗盘设计,或将电子罗盘方案简化为仅有加速度传感器的方案 2.    测量参数指标:Acceleration ranges ±2g/±4g/±8g/±16gMagnetic  ranges±1300μT

痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理. 本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集中痞子衡给大家详细介绍了EVK板载调试器用法,有了调试器在手,从此调试不用愁.从调试代码所在目标存储器类别上来分,调试一般分为在SRAM调试和在Flash调试.在SRAM调试实现比较简单,程序直接从JTAG/SWD口灌进RAM即可:在Flash调试,则相对复杂一点,因为首先需要有Flash下载算法,

飞思卡尔智能车电磁组分区算法介绍

写在之前的话: 1.目前我是一名在校学生,这也是我第一次写博客,不周之处,请多谅解: 2.此算法并非原创,借鉴自山东德州学院第八届白杨队(PS:个人看法,对于一些人把别人的开源东西改头换面一下就说是自己的原创行为十分鄙视): 3.对于此算法的理解和说明并非纸上谈兵,算法已经被我运用到了小车比赛中并取得好的成绩(具体就不多说了,比赛时车莫名其妙坏了,比赛前调试的速度绝对能进国赛,比较遗憾),总之这算法是我尝试过的最好的算法: 4.这一次所介绍的只是路径算法和一些知识普及,后面有时间会介绍其余部分算

独立、原创、总结、分享、行动——由海滨学生参观实验室及“飞思卡尔”杯智能车比赛想到的

题记:以下内容,都是老师在和学生交流过程中发现的现象,这里主要指出了存在的问题和可能的解决方法.其实同学们也有很多的优点,这里没有一一叙述.本着"有则改之,无则加勉"的态度分享自己的感受. 今天海滨学院环境专业大二学生,在曹瑞雪博士带领下来主校区参观,其中有一个点为我们海洋遥感与信息技术实验室. 接到曹老师电话(还有20分钟到达),立即把楼顶天线的门打开,同时走了一下参观的路线.在7楼恰好看到有同学在试车(参加智能车比赛的学生,7楼是科技园的一个智能车训练场地),简单的交流了几句,了解

飞思卡尔单片机PIT汇编编程(一)

飞思卡尔单片机(XS128系列)单片机汇编编程(一) 本人就是一个菜鸟,从菜鸟学习汇编编程:汇编也没想象中的复杂和难懂,细细品味还是挺有意思的.就当刷着玩吧,就学起了汇编(这一直是我的一大心病),慢慢学吧,就当了却了我的一个愿望.作为我的第一个汇编程序,仔细缕缕编写的过程.好了,废话不说了,开始正题. 手头上的资料:飞思卡尔单片机,调试器以及手册(欧了,就这三样),对了,下一个飞思卡尔单片机的汇编指令集哦. 开始如下工作: 首先熟悉中断机制,确定我们要在哪部分编程,以及编程之后起到的效果,然后才

ARM飞思卡尔I.MX6开发板I.MX6Q核心板 IMX6 cortex A9双网口

  飞思卡尔4核1.2GHz处理器.1GB DDR3内存.4GB EMMC Flash.-40~80℃温宽,通过CE认证.FCC认证,内存工作频率实测629Mhz,可长时间稳定运行. MY-I.MX6核心板,作为北京明远智睿科技有限公司推出的面向高端应用的核心板模块系列的主打产品, 基于飞思卡尔的ARM CORETX-A9,支持单核,双核简化,四核.用户无需更换底板即可满足不同的应用需求.MY-I.MX6包含了范围广泛的一系列令人兴奋地新功能,以确保客户以最小的投入和风险 开发出最先进.最强大的

痞子衡嵌入式:飞思卡尔i.MX RT系列微控制器启动篇(4)- Flashloader初体验(blhost)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Flashloader. 在上一篇文章 飞思卡尔i.MX RT系列微控制器启动篇(3)- Serial Downloader模式(sdphost, mfgtool) 里痞子衡为大家介绍了i.MXRT Boot的Serial Downloader模式,这种模式主要是用来引导启动Flashloader,那么Flashloader到底具有哪些功能?这是本篇文章痞子衡要为大家解惑的主题. 痞子衡在前面提过F

痞子衡嵌入式:飞思卡尔i.MX RT系列微控制器启动篇(9)- 从Parallel NOR启动

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 飞思卡尔i.MX RT系列微控制器启动篇(8)- 从Raw NAND启动 一经放出,深入广大网友喜爱,短时间内阅读量飙升,这让痞子衡深入鼓舞,所以趁热打铁继续把从Parallel NOR启动也顺便一起讲了,为什么说是顺便呢?因为Parallel NOR与Raw NAND都是并行接口,属于同一门派,且这两种外存设备在i.

飞思卡尔单片机P&E开发工具硬件及软件

原文链接: http://blog.sina.com.cn/s/blog_8ebff8d7010121tm.html 1.HC(S)08系列 开发机硬件:USB-ML-12 CYCLONE PRO USB-ML-UNIVERSAL USB-ML-UNIVERSAL FX 支持发软件:烧录软件 PROGHCS08 调试软件 ICDHCS08 软件包   PKGHCS08 2.HC(S)12(X)系列 开发机硬件:USB-ML-12 CYCLONE PRO USB-ML-UNIVERSAL USB-