找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1810|回复: 2
打印 上一主题 下一主题
收起左侧

HMC5883源码QMC5883L源码和相关资料 STM32单片机Arduino

[复制链接]
跳转到指定楼层
楼主
HMC5883源码QMC5883L源码,基于STM32\Arduino

QMC5883 HMC5883 寄存器对比以及参考设置


单片机源程序如下:
  1. #include "HMC5883L.h"
  2. #include "I2C.h"
  3. #include "delay.h"
  4. void hmc_write_reg(u8 reg,u8 data)
  5. {
  6.         IIC_Start();
  7.         IIC_Send_Byte(WRITE_ADDRESS);
  8.         IIC_Wait_Ack();
  9.         IIC_Send_Byte(reg);
  10.         IIC_Wait_Ack();
  11.         IIC_Send_Byte(data);
  12.         IIC_Wait_Ack();
  13.         IIC_Stop();
  14.         //delay_ms(5);
  15. }

  16. u8 hmc_read_reg(u8 reg)
  17. {
  18.         u8 data;
  19.         IIC_Start();
  20.         IIC_Send_Byte(WRITE_ADDRESS);
  21.         IIC_Wait_Ack();
  22.         IIC_Send_Byte(reg);
  23.         IIC_Wait_Ack();
  24.         IIC_Stop();
  25.         IIC_Start();
  26.         IIC_Send_Byte(READ_ADDRESS);
  27.         IIC_Wait_Ack();
  28.         data=IIC_Read_Byte();
  29.         IIC_NAck();
  30.         IIC_Stop();
  31.         return data;
  32. }

  33. /*void hmc_read_XYZ(u16* data)
  34. {
  35.         u8 temp;
  36.         u8 i;
  37.     IIC_Start();
  38.         IIC_Send_Byte(WRITE_ADDRESS);
  39.         IIC_Wait_Ack();
  40.         IIC_Send_Byte(DATAX_M);
  41.         IIC_Wait_Ack();
  42.         IIC_Stop();
  43.         IIC_Start();
  44.         IIC_Send_Byte(READ_ADDRESS);
  45.         IIC_Wait_Ack();
  46.         for(i=0;i<3;i++)
  47.         {
  48.                 temp=IIC_Read_Byte();
  49.                 IIC_Ack();
  50.                 *data++=temp*256+IIC_Read_Byte();
  51.                 IIC_Ack();
  52.         }
  53.         IIC_Stop();
  54. }*/
  55. void hmc_read_XYZ(short int *data)
  56. {
  57.         u16 temp;
  58.         temp=hmc_read_reg(DATAX_M);
  59.         *data++=(temp<<8)+hmc_read_reg(DATAX_L);
  60.         temp=hmc_read_reg(DATAY_M);
  61.         *data++=(temp<<8)+hmc_read_reg(DATAY_L);
  62.         temp=hmc_read_reg(DATAZ_M);
  63.         *data++=(temp<<8)+hmc_read_reg(DATAZ_L);
  64. }

  65. void hmc_init(void)
  66. {
  67.         hmc_write_reg(CONFIGA,0x14);
  68.         hmc_write_reg(CONFIGB,0x80);
  69.         hmc_write_reg(MODE,0x00);
  70.         delay_ms(10);
  71. }
复制代码

所有资料51hei附件下载:
hmc5883电子罗盘.7z (3.44 MB, 下载次数: 52)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:978679 发表于 2023-2-16 17:21 | 只看该作者
这个能用吗?
回复

使用道具 举报

板凳
ID:978679 发表于 2023-2-25 07:06 | 只看该作者
这个QMC版本的能用HMC的有BUG
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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