1-Wire单总线的基本原理
一、概述
1-wire 单总线是Maxim 全资子公司Dallas 的一项专有技术。与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE 不同,它采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的。它具有节省I/O 口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
1-wire 总线由一个总线主节点、一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合1-Wire协议的从芯片都有一个唯一的地址,包括48位的***、8位的家族代码和8位的CRC代码。主芯片对各个从芯片的寻址依据这64位的不同来进行。1-Wire总线利用一根线实现双向通信。因此其协议对时序的要求较严格,如应答等时序都有明确的时间要求。基本的时序包括复位及应答时序、写一位时序、读一位时序。在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读回或写出数据。1-wire
单总线适用于单个主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。当只有一个从机位于总线上时系统可按照单节点系统操作;而当多个从机位于总线上,时则系统按照多节点系统操作。
为了较为全面地介绍单总线系统将系统分为三个部分讨论:硬件结构,命令序列和信号方式(信号类型和时序)。
二、硬件结构
顾名思义,单总线只有一根数据线。设备主机或从机通过一个漏极开路或三态端口连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。单总线端口为漏极开路其内部等效电路如图1所示。
单总线要求外接一个约5k 的上拉电阻,这样单总线的闲置状态为高电平,不管什么原因,如果传输过程需要暂时挂起且要求传输过程还能够继续的话,则总线必须处于空闲状态位,传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。如果总线保持低电平超过480微秒, 总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM 写入等)具有足够的电源电流必须在总线上提供强上拉。
三、命令序列
1-Wire协议定义了复位脉冲、应答脉冲、写0、读0和读1时序等几种信号类型。所有的单总线命令序列(初始化,ROM命令,功能命令)都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其他均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。
第一步:初始化
第二步:ROM 命令(跟随需要交换的数据)
第三步:功能命令(跟随需要交换的数据)
每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。但是,这个准则对于搜索ROM 命令和报警搜索命令例外,在执行两者中,任何一条命令之后,主机不能执行其后的功能命,令必须返回至第一步。