MS5611-01BA03金属封装气压计组件性能描述高度分辨率组件,10cm转换时间低于1ms低功率,工作电流1uA(待机状态0.15uA)QFN封装尺寸:5.0×3.0×1.0mm3供电电压1.8V~3.6V集成数字气压传感器(24位ADC)测量/工作范围:10~1200mbar(毫巴=百帕),-40~+85℃I2C和SPI接口,传输速率可达20MHz无外接元件(内置振荡器)长期稳定性好描述MS5611-01BA气压传感器是由MEAS(瑞士)推出的一款SPI和I²C总线接口的新一代高分辨率气压传感器,分辨率可达到10cm。该传感器模块包括一个高线性度的压力传感器和一个超低功耗的24位Σ模数转换器(工厂校准系数)。MS5611提供了一个精确的24位数字压力值和温度值以及不同的操作模式,可以提高转换速度并优化电流消耗。高分辨率的温度输出无须额外传感器可实现高度计/温度计功能。可以与几乎任何微控制器连接。通信协议简单,无需在设备内部寄存器编程。MS5611压力传感器只有5.0毫米×3.0毫米×1.0毫米的小尺寸可以集成在移动设备中。这款传感器采用领先的MEMS技术并得益于MEAS(瑞士)十余年的成熟设计以及大批量制造经验,保证产品具有高稳定性以及非常低的压力信号滞后。内部结构及技术数据移动高度计/气压计系统自行车电脑气压表医疗警报高度计室内导航原理框图技术数据性能参数最大工作范围参数符号条件最小典型最大电源电压VDD-0.3V+4.0V最大压力值Pmax6bar最大焊接温度Tmax最长40秒250℃电气特性参数符号条件最小典型最大工作电压VDD1.8V3.0V3.6V工作温度T-40℃+25℃+85℃工作电流(1samplepersec.)IDDOSR40962048102451212.5uA6.3uA3.2uA1.7uA2560.9uAVDD对地电容VDDtoGND100nF模数转换(ADC)参数符号条件最小典型最大输出字长(bit)24转换时间(ms)tcOSR4096204810245122567.403.721.880.950.488.224.132.081.060.549.044.542.281.170.60气压值输出特征温度值输出特征数字输入(CSB,I2C,DIN,SCLK)气压输出(I2C,DOUT)功能描述综合描述MS5611-01BA是由压阻传感器和传感器接口组成的的集成电路,主要功能是把测得未得补偿模拟气压值经ADC转换成24位的数字值输出,同时也可以输出一个24位的数字温度值。出厂校验每个模块都在两种温度和两种压力下有其单独的出厂校验,6系数必要补偿为过程变化和温度变化计算和存储到一个内部的128-bit存储器(PROM)中,这些值(划分成6个系数)用软件来读取并要通过程序将D1和D2中的值转换成标准气压、温度值。串行接口MS5611-01BA有两种类型的串行接口:SPI和I2C。通过调节PS引脚的电压来选择使用I2C或SPI通信接口:SPI模式外部微控制器通过输入SCLK(串行时钟)和SDI(串行数据)来传输数据。在SPI模式下时钟极性和相位允许同时模式0和模式3。SDO(串行数据)引脚为传感器的响应输出。CSB(芯片选择)引脚用来控制芯片使能/禁用,所以,其他设备可以共用同一组SPI总线。在命令发送完毕或命令执行结束(例如结束的转换)时CSB引脚将被拉高。在SPI总线空闲模式下模块有较好的噪声性能和在ADC转换时与其他设备链接。I2C模式外部微控制器通过输入SCLK(串行时钟)和SDA(串行数据)来传输数据。传感器的响应在一根双向的I2C总线接口SDA线上。所以这个接口类型只使用2信号线路而不需要片选信号,这可以减少板空间。在I2C模式下补充引脚CSB(芯片选择)代表了LSB的I2C地址。在I2C总线上可以使用两个传感器和两个不同的地址。CSB引脚应当连接到VDD或GND(不能悬空)。指令MS5611-01BA03只有5个基本命令:1.复位(Reset)2.读取存储器(128-bitPROM)3.D1转换4.D2转换5.读取ADC结果(24-bit气压/温度值)气压和温度计算(详见原文)1.开始计算结果最大值:10MINPmbar,1200MAXPmbar,40MINTC,85MAXTC,20REFTC2.从PROM读取出厂校准数据变量描述|方程推荐变量类型Size值例子/典型bitminMaxC1压力灵敏度|SENST1uint161606553540127C2压力抵消|OFFT1uint161606553536924C3温度压力灵敏度系数|TCSuint161606553523317C4温度系数的压力抵消|TCOuint161606553523282C5参考温度|TREFuint161606553533464C6温度系数的温度|TEMPSENSuint1616065535283123.读取数字气压和温度值D1数字压力值uint32240167772169085466D2数字温度值uint322401677721685691504.计算温度dT实际和参考温度之间的差异8225*2REFdTDTDCint3225-16776960167772162366TEMP实际温度(-40…85°C0.01°C的分辨率)2320*2000*6/2TEMPCdTTEMPSENSdTCint3241-400085002007=20.07°C5.计算温度补偿下的气压值OFF实际温度抵消1167*2*2(4*)/2TOFFOFFTCOdTCCdTint6441-8589672450128847052802420281617SENS实际温度灵敏度1158*1*2(3*)/2TSENSSENSTCSdTcCdTint6441-429483622564423526401315097036P温度补偿压力(10…1200mbar与0.01mbar分辨率)21151*(1*/2)/2PDSENSOFFDSENSOFFint32581000100009=1000.09mbar6.得到气压和温度值。二阶温度补偿TEMP20C低温非常低的温度TEMP-15C高温计算压力和温度23121222/225(2000)/225(2000)/2TdTOFFTEMPSENSTEMP202020TOFFSENS221227(1500)211(1500)/2OFFOFFTEMPSENSSENSTEMP222TEMPTEMPTOFFOFFOFFSENSSENESENS是否是否对压力和温度达到最佳精度的流程图SPI接口SPI命令下面的表格描述中每个命令的大小是1字节(8位)。执行ADCread指令后将会返回一个24-bit的结果,执行PROMread指令后返回16-bit的结果。存储器(PROM)的地址在PROMread命令中的a2,a1和a0位。命令结构SPI复位时序转换时序存储器读取时序图参见原文。I2C接口I2C命令每个I2C通信消息都有开始和停止状态。MS5611-01BA的I2C地址为111011Cx,其中C为CSB引脚的补码值(取反)。因为传感器内并没有微控制器,所有I2C的命令和SPI是相同的。I2C复位时序复位指令可以在任何时间发送。如果没有成功的上电复位,这可能是被屏蔽的SDA模块在应答状态。MS5611-01BA唯一的复位方式是发送几个SCLKs后跟一个复位指令或上电复位。来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答I2C复位指令存储器读取时序PROM读指令由两部分构成,第一部分使系统处于PROM读模式,第二部分从系统中读取数据。来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答I2C读存储器指令,地址=011(系数:3)来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答I2C从芯片中应答转换时序通过向MS5611-01BA发送指令可以进入转换模式。当命令写入到系统中,系统处于忙碌状态,直到转换完成。当转换完成后可以发送一个读指令,此时MS5611-01BA发回一个应答,24个SCLK时钟将所有bit位传送出来。每隔8bit就会等待一个应答信号来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答I2C启动压力转换指令(OSR=4096,typ=D1)来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答ADC读时序来自主机S=开始命令W=写命令A=应答来自从机P=停止命令R=读命令N=无应答I2C从MS5611-01BA读取数据循环冗余检查(CRC)MS5611-01BA包含128-Bit的PROM存储器。存储器中有一个4bit的CRC数据检测位。下面详细描述了CRC-4代码的使用。典型应用电路SPI协议I2C协议引脚定义引脚名称类型描述1VDDP电源电压2PSI通讯协议选择PShigh(VDD)→I2CPSlow(GND)→SPI3GNDG接地4CSBI片选(低电平有效),内部连接56SDOO串口数据输出7SDI/SDAI/IO串口数据输入/I2C数据8SCLKI串口时钟***注:原文附录有一些典型测量值的特征曲线可参考。其中的一些关键点:ADC的测量值D1和D2是分别用来测气压和温度的,且基本成线性关系;在常温(20℃)或大于常温时,测量误差很小,而温度低于20℃时,气压和温度测量误差会明显增大;电源电压为3V时,气压和温度测量误差很小,而其它供电电压下误差会大幅度增加。51单片机测试代码/**********MS5611模块*************//**用途:MS5611模块IIC测试程序****//*****串口波特率设置为9600********/#includeREG52.H#includemath.h//Keillibrary#includestdlib.h//Keillibrary#includestdio.h//Keillibrary#includeINTRINS.H//Keillibrary#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitSCL=P0^1;//IIC时钟引脚定义sbitSDA=P0^2;//IIC数据引脚定义#defineMS561101BA_SlaveAddress0xee//定义器件在IIC总线中的从地址#defineMS561101BA_D10x40#defineMS561101BA_D20x50#defineMS561101BA_RST0x1E//#defineMS561101BA_D1_OSR_2560x40//#defineMS561101BA_D1_OSR_5120x42//#defineMS561101BA_D1_OSR_10240x44//#defineMS561101BA_D1_OSR_20480x46#defineMS561101BA_D1_OSR_40960x48//#defineMS561101BA_D2_OSR_2560x50//#defineMS561101BA_D2_OSR_5120x52//#defineMS561101BA_D2_OSR_10240x54//#defineMS561101BA_D2_OSR_20480x56#defineMS561101BA_D2_OSR_40960x58#defineMS561101BA_ADC_RD0x00#defineMS561101BA_PROM_RD0xA0#defineMS561101BA_PROM_CRC0xAE///////////////////////////////////////////////////////////////////////