搜索
bottom↓
回复: 9

想求教一下关于hmc5883的问题!希望大神们能帮我解解惑

[复制链接]

出0入0汤圆

发表于 2015-6-19 22:44:09 | 显示全部楼层 |阅读模式
        遇到的问题:首先先将hmc5883的pdf那句话引进来   “数据输出 X 寄存器是两个 8 位寄存器,数据输出寄存器 A 和 B。这些寄存器储存从通道 X 所测量结果。数据
输出 X 寄存器 A 储存一个来自测量结果中的 MSB(高位数据),数据输出 X 寄存器 B 储存一个来自测量结果中
的 LSB(低位数据)。存储在这两个寄存器的值是一个 16 位值以二进制的补码形式存在,其范围是 0xF800
到 0x07FF。”     这是HMC5883数据输出X寄存器的介绍,
  1. #if 1

  2. void COMPASS_Read(uint8_t *BUF)
  3. {
  4.         u8 i;
  5.         IIC_Start();
  6.         IIC_Write8Bit(0x3C);           //¡¤¡é?¨ª¨¦¨¨¡À?¦Ì??¡¤+D¡äD?o?
  7.          IIC_TestAck();
  8.         IIC_Write8Bit(0x03);                   //¡¤¡é?¨ª¡ä?¡ä¡é¦Ì£¤?a¦Ì??¡¤¡ê?¡ä¨®0x3?a¨º?       
  9.         IIC_TestAck();
  10.           IIC_Start();                          //?e¨º?D?o?
  11.         IIC_Write8Bit(0x3D);         //¡¤¡é?¨ª¨¦¨¨¡À?¦Ì??¡¤+?¨¢D?o?
  12.          IIC_TestAck();
  13.        
  14.       for (i=0; i<6; i++)                      //¨¢?D??¨¢¨¨?6??¦Ì??¡¤¨ºy?Y¡ê?¡ä?¡ä¡é?DBUF
  15.     {
  16.         *BUF = IIC_Read8Bit();          //BUF[0]¡ä?¡ä¡é¨ºy?Y
  17.         BUF++;
  18.         if (i == 5)
  19.         {
  20.            IIC_NoAck();                //¡Á?o¨®¨°???¨ºy?YD¨¨¨°a??NOACK
  21.         }
  22.         else
  23.         {
  24.           IIC_Ack();                 //??¨®|ACK
  25.         }
  26.     }
  27.     IIC_Stop();                          //¨ª¡ê?1D?o?
  28. //   IIC_DelayMs(5);
  29.        
  30.        
  31. }

  32. #endif


  33. void MPU6050_CONVENT()
  34. {

  35.         uint8_t buf[6];
  36.        
  37.         COMPASS_Read(&buf);
  38.        
  39.         ACC.X=MPU6050_Read(ACCEL_XOUT_H)-ACC_OFFSET.X;
  40.         ACC.Y=MPU6050_Read(ACCEL_YOUT_H)-ACC_OFFSET.Y;
  41.         ACC.Z=MPU6050_Read(ACCEL_ZOUT_H)-ACC_OFFSET.Z;
  42.        
  43.         GYR_RATE.X=MPU6050_Read(GYRO_XOUT_H);
  44.         GYR_RATE.Y= MPU6050_Read(GYRO_YOUT_H);
  45.         GYR_RATE.Z=MPU6050_Read(GYRO_ZOUT_H);
  46.        
  47.         GYR.X= GYR_RATE.X-GYR_OFFSET.X;
  48.         GYR.Y= GYR_RATE.Y-GYR_OFFSET.Y;
  49.         GYR.Z= GYR_RATE.Z-GYR_OFFSET.Z;
  50.        
  51. //        COMPASS.X=(buf[0] << 8)| buf[1];
  52. //        COMPASS.Y=(buf[2] << 8)| buf[3];
  53. //        COMPASS.Z=(buf[4] << 8)| buf[5];
  54.        
  55.         COMPASS.X=buf[0];
  56.         COMPASS.Y=buf[2];
  57.         COMPASS.Z=buf[4];
  58.        
复制代码
我的程序是这样,根据那个pdf上所说,我的数据的高位buf[0]应该是0XF8----0X7F,但是我正常输出(磁力计旁边不放什么磁场类东西)的确实0xff或者0xfe,我原以为是补码的问题,0xff/0xfe是补码,源码是0x01/0x02,这到可以解释,但是我将我的风扇放旁边时就是0xf0,这个值又是正常的,所以有点纳闷,。低位输出没什么问题,自检输出的值也都是对的。所以,我有点没弄不懂了。

出0入0汤圆

 楼主| 发表于 2015-6-19 22:44:51 | 显示全部楼层
自己顶一个

出0入0汤圆

 楼主| 发表于 2015-6-19 22:47:11 | 显示全部楼层
存储在这两个寄存器的值是一个 16 位值以二进制的补码形式存在,其范围是 0xF800
到 0x07FF。   这句话的里其范围是不是指的原码的范围,如果指的是原码还好理解些。

出0入0汤圆

发表于 2015-6-19 22:53:30 | 显示全部楼层
你这个使用什么单片机做的 我之前用51做过

出0入0汤圆

发表于 2015-6-24 10:54:28 | 显示全部楼层

我司在开发新产品,九轴和角速度传感器有硬件,需要购买定制姿态结果的软件,只需要结果,不需要源码,请问哪位高手可以做的请联系我
主板上焊接了两组传感器, 每组分别为:
LIS35DE(三轴加速度传感器)
MPU9255(九轴传感器)
分别布局在板子的两端,见图(选用两组传感器的目的是为了计算角度更精确);

所有传感器和一个STM32 CPU(STM32F030F4,ST的,16K的Flash空间),以及系统主CPU(ARM8127)一起,挂在同一条I2C总线上,I2C总线已经拉出板外来,要求最后的姿态信息必须由这个STM32 CPU来计算得出后,实时地送给系统主CPU(ARM8127);

要求:
手持设备,慢速移动(类似手持粗笔写字的速度),通过STM32的姿态算法,得出本设备的实时姿态信息;

1.        实时的角度和角速度信息(必须)
2.        实时的位移方向信息(必须)
3.        实时的位移值信息(最好要求实现)

提供环境: 一套可以正常上电和供电的办卡, 开发者不需要任何的其他硬件

出0入0汤圆

 楼主| 发表于 2015-6-24 11:18:14 | 显示全部楼层
FORDREAM0 发表于 2015-6-19 22:53
你这个使用什么单片机做的 我之前用51做过

瑞萨的单片机

出0入0汤圆

 楼主| 发表于 2015-6-24 11:19:42 | 显示全部楼层
tanto 发表于 2015-6-24 10:54
我司在开发新产品,九轴和角速度传感器有硬件,需要购买定制姿态结果的软件,只需要结果,不需要源码,请 ...

可以赚钱钱啊

出0入0汤圆

发表于 2015-6-24 11:32:30 | 显示全部楼层

会做这个软件吗

出0入0汤圆

 楼主| 发表于 2015-6-24 11:35:46 | 显示全部楼层
tanto 发表于 2015-6-24 11:32
会做这个软件吗

单片机那个前两个要求会,第三个没啥法可以准确求位移,你要的软件是个神马

出0入0汤圆

发表于 2015-6-26 15:07:18 | 显示全部楼层
你用十进制来理解,是十进制的范围
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 12:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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