微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 在z-stack中添加ds18b20采集温度,始终显示为127.

在z-stack中添加ds18b20采集温度,始终显示为127.

时间:10-02 整理:3721RD 点击:

首先谢谢各位大牛指点。
我实在ZStack-CC2530-2.2.2-1.3.0中的genericApp工程中添加了ds18b20程序进行测温。其中只进行ds18b20测温或者只进行终端和协调器通信两项分离的任务都是可以实现的,但是将测温结合通信发送温度数据的时候,每次都是测得的数据都是0x7F即127,调试过程中发现每次进入测温函数过后未执行完就跳出。我利用的是z-stack中的延时函数
void Ds18b20Delay(unsigned int k)
{
  MicroWait(k);
}
我尝试过增加延时,以及增加发送周期,增加事件重置的时间溢出值,但是都未能解决。甚是苦恼!
已经调了几天了,由于个人知识不及,所以才这里求教各位大牛,希望能得到及时雨。

程序代码见附件。

谢谢!

用示波器查看CC2530与DS18B20通信的波形,观察延时是否与DS18B20数据手册上要求的一致。

所有软件编写的时延都要用示波器观察才能知道在实际中是否准确。

你所指的只进行ds18b20测温或者只进行终端和协调器通信两项分离的任务中,进行ds18b20测温是在协议栈中进行的吗?

两项分离的程序是可以完成的。但是就是将ds18b20的程序添加进协议栈中进行测温发送数据,就出现不能正常测温了。一直显示的数据值为127.谢谢!我接下来尝试修改一下时序问题!

分离可以正常运行说明时序没有问题,那么主要的问题就出现在延时函数在运行时所产生的时延不正确,用示波器观察可以一目了然,与DS18B20数据手册上的时序图对照一下就知道延时是否达到要求了,一般的DS18B20结果异常就是因为延时不正确所导致的。

主要是没有示波器现在,我尝试计算进行修改时序!希望可以!谢谢。

由于我没有修改过时序的经验,您说的根据数据手册修改,是修改初始化、读时序、写时序几个相应的延时时间吗?

你从ds18b20的数据手册中可以看到,MCU要向ds18b20写入指令,除了要从通讯口写入指令所对应的一串高低电平外,每个写入的电平的持续时间也是有严格定义的,否则将会导致操作ds18b20失败,而所写入的电平的持续时间就是通过MCU的延时来实现的,假设数据手册上标明写入一个高电平后需要持续大于60us然后写入一个低电平持续大于2us才能再写入一个高电平,则对应的代码为:iodata = 1; delay60us(); iodata = 0; delay2us(); iodata = 1; ...... 你需要检查的就是这些延时函数所产生的延时时间是否正确,这些延时时间不正确将会导致电平的持续时间不足或过大,就极有可能造成写入指令失败。

你好,请问还在么?我也遇到了你同样的问题。调试了好久还是么有结果,请问你当时怎么做出来?谢谢

你好,请问你的问题解决了吗?

我现在也是遇到了这个情况,第一次读的温度是85,以后就是127了,请问您解决了吗?问题出在了哪里?

您好,请问您解决了吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top