dsl8b20的精确时序控制.docxVIP

  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文档。上传文档
查看更多
dsl8b20的精确时序控制 dalason于20世纪初推出了支持连接线接口(1-wirebusy)的数字热态传染器。单总线接口便于构建分布式的温度测控网络;数字化的输出提高了信号传输的可靠性,而且使外围电路大为简化。DS18B20是新一代产品,适应性更强,性价比更高。笔者在喷油泵试验台的设计中成功引入DS18B20实现实验用油的温度控制,工作良好、稳定。 1 ros-性能数据及存储 DS18B20主要有三个数字部件:(1)一个温度传感器;(2)一个64位的激光刻蚀ROM;(3)9字节高速暂存器Scratchpad RAM和3字节EERAM。 ROM上64位数据是传感器的序列号,由生产商激光刻写;每个DS18B20有世界唯一的序列号。这种设计主要是基于构建网络的要求。 RAM的结构见请查阅参考文献。暂存器确保数据的完整性。数据先被写入暂存器,并可以被读回。数据经校验后,可以由拷贝暂存器命令传输到EERAM,以确保更改存储器时数据的完整性。暂存器为9个字节,第0和第1字节是温度编码的低字节和高字节,第2和第3字节是温度编码的低字节和高字节的拷贝,第4字节是配置寄存器,其值决定温度转换的分辨率,其余字节的定义可以参阅参考文献。 218 ds18b20输出口是微控制器, 单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且DS018B20智能程度较低(这点可以与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏极开路输出,这里给出一个微控制器和DS18B20连接的原理图(图1)。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件是线与(wired AND)关系。这就决定:(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误观点。如果当前DS18B20发送0,即使微控制器I/O口置1,总线状态还是0;置1操作是为了使I/O口截止(cut off),以确保微控制器正确读取数据。(2)除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为了确保:1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。 3 c生成模块的树立在哪里 上面已经提到,DS18B20的单线总线设计决定了DS18B20和处理器之间的通信要通过严格的时序控制来完成(具体的讲,DS18B20的数据读写是通过时间片(time slot)处理位和命令字来完成信息交换的)。所以,如何在C语言中实现精确定时是接口软件设计中一个很关键的问题。一般认为,在嵌入式系统中,相对于汇编语言,C语言作为一种高级语言主要存在两个不足:一,生成的可执行代码冗长,效率不高。对于这一点,随着处理芯片运算速度的提高、集成ROM的扩大,特别编译系统的不断优化,冗长已经不再是问题。这也是C在嵌入式系统中逐渐成为主流编程语言的主要原因之一二,C生成的可执行代码在时序上不容易控制。上面提到接口软件设的定时问题就是一个时序控制问题。一般的解决方案是在C程序中嵌入汇编语句;但笔者认为,只要充分挖掘C的潜力,在时序要求严格的场合完全可以用C语言实现。具体方法就是阅读开发环境给我们提供的反汇编代码。反汇编代码一目了然的反映了微控器的运行时序;然后根据反汇编代码修改C源程序。比如下面的一个用于延时的C语句: 下面是反汇编窗口提供的反汇编代码: 由此可见,该C语句是生成的机器码很优秀,很容易实现时间控制。比如,如果i取6,就延时15us(假定时钟频率12M)。 4 s18b20的复位 在编程的角度看来,微控制器对DS18B20进行一个完整的操作包含三个操作,即:复位操作、读操作、写操作。在DS18B20看来,微控制器对DS18B20操作依次为复位操作、ROM操作,RAM操作。 (1)DS18B20的复位操作 从复位操作时序图(图2)可以看出微控器的管脚首先输出0,然后置1,总线通过上拉电阻呈1态,然后DS18B20输出存在脉冲0,微控制器通过读存在脉冲以判断复位是否成功。给出相应C代码如下: (2)DS18B20的读、写操作 DS18B20的读操作分为读0操作和读1操作;写操作分为写0操作和写1操作。这里给出读写操作的时序图(图3、图4)。 5 ds18b20的编程 前面已经提到,在DS18B20看来,微控制器对DS18B20操作依次为复位操作、ROM操作、RAM操作,这些操作是通过上面所述的读、写操作实现的。这里作出一点解释:所谓ROM/RAM

文档评论(0)

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

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

1亿VIP精品文档

相关文档