SHT7X2X使用笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SHT7X2X使用笔记

温湿度传感器SHT7X和SHT2X系列的个人笔记: 官方资料下载: /download_sd.aspx 1:使用时硬件部分注意: 电源端需接100nF或以上退偶电容。 DATA、SCK需要接上拉电阻到其正电源端。 若走线过长,DATA与SCK之间最好加地线或电源线隔离。 MCU不能用带+5V输出的I/O口去直接驱动。需用不带内上拉电阻的集电极输出端或外加+3V转换隔离电路去连接SHT,否则出错或SHT。 上电后,需等待至少11ms的时间让SHT进入休眠状态(即等待状态)后再驱动SHT。 2:软件: SHT7X系列和SHT2X系列驱动方式或协议有区别,SHT7X并非标准IIC协议,具体看手册。 B:SCK时钟线相对其它芯片,频率过低。驱动时需手册上相应延时。 测量命令发出,给充足等待时间,实验时设置200ms,实验通过之后,多次小幅减小等待时间,直到稳定、高速。但测量频率不宜过高,随着测量频率增加,其电能损耗会使自身温度有相应上升,会影响测量精度。一般控制在3次的测量,具体测量上限频率按照手册和根据实际要求情况而定。 网站资料有C历程,但过于庞杂,特别是SHT2X系列,没必要每句都读到,大家可以挑着重点分析,主要是通讯过程细节实现和CRC校验。 3:关于CRC校验: 具体原理大家看相应文献,这里主要强调以下: A:SHTXX使用CRC8校验,多项式:P(x)=x^8+x^5+x^4+1=100110001=0x131;(手册中多项式不包括最末位1) B:校验原始数据:SHT7X系列需从开始的地址到命令符直至测量数据全部进行CR运算;而SHT2X系列只需对测量温湿度二进制数据进行CRC运算。 C:CRC添加到信息帧中顺序:SHT7X系列需高低位翻转后即MSB变为LSB```LSB变为MSB,加到信息帧末尾。而SHT2X系列不需高位翻转,直接加到信息帧末尾。 关于PROTEUS仿真:SHT7X系列CRC并未进行翻转,若翻转CRC校验错,跟实际使用不符笔者当初卡这老半天,最后才发现至于SHT2X仿真时有莫名错误,实际已完全正常,包括CRC,但仿真时仍有错误。希望有明了SHT2X仿真问题原因的,告知大家,由于工程有限,笔者不能继续仿真测试,此次工程过后再分析。(使用的版本是:PROTEUS7.10破解非正版,貌似此原因跟非正版没多大关系) 其余补充说明: 在KEIL编译时,例如若定义一个整形变量:unsigned int i,进行/求模运算时:例:22000/320,结果不正确,而改为22000.0/320.0时结果正确。恕笔者才疏学浅,学校时没好好听课,不知此具体原因。若定义菲整形如float i,怎么都正确。自己找资料看吧。在此对后面计算编写出错时,有类似现象作下参考。 以下附上SHT21完整程序:(使用MAX7219驱动数码管显示) #includereg52.h #includeintrins.h #includeabsacc.h #includefloat.h #includemath.h #define uint unsigned int #define uchar unsigned char uchar code table[]={ //共阴数码管:0、1、2、3、4、5、6、7、8、9、-、不显示; 0x7e,0x30,0x6d,0x79, 0x33,0x5b,0x5f,0x70, 0x7f,0x7b,0x01,0}; uint i,ii,yyi,crc1; uchar vv,crc0,imm,error=0; float TEMP=0,HUMI=0; sbit DIN=P2^0; //MAX7219接口定义,数据总线 sbit LOAD=P2^1; //MAX7219接口定义,片选位 sbit CLK=P2^2; //MAX7219接口定义,时钟信号端 sbit SCL_sht=P0^0; //SHT21接口定义,时钟信号端 sbit SDA_sht=P0^1; //SHT21接口定义,数据总线 sbit TES=P2^6; //正常一次测量完成信号,低电平有效,外接一LED sbit ERR=P2^7; //故障位定义,低电平有效,外接一LED; void MAX7219_init(); //MAX7219初始 void LEE(uint e); //MAX7219子函数,SPI方式 void MM(); //显示数据送往MAX7219 void EEi_sht(); //SHT2x主函数 void SHT2x(uchar yi); //SHT2x子函数 void write_sht(uc

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档