SH3001六轴 学习1
学习步骤
1.SH3001六轴加速度传感器
2.
气压计测量高度;
磁力计: 无人机通常使用磁力计来确定航向,结合加速度计和陀螺仪的数据,实现精确的飞行控制和导航
六轴电信号经过:放大 解调 滤波 得到ADC值输出到寄存器里面
SH3001扩展有从I2C接口,可以通过从I2C接口控制磁力计ST480MC
3.SH3001引脚
4.电源模式设置,厂家只给我们提供了函数接口,没有提供寄存器说明,所以我们只要操作接口就行
SH3001寄存器
一:面对模式芯片考虑第一点:
1.时序
2,器件固定值读取(例如器件ID,通过I2C读取)XXXX_DATA_
加速度计和陀螺仪的x,y,z的都由2个寄存器存储,低八位放在XXXX_XDATA_L里面,高八位放在XXXX_XDATA_H里面 所以加起来是16位,最高位为+-,所以将电信号转换为AD值是-32677~32677
芯片默认ID 0x61
温度传感器使能第七位, 4:5位为11设置为63HZ
室温
SENB:直接连接VCC,就是直接选择I2C协议,不选择SPI协议
3,要使数据更加精确,去零飘(芯片厂家做了),通过厂家提供的函数接口,读取补偿系数,就可以得到相对精确的值,
4.设备地址 = 固定位+硬件选择位(这里连接地为0) + 数据传输方向位
0b 0110110(0x36)
写0 读1
写操作地址:01101100 0x6C 读操作地址:01101101 0X6D
5.IIC单字节写入,IIC多字节写入
1.读取N字节函数
读取最后一个数发送通过三目运算符发送0,
2.写N字节函数
6.SH3001驱动步骤
1.调用iic_init()进行IIC接口初始化,myiic.c里面函数接口里面实现的
7,器件原理图
可以在MSDA,MSCL引出连接从设备 接磁力计ST480MC,组成9轴
SD0连接地,决定器件地址
8.源码解读
第二个
器件地址
误差补偿系数结构体
带有补偿系数的去读取六轴数据 compen
误差补偿结构体和输出临时数据的临时变量
与PPT上不同的是会判断从机是否有应答信号,从机没有信号,就主机发送stop,返回FALSE;
SH3001初始化 读取器件ID,读取器件地址对应的寄存器,读取出错返回错误
重置内部模块 官方写好的接口,可以直接调用
读取对应版本 配置寄存器对应相对应的值
驱动启动, ADC的复位 CVA的复位都是厂家写好的,直接调用函数接口就好了
重置内部接口后,在初始化函数中设置
ACC加速度配置, GYRO陀螺仪配置, 温度配置
选择电源模式,官方只提供了接口
读取补偿系数,官方也给了接口
读取温度: 读取室温,读取实时温度,做运算,返回温度值
读取SH3001陀螺仪和加速度的原始数据函数 AD原始数据,没有做补偿
做过补偿的读取六轴数据的函数 官方自己做的,官方给的接口
加速度补偿
陀螺仪补偿
main函数
sh3001_init()用lcd检测存在吗
补偿后的数据显示
补偿后的接口,这个得到的值是AD值,就是实际值
芯片X轴和Y轴
main.c中
匿名飞控上位机协议
用到STATUS和SENSOR这两个帧