单总线(1-WireBus)是由Dallas公司(2001年并入MAXIM公司)推出的一种串行总线扩展专有技术,只需要一条信号线和一条地线进行单主多从式半双工串行通信。由单条信号线传输时钟、数据并作为所挂接的单总线器件(称为从设备)的电源线,挂接量可达数百个。每个单总线器件内部固化了全球唯一的64位ID码(标识码,注册码),用作器件地址。具有技术先进、节省I/O口线、扩展和维护方便等特点,是测控系统总线发展的一种趋势。
单总线器件采用CMOS技术制造、功耗极低(静态电流达到μA级),有传统芯片封装和不锈钢外壳的iButton(信息纽扣)封装两类。前者型号有诸如DS2430(E2PROM)、DS18B20(温度传感器)等。后者外型坚固,适于接触式、可热拔插使用,型号有诸如DS1990A(电子标识)、DS1991(多页加密存储器,又称电子货币)和DS1972(E2 PROM)等。
1.单总线的连接和ID码
单总线主/从设备的电路连接方式见图4-33,可由单片机(称为主设备)的I/O口直接驱动,单总线器件由内部设置的寄生供电电路维持工作;数据传输速率一般为16.3kbit/s,最大可达142kbit/s,通常情况下采用100kbit/s以下的速率。主设备I/O口可直接驱动200m范围内的从设备(实际应用中用没有屏蔽的双绞线作为接入电缆)。如果主设备或从设备接入单总线的端口属漏极开路结构,设备不传送数据时能释放总线,则通常单总线需外接一个4.7kΩ左右的上拉电阻,使总线闲置状态为高电平。
图4-33 单总线主/从设备的电路连接方式
每个单总线器件内部光刻有8字节ROM单元来储存ID码,64位ID码的组成见图4-34,属全球唯一,没有重复。
图4-34 64位ID码的组成
第一个字节为8位家族码(产品分类标志),接着是48位地址序列号(总量可达248个,地址足够分配不会发生冲突)。最后是循环冗余校验码CRC(由内部硬件电路生成)。以DS1990A器件为例,关系是:CRC=X8+X5+X4+1(X为最后一字节除外的56位数据参与计算),主设备则是通过软件方法产生CRC校验码,实现数据的校验。
2.单总线信号传输时序
单总线器件有严格的通信时序。单总线接口基本通信流程见图4-35,包括:①初始化;②ROM命令传输;③功能命令传输。这些命令序列都是由复位脉冲、应答脉冲、写“0”、写“1”、读“0”和读“1”等几种基本时序组成。除了应答信号外,上述时序均由主设备发出,命令和数据字节的传输顺序是低位在前高位在后(与异步串行通信的顺序相同),在默认状态下以标准模式通信(另一种为高速模式)。
图4-35 单总线接口基本通信流程
单总线的基本信号时序见图4-36。
(1)初始化时序 初始化时序见图4-36a,包括主设备复位脉冲和从设备应答脉冲。主设备拉低单总线480~960μs产生TX复位脉冲,然后释放总线产生上跳变、转为RX接收状态。从设备检测到该上跳变后延时15~60μs,拉低总线60~240μs产生应答脉冲。被主设备检测到之后(RX监测时间至少在480μs以上),便开始向从设备传输ROM命令和功能命令(随后另述)。
图4-36 单总线的基本信号时序(www.xing528.com)
(2)写“1”时序 写“1”时序见图4-36b。主设备首先把总线拉低,1~15μs内释放总线并保持高电平至少60μs(上拉电阻把电平拉高)。从设备在15~60μs内读取总线电平,完成数据“1”的传输。两个独立时段之间的数据写入至少应有1μs的恢复时间。
(3)写“0”时序 写“0”时序见图4-36c。主设备首先把总线拉低,1~15μs后继续保持低电平至少60μs,从设备在15~60μs内读取总线电平,完成数据“0”的传输。两个独立时段之间的数据写入至少应有1μs的恢复时间。
(4)读“1”时序 读“1”时序见图4-36d。由主设备发起把总线拉低1~15μs。若从设备随后送出“1”,则总线变为高电平(有效时间15μs),主设备在该时段内对总线采样,然后从设备在大于15μs小于60μs的时间内释放总线为高电平(上拉电阻把电平拉高),完成读“1”的操作。两个独立时段之间的数据读出至少应有1μs的恢复时间。
(5)读“0”时序 读“0”时序见图4-36e。由主设备发起把总线拉低1~15μs。若从设备随后送出“0”,则总线变为低电平(有效时间15μs),主设备在该时段内对总线采样,然后从设备在大于15μs小于60μs的时间内释放总线为高电平(上拉电阻把电平拉高,见虚线),完成读“0”的操作。两个独立时段之间的数据传输至少应有1μs的恢复时间。
上述读时序需在主设备向从设备发出读数据的ROM命令后马上产生。主设备发出读时序后,从设备才开始发送“0”或“1”。如果单总线上保持的低电平超过480μs,所有器件将自动复位。
3.单总线的ROM命令
单总线的ROM命令有7个(均为1字节),主要用来管理和识别单总线器件,实现“片选”功能,对命令的支持程度视具体器件型号而定。主设备初始化检测到单总线的应答脉冲后,就可以发出ROM命令,且与各器件的ID码相关,能检测所连从设备的数量、类型,或是否处于报警状态。ROM命令及其功能简介如下:
(1)搜索ROM[命令码F0h] 系统上电后,主设备可通过循环执行搜索ROM命令,用排除法获取所有ID码从而知晓所挂从设备数量。循环搜索分三个步骤:读出一位;读该位的补码;向该位写入指定值。根据两次读得的状态值判断并选择不同的搜索分支,不匹配该值的从设备随后都不被搜索,重复执行直到第64位完毕。一次完整的ID码搜索就可检知某个从设备,重复同样的搜索可识别其余从设备,网上有具体方法可参考。
(2)读ROM[命令码33h] 适用于总线上只有一个从设备的场合。主设备无需执行搜索ROM过程,可以直接读出64位ID码。如果总线上接有多个从设备,会因同时送出数据而产生数据冲突。
(3)匹配ROM[命令码55h] 适用于总线上有多个从设备的场合。命令后面跟随64位ID码,对从设备进行寻址,只有ID码相符的从设备才会响应后续的功能命令,否则保持等待状态。
(4)跳跃ROM[命令码CCh] 适用于只有一个从设备的场合。主设备不需要发64位ID码,直接访问芯片进行数据交换。如果存在多个从设备,也会发生数据冲突。
(5)条件查找ROM[命令码ECh] 仅适用于有少量单总线器件的场合,等同于搜索ROM命令,允许主设备检测哪些从设备发生了条件报警(如欠电压、过温、欠温等)。
(6)超速跳跃ROM[命令码3Ch] 适用于只有一个从设备的场合。单总线设置为超速模式执行跳跃ROM命令,直接访问从设备。
(7)超速匹配ROM[命令码69h] 适用于有多个从设备的场合。单总线设置为超速模式执行匹配ROM命令,对从设备寻址。
4.单总线的功能命令
单总线功能命令跟随在ROM命令之后,对功能命令的支持程度视器件类型而定(可参阅具体器件手册),主要实现器件的读、写操作和数据交换。主设备发出ROM命令后,接着发出某个从设备的具体功能命令。例如,访问温度传感器DS18B20时,主设备发出跳跃ROM命令,接着发出温度转换命令[44h],就可进行温度转换。
51系列单片机与单总线器件的扩展应用示例祥见第8章第8.8节。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。