LSM303D磁力计数据读取实验
#LSM303D初始化
// 详细的寄存器说明请查看数据手册
#define LSM303D_SLAVE_ADDRESS 0x1E
#define LSM303D_WHO_AM_I 0x0F
#define CTRL1 0x20
#define CTRL4 0x23
#define CTRL5 0x24
#define CTRL6 0x25
#define CTRL7 0x26
#define STATUS_A 0x27
#define INT_CTRL_M 0x12
// X
#define OUT_X_L_M 0x08
#define OUT_X_H_M 0x09
// Y
#define OUT_Y_L_M 0x0A
#define OUT_Y_H_M 0x0B
// Z
#define OUT_Z_L_M 0x0C
#define OUT_Z_H_M 0x0D
void LSM303D_Init()
{LSM303D_Write_Byte(LSM303D_SLAVE_ADDRESS, CTRL5, 0x14); // 在加计为power-down模式下时(默认情况下就是),频率100Hzdelay_us(5);LSM303D_Write_Byte(LSM303D_SLAVE_ADDRESS, CTRL4, 0x04); // data_ready 信号delay_us(5);LSM303D_Write_Byte(LSM303D_SLAVE_ADDRESS, CTRL6, 0x20); // 测量范围 ±4gaussdelay_us(5);LSM303D_Write_Byte(LSM303D_SLAVE_ADDRESS, CTRL7, 0x00); // 连续转换模式delay_us(5);LSM303D_Write_Byte(LSM303D_SLAVE_ADDRESS, INT_CTRL_M, 0xE1); // 中断信号为低电平delay_us(5);
}
#数据读取
// 读取LSM303D磁力计数据
// 注意这里读取的是原始数据,是数字量,还需要转化成真实的磁力计数据
buf[0] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_X_L_M);
buf[1] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_X_H_M);
buf[2] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_Y_L_M);
buf[3] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_Y_H_M);
buf[4] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_Z_L_M);
buf[5] = MPU_Read_Byte(LSM303D_SLAVE_ADDRESS, OUT_Z_H_M)
g_magraw[0] = ((u16)buf[1]<<8)|buf[0]; // 原始X轴数据
g_magraw[1] = ((u16)buf[3]<<8)|buf[2]; // 原始Y轴数据
g_magraw[2] = ((u16)buf[5]<<8)|buf[4]; // 原始Z轴数据// 数据转化 #SENSORS_Gause_PER_LSB_CFG (double)((2 * 8) / 65536.0)
// 这里磁力计量程设置的是±4guss,该磁力计AD是16位的,2^16=65536, 所以转化关系为: 2*4 / 65536g_mag[0] = (double)g_magraw[1] * SENSORS_Gause_PER_LSB_CFG; // 实际X轴数据
g_mag[1] = (double)g_magraw[0] * SENSORS_Gause_PER_LSB_CFG; // 实际Y轴数据
g_mag[2] = -(double)g_magraw[2] * SENSORS_Gause_PER_LSB_CFG; // 实际Z轴数据
LSM303D磁力计数据读取实验相关推荐
- 【超详细】磁力计数据读取--以IST8310为例
这里以iSentek公司产出的IST8310型号的磁力计为例,尺寸为 3.0 * 3.0 * 1.0mm,支持快速 I2C 通信,可达 400kHz,14 位磁场数据,测量范围可达1600uT(x,y ...
- LSM303D磁传感器数据读取
最近需要使用磁传感器,之前使用的是HMC5883,不过这次买的是LSM303D,记录一下.使用的单片机是STM32F407,模拟iic,正点原子的库. 数据手册参考的是:https://item.sz ...
- STM32F103完成对SD卡的数据读取(fat文件模式)
目录 一.关于SD卡 1.简介 2.SD卡的寄存器 3.SD卡读取与写入(SPI模式) 二.实验操作 1.仪器 2.代码 3.连线 4.烧录程序 5.串口调试助手初始化并写入文件 6.sd卡里hell ...
- 读取usb口数据_Mixly 第12课 模拟值读取实验串口使用
第12课 模拟值读取实验--串口使用 串行通信是在实现在PC机与微控制器进行交互的最简单的办法.以常见的Arduino UNO为例,面板上只有一组串行端口,即引脚 0(RX)和1(TX).电脑与Ar ...
- TF学习——TF数据读取:TensorFlow中数据读这三张图片的5个epoch +把读取的结果重新存到read 文件夹中
TF学习--TF数据读取:TensorFlow中数据读这三张图片的5个epoch +把读取的结果重新存到read 文件夹中 目录 实验展示 代码实现 实验展示 代码实现 1.如果设置shuffle为T ...
- at24c16如何划分出多个读写区_AVR学习笔记九、基于AT24C16的数据存储实验
Ema{@AVR 学习笔记九.基于 AT24C16 的数据存储实验 ------- 基于 LT_Mini_M16 9.1 用 I/O 口模拟 I2C 总线实现 AT24C16 的读写 9.1.1 .实 ...
- 博世传感器BMM150数据读取
博世传感器BMM150 博世磁力计BMM150数据读取 读取步骤 博世磁力计BMM150数据读取 最近一段时间一直在读取各种传感器数据,发现有些传感器使用较多网上也有很多参考例程,例如mpu6050, ...
- 数据可视化--实验五:高维非空间数据可视化
声明:本文CSDN作者原创投稿文章,未经许可禁止任何形式的转载,原文链接 文章目录 概要 实验过程 Pyecharts 实验结果 平行坐标系 room1-6房间人员时长饼图 概要 学院:计算机科学与技 ...
- 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作
本文主要利用STM32F103完成对SD卡的数据读取,介绍该实验的详细操作 一.题目要求 二.SD卡协议原理 1.SD卡简述 2.SD卡物理结构 3.SD卡寄存器 4.SD卡操作模式 5.SD卡初始化 ...
- STM32c8t6Flash地址空间的数据读取
STM32F103c8t6Flash地址空间的数据读取 一.项目任务 二.Flash的读写操作 1.创建STM32CubeMX工程文件 2.代码修改 3.连接STlink调试 (1)程序烧录 (2)调 ...
最新文章
- poj1625Censored!(AC自动机+dp)
- (C++)CSP202009-1 称检测点查询
- 网站建设要重视与客户之间的沟通
- Zabbix安装(十):监控windows进程
- 大龄程序员失业后,看他们是如何破局突围的? | 技术头条
- pytorch拼接与拆分
- Android中Activity的四大启动模式实验简述
- 完成一个Laravel项目的过程
- java 修改final_Java反射有效修改final属性值
- 拓端tecdat|python主题建模可视化LDA和T-SNE交互式可视化
- 修航片调卫片,不会PS的GISer不是一个好“美工“
- Neural Entity Linking综述【详细版】
- Mac电脑无线键盘失灵的解决方法
- 小米5之Root攻略
- 基于asp.net学员队量化管理评分系统的设计与实现#毕业设计
- 怕麻烦的人,过不了好生活,好真实
- Mac电脑怎么远程桌面连接?
- Intellij IDEA 2019 激活码(注册码)
- 华为交换机S5700故障系统文件丢失处理
- android webview 拦截响应,android WebView拦截请求详解