电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

TMP75温度传感器(I2C接口)温度值为-1的故障分析

  • 资源ID:454835879       资源大小:484.80KB        全文页数:7页
  • 资源格式: DOCX        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

TMP75温度传感器(I2C接口)温度值为-1的故障分析

故障现象:平台软件在运行QNX系统的MLU板上每10秒读一次温度传感器,发现调用读温度的驱动接口函数时,偶尔读到的温度值为-1,但是接口函数的返回值为正常。读温度任务睡眠10秒通过sleep实现。该现象只在运行QNX的平台软件上可以复现,其它条件无法复现。故障分析:1在I2C总线驱动程序中添加打印信息,发现从CPU的I2C总线控制器中读回来的数据为OxFFFF(-1)。查看温度传感器芯片TMP75的数据手册,温度值由两个字节组成,根据配置精度,高8位表示整数部分(有符号),低8位中的高4位表示小数部分,低4位固定为0。因此可以断定OxFFFF属于总线上的异常数据。2阅读温度传感器的数据手册,发现有如下描述:TIMEOUTFUNCTIONThsTMP175andTMP75willresettheserialinterfaceifeither3CLorSDAareheldlowfor54ms(typ)betweenaSTARTandSTOPcondition.TheTMP17SandTMP75willreleasethebusifitispulledlowsndwillwaitkirastartcordition.Thstim&outfunotionrequiiir&s.acommunicationspeedofatleast1kHzforSCLoperatingfnequency.如果在一次数据传输过程中(传输start和传输stop之间)出现SCL或者SDA线被持续拉低超过54ms,那么TMP75将释放总线(将SDA置高电平)然后等待下一次传输start。也就是有可能总线上SCL或SDA出现了超过54ms的持续低电平,导致TMP75的TIMEOUTFUNCTION起作用,本应该传输正确数据的SDA线被置为常高,读到了0xFF。3为了验证TMP75的TIMEOUTFUNCTION功能,在I2C总线驱动程序中打桩,在寻址完成后读I2C总线控制器数据寄存器前主动增加延时,通过硬件测试程序观察读温度值是否正常。当延时小于50ms时,读温度正常,当延时增加到50ms以上时,可以稳定复现读到-1的温度值的故障现象。同时让平台软件将调用读温度接口函数前后的时间差打印出来,确认当读到-1时,时间间隔达到了70ms左右,而正常时为12ms左右。因此平台软件读到-1的温度值的故障现象与在I2C驱动程序中主动增加延时造成的故障现象应该一致。4通过示波器抓读温度时I2C总线上的数据传输过程:用例1:如图1所示,正常读温度时从寻址完成到从设备开始传输数据的延时大约为1.1ms左右。以下所有波形,上面为SDA数据,下面为SCL时钟。AcqCompleteMPos:2.20msTRIGGER类型信源斜率IIIII繼合IIIIIIIIitI边沿CH2上升止常触发方式LI.,.J.I*丄CHI2J0DVCH2flOVCH272241V26-May-1712:52<10H;图1正常时一次完整的数据传输以下图2到图5是对图1的传输过程的放大和解析:信源耦合IIIiIIIITRIGGER类型CH2上升正常边沿斜率lekJL.AcqCompleteMPos:14.00ju$Lj_I_I_i_I_I_LCH12.00VI_I_L_IJ_<|_I_I_l_CH22.00V直流M10.0JU5CH2Z2V26-May-1712:51:10Hz融发方式图2startcondition和寻址温度传感器0x90AcqCompleteMPos:103,6jusTRIGGER类型信源斜率耦合IIIIIIIICH2上升正常流电就亠弋fi賞肺旷亠M1O-OjusCH272,24V26-May-1712:51<10Hz触发方式图3寻址温度传感器寄存器0x0026-May-1712:55<10Hz图4向温度传感器0x90发起读命令IfekJL.AcqCompleteMPos:1.330msTFiIGGER类型Ym:Jm=:=:>wvww边沿信漁斜率上升"触发方式正常直流耦合I11丄B,丿IXi二、二丁.二匚由空诚工胞刘诫衲尬ti応t匝了26-May-1712:58<10Hz图5温度传感器传输的两个字节的温度值用例2:在寻址完成到读温度值之间打桩增加延时到40ms时,抓到的总线波形如下图:图6延时40ms时的I2C总线波形此时仍然能读到正确的温度值,如图7:N.DYDtlKflt:SDDmV1MOi:5DnWfZ.DVfdiv1IMQcODMIfn|-1.92V>|-1.02VgWidthHq«eQty:41.423&amAM.DU扣eivzauwias.owiirprFravlewSingleS«q10|ftSv-0Eicq«Rt:*OkAiJldMiy3S-n2Q1iT汨丁:细itt«AnMkiC(«»linto-*%Max工砂S6B|-3.K机01.4iCTlMlnu1fi0>.0wnV敌ifH.'dliO.DwnI.C&Mansi.flTMpgg”36H|3.681.0<?>Mlikdea.OtfnVdG0.naCO9indBO.ihn1.0CBMlnv-二?pz0.0GOMa±b7-D.C1图7延时40ms时可以读到正确的温度值0x3360用例3:在寻址完成到读温度值之间打桩增加延时到50ms时,抓到的总线波形如图8:1EQ.OmV3.6V-fio.amv3ir*gk5«inReqsHX.1«DkdHsfltBQCmVIM£3:3DWT12DVfdiv1MQ务刼WMMMMMM二薰6p.aflDcS|S9.33S?<ni3.5-aMB9flLaoDnncTSinPrflviflYF图8延时50ms时的I2C总线波形此时读到的温度值为-1,如图9,总线SDA上的数据出现异常,读到的数据为0xFFFF。-30DnOCTGiiiVAhiA1EQ.OVT1VD.QfnVMZdH抑协1酗3Oma/pi-1.92VPrflviewSir*ale-S«q-1.Q3VnRCHHL.4D.DhD.OV冒OflBBt:3Q«im¥IM£3:300«O2DWfdiv1UQ«SDDMi二6SEQ"】widthHhh毗;£1.瞿収日個弘图9延时50ms时读温度值异常0xFFFF5总结I2C主控制器在寻址完成并向从设备发送读命令,收到从设备返回的ACK后,不会主动发送SCL时钟信号,而是在驱动程序读主控制器的数据寄存器时触发SCL时钟信号,从设备在检测到SCL时钟后开始传输数据。因此在寻址完成和读数据寄存器之间增加延时会导致SCL的低电平时间延长,当延时时间超过50ms时触发温度传感器TMP75的TIMEOUT功能,TMP75释放SDA不再传输有效数据,转而等待下一次传输重新开始。在QNX和VXWORKS驱动程序中增加延时,都可以复现上述现象。平台软件只在QNX下复现问题,不能在VXW0RKS下复现问题的原因是QNX的I2C驱动程序在轮询ACK时使用了usleep延时,每1ms轮询一次,而VXWORKS下的I2C驱动程序使用CPU定时器sysUsDelay进行延时。使用usleep进行延时会让任务主动进入睡眠态,增加了延时的不确定性,加上平台软件的任务延时也使用sleep,增加了任务调度的不确定性,读温度值为-1时刚好是平台软件任务最繁忙的时刻,而读温度的任务优先级最低,导致了任务延时超过50ms,出现数据异常。解决方案:(1)修改QNX的I2C驱动程序,参考VXWORKS驱动程序,将usleep延时改为使用sysUsDelay进行延时。同时判断读到的温度值的第2个字节低4位是否为0(TMP75明确第2个字节的低4位固定为0),若不为0则数据非法,返回错误。(2)平台软件在读温度时,使用释放信号量的调度方式,在系统任务空闲时调度读温度任务。检查了EEPROM和RTC时钟芯片的数据手册,没有类似的TIMEOUTFUNCTION,同时也进行了延时操作的打桩测试,没有发现读数据错误的情况。

注意事项

本文(TMP75温度传感器(I2C接口)温度值为-1的故障分析)为本站会员(新**)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.