比赛结束了,回首这段经历,前前后后因为实习、项目组的课题、春节等各种缘故,我进入实质性工作的时间过晚,使得预定的功能和技术指标并没有完全实现,有些遗憾。不过,在和搭档一起努力下,最后几天高强度的工作也让我收获了很多,我想这个比赛也算没有白参加。尤其是对DS18B20的进一步理解和运用,下面简单总结一下,为自己留个纪念。
在没有示波器、不能在线调试等各种“恶劣”条件下,我们只能靠将最终测量结果通过LCD显示出来而检验功能及指标,对于第一次使用DS18B20这个时序要求极高的器件来讲,确实是一个相对很大的工作量。我们先后解决了LCD译码显示、DS18B20初始化时序、DS18B20读写时序等问题,才最终让LCD显示出了正常的温度值。
硬件上是51内核的MCU,DS18B20通过单总线接入MCU的一个I/O口,同时接一个4.7K的上拉电阻到3.3V电源,DS18B20的VDD通过外部电压源供电(3.3V)。这个硬件结构相对简单,但是在后来调试中,我们发现了该MCU自己的特色,使得此硬件结构暗藏玄机。
起初,考虑到LCD的验证性质,我们必须让LCD能够正确的译码,否则无法定位代码的错误源头,这个环节工作量不是很大,但是对于定制的LCD来讲,还是要费点周折的。后来,在写一些冗余代码测试出LCD能够正确译码的情况下,我们才真正开始了DS18B20的艰苦历程。
一上来就遇到了LCD一直显示的是测试码,通过程序结构,我们推断出DS18B20初始化未成功,从而产生了第一个棘手问题。对照DS18B20的datasheet,看到其初始化时序图:主机发给DS18B20一个复位脉冲(低电平)持续480-960us,然后拉高(DS18B20等待15-60us)后,DS18B20发送一个存在(presence)脉冲持续60-240us!为做到精确延时,又没有示波器,我们用C写了一个循环,并通过反汇编得到了其汇编指令,再结合MCU的datasheet上各类指令的时钟周期,以及当前晶振频率(11.0592MHz),计算了这个循环的延时,通过Delay子函数去做精确延时,做完这些后,原本以为可以解决其初始化问题,可是事与愿违……又仔细检查硬件结构以及MCU关于I/O口的使用,才意识到因为其I/O口是双向口,所以在每次读写时是通过修改寄存器来置该I/O口为输入还是输出,才能有效地读写数据。几经周折,终于完成了DS18B20的初始化。
解决了DS18B20的初始化后,发现LCD不再显示测试码了,但是一直显示255.9,这让人很是沮丧。问题出在哪呢?传说中的DS18B20这么一个方便的数字器件,怎么惹出这么多麻烦?硬着头皮再看代码,推断问题只能出在读写时序上了(系统只有一个DS18B20,所以未曾涉及到ROM操作,故排除)。再次翻开datasheet,详细分析了其读写时序图和中文翻译,有点奇怪,然后又找到原版英文,才发现中文翻译误导了,而且结合英文再看时序图,才发现问题出在这:1)、读时序中,主机拉低数据线需至少持续1us后再释放总线(拉高),此时置端口为输入,读取DS18B20的数据,由于其数据有效时间仅为下降沿后15us以内,也就是说在读时隙时,主机必须在15us内完成读数,而不是很多中文datasheet所谓的“延时15us后再开始读数”;同时每一个读时隙需持续至少60us,所以读完数据后要做足够的延时才可进行下一个读时隙;2)、写时序中,最根本的是写1和写0的时序不一样,所以要分别写子函数,同样结合datasheet完成写时序的精确化。又严格地修改了读写时序后,上电测试,LCD显示变成了4.3,而且手触DS18B20,温度也能增加,说明DS18B20再正常工作,着实让人很振奋。现在的问题就是说,显示的温度不正确,但是我很自信地意识到离胜利已经不远了。
因不能在线Debug,所以我只好单步用心算执行,再看到读数据子函数时,潜意识告诉我这个循环有点问题,于是我在草稿纸上按循环一步步来,当写完第二个循环后,找到问题了,因一个移位操作放在循环的最后,也就是说循环外return语句所返回的结果相对实际测量的结果右移了一位!当我把该移位操作放在循环开始的地方时,LCD众望所归地显示了24.9,手触DS18B20,它直线上升到34.8,考虑到环境因素的影响,这个值已经让我很满意了。大功告成,此时看看时间,已经是凌晨1点58分了,不过庆幸地是这个夜熬得值!
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
各地信息产业主管部门(中央直属单位)联系人名录
TI 针对 Netbook/UMPC 的模拟器件解决方案
异或门控制振荡器的频率
超大规模集成电路技术工艺评价(1)
中国电池制造商宁德时代计划大规模扩张换电领域业务
特斯拉年销量10多年来首降 今年指望新车型
SK海力士宣布参展CES 2025,将展示122TB企业级固态硬盘等产品
超大规模集成电路工艺技术
了解开发套件工具是怎样帮助您缩短设计过程的
超大规模集成电路工艺技术(1)
使用等效噪声温度表征射频噪声分量
告别索尼一家独大!曝三星图像传感器打入果链
5 Easy Steps to Building an Embedded Processor System Inside an FPGA
超大规模集成电路工艺学
英国政府就满足电动汽车普及目标开展咨询
惠普香港推出蓝牙功能的掌上电脑
苹果:为什么我突然在中国对iPhone 16等降价!
长三角国家技术创新中心加入面向初创企业的MathWorks加速器合作项目,共同推动科技成果商业化
TI 基于 MSP430 微处理器的电容式触摸按键方案
2003年度电子信息产业发展基金招标项目通告
采用CMOS门电路的两级相移振荡器
中小企业融资中的几个问题
中国仪器仪表将是仪器行业赛跑中的最后赢家
低噪声场效应管晶体振荡器
挪威2024年纯电动汽车销量占新车总销量88.9%,中国品牌占近一成
用于红外遥控的40kHz载波信号振荡电路
录音用偏磁振荡电路
跻身中国前三 紧追联想!华为2025年PC产品齐曝光:有万元折叠平板
超大规模集成电路技术
TI 视频解码器和 ADC/DAC 产品及其应用