> For the complete documentation index, see [llms.txt](https://libooogo.gitbook.io/esplane/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://libooogo.gitbook.io/esplane/developer-guide/10esp32+-qi-ya-ji-ms5611-yi-zhi-yu-tiao-shi.md).

# 08 Barometer MS5611 Driver

## 一、开发笔记

1. MS5611-01BA是由压阻传感器和传感器接口组成的的集成电路,主要功能是把测得未得补偿模拟气压值经ADC转换成24位的数字值输出,同时也可以输出一个24位的数字温度值.
2. 高度测量最大分辨率10cm
3. MS5611支持SPI和I2C通信,可以通过上拉PS引脚( Protocol Select)选择I2C协议,下拉则选择SPI协议
4. MS5611-01BA的I2C地址为111011Cx,其中C为CSB引脚的补码值(取反).因为传感器内并没有微控制器,所有I2C的命令和SPI是相同的.
5. 气压到海拔的换算公式如下图:[点击转到图片来源](https://wenku.baidu.com/view/87130b0d168884868762d67a.html?from=search)

![气压到海拔计算公司](https://img-blog.csdnimg.cn/20190829195933708.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwNTE1NDYx,size_16,color_FFFFFF,t_70)

![气压与海拔关系](https://img-blog.csdnimg.cn/20190829200032457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwNTE1NDYx,size_16,color_FFFFFF,t_70)

## 二、初始化与工作流程

### 1. 从PROM读取出厂校准值

每个模块都在两种温度和两种压力下有其单独的出厂校验,6个系数必要补偿为过程变化和温度变化计算和存储到一个内部的128-bit存储器(PROM)中,这些值(划分成6个系数)用软件来读取并要通过程序将D1和D2中的值转换成标准气压、温度值.

| 变量 | 描述               | 变量类型    | Size | min | Max   | 典型    |
| -- | ---------------- | ------- | ---- | --- | ----- | ----- |
| C1 | 压力灵敏度 SENST1     | uint 16 | 16   | 0   | 65535 | 40127 |
| C2 | 压力抵消 OFFT1       | uint 16 | 16   | 0   | 65535 | 36924 |
| C3 | 温度压力灵敏度系数 TCS    | uint 16 | 16   | 0   | 65535 | 23317 |
| C4 | 温度系数的压力抵消 TCO    | uint 16 | 16   | 0   | 65535 | 23282 |
| C5 | 参考温度 TREF        | uint 16 | 16   | 0   | 65535 | 33464 |
| C6 | 温度系数的温度 TEMPSENS | uint 16 | 16   | 0   | 65535 | 28312 |

### 2. 启动温度AD转换,读取AD值

### 3. 启动气压AD转换,读取AD值

| 变量 | 描述    | 变量类型    | Size | min | Max      | 典型      |
| -- | ----- | ------- | ---- | --- | -------- | ------- |
| D1 | 数字压力值 | uint 32 | 24   | 0   | 16777216 | 9085466 |
| D2 | 数字温度值 | uint 32 | 24   | 0   | 16777216 | 8569150 |

### 4. 计算真实气压和温度值

### 5. 计算海拔值
