ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:467.70KB ,
资源ID:8352181      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8352181.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MS561101BA03气压计高度计中文资料最终Word下载.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MS561101BA03气压计高度计中文资料最终Word下载.docx

1、VDD-0.3V+4.0V最大压力值Pmax6bar最大焊接温度Tmax最长40秒250电气特性工作电压1.8V3.0V3.6V工作温度T-40+25+85工作电流(1 sample per sec.)IDDOSR 40962048102451225612.5uA6.3uA3.2uA1.7uA0.9uAVDD对地电容VDD to GND100nF模数转换(ADC)输出字长(bit)24转换时间(ms)tc7.403.721.880.950.488.224.132.081.060.549.044.542.281.170.60气压值输出特征温度值输出特征数字输入(CSB,I2C,DIN,SCLK)

2、气压输出(I2C,DOUT)功能描述综合描述MS5611-01BA是由压阻传感器和传感器接口组成的的集成电路,主要功能是把测得未得补偿模拟气压值经ADC转换成24位的数字值输出,同时也可以输出一个24位的数字温度值。出厂校验每个模块都在两种温度和两种压力下有其单独的出厂校验,6系数必要补偿为过程变化和温度变化计算和存储到一个内部的128-bit存储器(PROM)中,这些值(划分成6个系数)用软件来读取并要通过程序将D1和D2中的值转换成标准气压、温度值。串行接口MS5611-01BA有两种类型的串行接口:SPI和I2C。通过调节PS引脚的电压来选择使用I2C或SPI通信接口:SPI模式外部微控

3、制器通过输入SCLK(串行时钟)和SDI(串行数据)来传输数据。在SPI模式下时钟极性和相位允许同时模式0和模式3。SDO(串行数据)引脚为传感器的响应输出。CSB(芯片选择)引脚用来控制芯片使能/禁用,所以,其他设备可以共用同一组SPI总线。在命令发送完毕或命令执行结束(例如结束的转换)时CSB引脚将被拉高。在SPI总线空闲模式下模块有较好的噪声性能和在ADC转换时与其他设备链接。I2C模式外部微控制器通过输入SCLK(串行时钟)和SDA(串行数据)来传输数据。传感器的响应在一根双向的I2C总线接口SDA线上。所以这个接口类型只使用2信号线路而不需要片选信号,这可以减少板空间。在I2C模式下

4、补充引脚CSB (芯片选择)代表了LSB的I2C地址。在I2C总线上可以使用两个传感器和两个不同的地址。CSB引脚应当连接到VDD或GND(不能悬空)。指令MS5611-01BA03只有5个基本命令:1.复位(Reset)2.读取存储器(128-bit PROM)3.D1转换4.D2转换5.读取ADC结果(24-bit气压/温度值)气压和温度计算(详见原文)1.开始计算结果最大值: ,2.从PROM读取出厂校准数据变量描述|方程推荐变量类型Size 值例子/典型bitminMaxC1压力灵敏度|SENST1uint 16166553540127C2压力抵消| OFFT136924C3温度压力灵

5、敏度系数| TCS23317C4温度系数的压力抵消| TCO23282C5参考温度|TREF33464C6温度系数的温度|TEMPSENS283123.读取数字气压和温度值D1数字压力值uint 329085466D2数字温度值85691504.计算温度dT实际和参考温度之间的差异int 3225-2366TEMP实际温度(-4085C 0.01C的分辨率)41-400085002007=20.07C5.计算温度补偿下的气压值OFF实际温度抵消int 64-5017SENS实际温度灵敏度-254036P温度补偿压力(101200mbar与0.01mbar分辨率)581000100009=100

6、0.09 mbar6.得到气压和温度值。二阶温度补偿对压力和温度达到最佳精度的流程图SPI接口SPI命令下面的表格描述中每个命令的大小是1字节(8位)。执行ADC read指令后将会返回一个24-bit的结果,执行PROM read指令后返回16-bit的结果。存储器(PROM)的地址在PROM read命令中的a2,a1和a0位。命令结构SPI复位时序转换时序存储器读取时序图参见原文。I2C接口I2C命令每个I2C通信消息都有开始和停止状态。MS5611-01BA的I2C地址为111011Cx,其中C为CSB引脚的补码值(取反)。因为传感器内并没有微控制器,所有I2C的命令和SPI是相同的。

7、I2C复位时序复位指令可以在任何时间发送。如果没有成功的上电复位,这可能是被屏蔽的SDA模块在应答状态。MS5611-01BA唯一的复位方式是发送几个SCLKs后跟一个复位指令或上电复位。来自主机 S = 开始命令 W = 写命令 A =应答来自从机 P = 停止命令 R =读命令 N = 无应答I2C复位指令存储器读取时序PROM读指令由两部分构成,第一部分使系统处于PROM读模式,第二部分从系统中读取数据。来自主机 S = 开始命令 W = 写命令 A =应答来自从机 P = 停止命令 R =读命令 N = 无应答I2C读存储器指令,地址=011(系数:3)I2C从芯片中应答通过向MS56

8、11-01BA发送指令可以进入转换模式。当命令写入到系统中,系统处于忙碌状态,直到转换完成。当转换完成后可以发送一个读指令,此时MS5611-01BA发回一个应答,24个SCLK时钟将所有bit位传送出来。每隔8bit就会等待一个应答信号I2C启动压力转换指令(OSR=4096, typ=D1)ADC读时序I2C从MS5611-01BA读取数据循环冗余检查(CRC)MS5611-01BA包含128-Bit的PROM存储器。存储器中有一个4bit的CRC数据检测位。下面详细描述了CRC-4代码的使用。典型应用电路SPI协议I2C协议引脚定义引脚名称类型12PSI通讯协议选择PS high(VDD

9、)I2CPS low(GND)SPI3GNDG接地4CSB片选(低电平有效),内部连接56SDOO串口数据输出7SDI/SDAI/IO串口数据输入/I2C数据8SCLK串口时钟*注:原文附录有一些典型测量值的特征曲线可参考。其中的一些关键点:ADC的测量值D1和D2是分别用来测气压和温度的,且基本成线性关系;在常温(20)或大于常温时,测量误差很小,而温度低于20时,气压和温度测量误差会明显增大;电源电压为3V时,气压和温度测量误差很小,而其它供电电压下误差会大幅度增加。51单片机测试代码/*MS5611模块*/*用途:MS5611模块IIC测试程序*/ /*串口波特率设置为9600*/#in

10、clude math.h /Keil library stdlib.hstdio.hINTRINS.H#define uchar unsigned char#define uint unsigned int #define ulong unsigned longsbit SCL=P01; /IIC时钟引脚定义sbit SDA=P02; /IIC数据引脚定义#define MS561101BA_SlaveAddress 0xee /定义器件在IIC总线中的从地址 #define MS561101BA_D1 0x40#define MS561101BA_D2 0x50#define MS56110

11、1BA_RST 0x1E/#define MS561101BA_D1_OSR_256 0x40/#define MS561101BA_D1_OSR_512 0x42/#define MS561101BA_D1_OSR_1024 0x44/#define MS561101BA_D1_OSR_2048 0x46#define MS561101BA_D1_OSR_4096 0x48/#define MS561101BA_D2_OSR_256 0x50/#define MS561101BA_D2_OSR_512 0x52/#define MS561101BA_D2_OSR_1024 0x54/#def

12、ine MS561101BA_D2_OSR_2048 0x56#define MS561101BA_D2_OSR_4096 0x58#define MS561101BA_ADC_RD 0x00#define MS561101BA_PROM_RD 0xA0#define MS561101BA_PROM_CRC 0xAE/ unsigned int Cal_C7; /用于存放PROM中的8组数据unsigned long D1_Pres,D2_Temp; / 存放压力和温度float dT,TEMP;double OFF_,SENS;float Pressure; /大气压float TEMP2,

13、Aux,OFF2,SENS2; /温度校验值ulong ex_Pressure; /串口读数转换值uchar exchange_num8;/-子函数声明-void delay(unsigned int k);void Delay5us();void Delay5ms();void I2C_Start();void I2C_Stop();void I2C_SendACK(bit ack);bit I2C_RecvACK();void I2C_SendByte(uchar dat);uchar I2C_RecvByte();void MS561101BA_RESET();void MS561101

14、BA_PROM_READ();ulong MS561101BA_DO_CONVERSION(uchar command);void MS561101BA_getTemperature(uchar OSR_Temp);void MS561101BA_getPressure(uchar OSR_Pres);void MS561101BA_Init();void init_uart();void SeriPushSend(uchar send_data);void Exchange_Number();/-/*/*/延时void delay(unsigned int k) unsigned int i

15、,j; for(i=0;ik;i+) for(j=0;j121;j+); /*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/void Delay5us() _nop_();_nop_();延时5毫秒(STC90C52RC12M)不同的工作环境,需要调整此函数void Delay5ms() uint n = 560; while (n-);/*/I2C起始信号void I2C_Start() SDA = 1; /拉高数据线 SCL = 1; /拉高时钟线 Delay5us(); /延时 SDA = 0; /

16、产生下降沿 SCL = 0; /拉低时钟线/I2C停止信号void I2C_Stop() /拉低数据线 /产生上升沿/I2C发送应答信号/入口参数:ack (0:ACK 1:NAK)void I2C_SendACK(bit ack) SDA = ack; /写应答信号/I2C接收应答信号bit I2C_RecvACK() CY = SDA; /读应答信号 return CY;/向I2C总线发送一个字节数据void I2C_SendByte(uchar dat) uchar i; for (i=0; i8; i+) /8位计数器 dat = 1; /移出数据的最高位 SDA = CY; /送数据

17、口 I2C_RecvACK();/从I2C总线接收一个字节数据uchar I2C_RecvByte() uchar dat = 0; /使能内部上拉,准备读取数据, dat |= SDA; /读数据 return dat;/=/*MS561101BA程序*void MS561101BA_RESET() I2C_Start(); I2C_SendByte(MS561101BA_SlaveAddress);/ I2C_RecvACK(); I2C_SendByte(MS561101BA_RST); I2C_Stop();void MS561101BA_PROM_READ() uchar d1,d2

18、,i;=6; I2C_Start(); I2C_SendByte(MS561101BA_SlaveAddress); I2C_SendByte(MS561101BA_PROM_RD+i*2); I2C_SendByte(MS561101BA_SlaveAddress+1); d1=I2C_RecvByte(); I2C_SendACK(0); d2=I2C_RecvByte(); I2C_SendACK(1); I2C_Stop(); Delay5ms(); Cal_Ci=(uint)d18)|d2;ulong MS561101BA_DO_CONVERSION(uchar command) ulong conversion=0; ulong conv1,conv2,conv3; I2C_SendByte(command); delay(100); I2C_SendByte(0); I2C_SendByte(MS561101BA_SlaveAddress+1); conv1=I2C_RecvByte(); I2C_Send

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2