《用软件实现1-Wire#174;通信》.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘要:在没有专用总线主机(如DS2480B、DS2482)的情况下,微处理器可以轻松地产生1-Wire时序信号。本应用笔记给出了一个采用‘C’语言编写、支持标准速率的1-Wire主机通信基本子程序实例。1-Wire总线的四个基本操作是:复位、写“1”、写“0”和读数据位。字节操作可以通过反复调用位操作实现,本文提供了通过各种传输线与1-Wire器件进行可靠通信的时间参数。 引言 在没有专用总线主机的情况下,微处理器可以轻松地产生1-Wire时序信号。本应用笔记给出了一个采用C语言编写、支持标准速率的1-Wire主机通信基本子程序实例。此外,本文也讨论了高速通信模式。要使该实例中的代码正常运行,系统必须满足以下几点要求: 微处理器的通信端口必须是双向的,其输出为漏极开路,且线上具有弱上拉。这也是所有1-Wire总线的基本要求。关于简单的1-Wire主机微处理器电路实例,请参见应用笔记4206:为嵌入式应用选择合适的1-Wire主机中的1类部分。 微处理器必须能产生标准速度1-Wire通信所需的精确1μs延时和高速通信所需要的0.25μs延时。 通信过程不能被中断。 1-Wire总线有四种基本操作:复位、写1位、写0位和读位操作。在数据资料中,将完成一位传输的时间称为一个时隙。于是字节传输可以通过多次调用位操作来实现,下面的表1是各个操作的简要说明以及实现这些操作所必须的步骤列表。图1为其时序波形图。表2给出了通常线路条件下1-Wire主机与1-Wire器件通信的推荐时间。如果与1-Wire主机相连的器件比较特殊或者线路条件比较特殊,则可以采用最值。请参考可下载的工作表中的系统和器件参数,确定最小值和最大值。 表1. 1-Wire操作 Operation Description Implementation Write 1 bit Send a 1 bit to the 1-Wire slaves (Write 1 time slot) Drive bus low, delay A Release bus, delay B Write 0 bit send a 0 bit to the 1-Wire slaves (Write 0 time slot) Drive bus low, delay C Release bus, delay D Read bit Read a bit from the 1-Wire slaves (Read time slot) Drive bus low, delay A Release bus, delay E Sample bus to read bit from slave Delay F Reset Reset the 1-Wire bus slave devices and ready them for a command Delay G Drive bus low, delay H Release bus, delay I Sample bus, 0 = device(s) present, 1 = no device present Delay J 图1. 1-Wire时序图 表2. 1-Wire主机时序 Parameter Speed Recommended (μs) A Standard 6 Overdrive 1.0 B Standard 64 Overdrive 7.5 C Standard 60 Overdrive 7.5 D Standard 10 Overdrive 2.5 E Standard 9 Overdrive 1.0 F Standard 55 Overdrive 7 G Standard 0 Overdrive 2.5 H Standard 480 Overdrive 70 I Standard 70 Overdrive 8.5 J Standard 410 Overdrive 40 计算这些值的工作表可供下载。 代码实例 下面代码实例都依赖于两个通用的C函数outp和inp,从IO端口读写字节数据。他们通常位于conio.h标准库中。当应用于其它平台时,可以采用合适的函数来替代它们。 // send databyte to port int outp(unsigned port, int databyte); // read byte from port int inp(unsigned port); 代码中的常量PORTADDRESS (图3)用来定义通信端口的地址。这里我们假定使用通信端口的第0位控制1-Wire总线。设定该位为1,将使1-Wire总线变为低电

文档评论(0)

wgvi + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档