ms5611是同时支持I2C和SPI通信协议的气压计芯片。已经很普遍的被用在飞行器控制板上作为高度传感器。开发过stm32的朋友都知道它的硬件I2C是由bug的,一般使用的都是自己编写的软件I2C通信协议。但是其硬件SPI通信却是没有问题的。SPI通信一般会比I2C通信快点。下面先从硬件上说明MS5611在选择SPI的准备。
MS5611要选择使用SPI通信首先需要做的就是把芯片的PS引脚置低。参考数据手册如下:

根据其设计的PCB原理图如下:

下面是主要代码:
1.首先是芯片初始化。
void ms5611_init(void)
{
// ms5611_cs_init();
ms5611_ba_reset();
read_prom_data();
}
复位芯片可以从数据手册中找到参考,其实很简单就是向芯片发送数据0x1e,
void ms5611_ba_reset(void)
{
MS5611_CS_L;
SPI1_Read_Write_Byte(0X1E);
MS5611_CS_H;
Delay_us(2800);
}
初始化第二步是读取prom的数据,这里面有包含计算温度和气压的一些系数。
void read_prom_data(void)
{
u8 i;
for(i=0;i<8;i++)
data[i] = ms5611_read(0xa0+2*i);
for(i=0;i<8;i++)
printf(“data %d = %d\n”,i,data[i]);
}
下面就是读取数据和运算数据的循环了。
int32_t get_pressure(void)
{
int64_t D1,dT,OFF,SENS;
int64_t pressure;

MS5611_CS_L;
SPI1_Read_Write_Byte(0X58);
MS5611_CS_H;
Delay_us(1100);
dT = ms5611_read_adc(0x00);
dT -= (data[5]<<8);

// printf(“dT = %lld\n”,dT);
OFF = ((int64_t)data[2]<<16) + (((int64_t)data[4]*dT)>>7);
SENS = ((int64_t)data[1]<<15) + (((int64_t)data[3]*dT)>>8);

MS5611_CS_L;
SPI1_Read_Write_Byte(0x48);
MS5611_CS_H;

Delay_us(1100);
D1 = ms5611_read_adc(0x00);
pressure = (((D1*SENS)>>21)-OFF)>>15;

return pressure;
}
使用串口终端获得数据在MATLAB中做出曲线如下图:

与工程代码对应的硬件如下:

该飞控板移植了MDK的cleanflight代码,由于硬件跟cleanflight的并不完全一致,代码有所改动,需要购买板子的可给我留言

STM32F4 使用SPI读取气压计MS5611的数据并转化为大气压强相关推荐

  1. 四旋翼惯导融合之观测传感器滞后问题汇总与巴特沃斯低通滤波器设计(气压计MS5611、GPS模块M8N、超声波、PX4FLOW等)

    前文讲到APM的三阶互补方案,之前附的图是从学长博客里面抠的,感觉还不是很详细,于是自己就画了下,顺便重新理一下思路. 上图中下标为O的表示原始量(Origion),C表示矫正后的量(Correcti ...

  2. 基于ESP32的SPI读取MPU9250数据

    MPU9250集成了加速度计.陀螺仪.磁力计,能够比较精准的得到位姿信息,同时400KHZ的I2C和1MHZ的SPI让其更适用于对速度要求高的领域. 由于产品对速度的要求,我们选择采用速度更快的SPI ...

  3. 飞控开发--气压计MS5611

    ms5611简介: 官方给出的最大分辨率:10cm 工作电压: 1.8v ~ 3.6v 气压 AD 精度:24位 工作环境:-40 ~ +85°C,10 ~ 1200mbar(毫巴 = 百帕) 通讯接 ...

  4. 气压计MS5611编程操作流程

    文章更新版本 时间 备注 修订人 V0.1 发布于 2019-09-21 11:03:46 初始版本 libo 文章目录 一.开发笔记 二.初始化与工作流程 1. 从PROM读取出厂校准值 2. 启动 ...

  5. STM32F103C8T6读取气压计MS5611,I2C读取模式

    笔者最近想用气压计模块来测一下相对高度,使用的元器件如下图所示. 所使用的最小系统板 ** 所使用的气压计模块 其实读取还是蛮简单的,根据核心板引脚图选择I2c接口,然后借鉴正点原子的模拟i2c程序, ...

  6. STM32F4-SPI

    SPI 简介 SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口.是 Motorola首先在其 MC68HCXX 系列处理器上定义的.SPI ...

  7. STM32F4+Wi-Fi+EDP 向 OneNet 上传数据

    源地址:https://www.arduino.cn/thread-19000-1-1.html     利用STM32F4+WIFI+EDP向OneNet平台上传数据,虽然非常简单,但是在个人调试过 ...

  8. STM32F10X SPI操作flash MX25L64读写数据

    STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自己一 ...

  9. SPI 读取不同长度 寄存器_敏矽微电子Cortex-M0学习笔记10-SPI通信详解

    1.SPI简介 ME32F030支持扩展的 SPI (Serial Peripheral interface)接口,它可以支持标准的 SPI 操作,兼容 4 线的 SSI (SynchronousSe ...

最新文章

  1. Boost之timer库
  2. 怎么将计算机网络设置家庭,“windows无法在此计算机上设置家庭组”问题如何解决...
  3. elasticsearch 6.6 安装(CentOS 7.5) 修订
  4. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
  5. 九九乘法表-九九乘法表数据输出
  6. (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)
  7. Spring-整合JDBC-事务-远程方法调用RMI
  8. 如何更改 macOS Monterey 和 iPadOS 15 中的 Safari 选项卡外观?
  9. python建模全步骤
  10. fakeapp教程及下载
  11. 如何使用Redis Streams
  12. Hibernate框架基础——cascade属性
  13. 内外兼修 华润啤酒的“有为”哲学
  14. 在阿里云ECS服务器上使用NextCloud+Aria2+AriaNg部署下载站
  15. 用谷歌还是火狐?手机端还是另外选择其他浏览器吧
  16. GPS卫星的信号结构
  17. 刺激战场登录显示服务器异常,刺激战场登录网络异常
  18. 项目使用第三方插件发送短信-------建周短信SDK(Software Development Kit)
  19. 数学专业各学科视频网址
  20. 关于RGBFusion无法识别和控制技嘉显卡RGB灯的特殊案例和解决办法

热门文章

  1. 疫情防控大课观后感4
  2. 通达oa 2017 php,【通达OA】办公就用通达OA,通达OA官方网站_OA系统_协同办公
  3. 傅里叶分析和图像的傅里叶频谱解析
  4. 华硕主板氛围灯光设置成关机不亮的解决办法
  5. 【Unity学习笔记】UnrealToUnity教程:(网上购买的素材导入Unreal+插件转Unity)
  6. python正则将qq聊天记录转换为html
  7. Grafana-01 - 面板(Panel)设置数据点的时间间隔以及单位
  8. 哈希表(散列表)—Hash表解决地址冲突 C语言实现
  9. win10使用cmd修改ip的dns
  10. c#实现文件重命名操作