1,wire,协议
- 格式:docx
- 大小:40.20 KB
- 文档页数:21
1-WIRE总线详解。
讯号线会连接一个4.7K 欧姆的Pull-High 电阻,电阻再接到电源(3V 到5.5V)。
1-WIRE 总线传输使用的速度有标准速度与高速两种。
每个1-WIRE 总线有独立的64 位辨识码以供装置辨识用,因此最多可以连接1.8*1019 个装置,几乎是无限制。
1-WIRE 常见的应用是在EEPROM 上与一些传感器界面上。
1- WIRE 的速度有标准:1MHz(1us),高速:5MHz(0.2us).1-WIRE 有四种数据包:1.Reset:每个通讯周期都是由Reset 讯号开始。
Master 会先发送Reset Pulse 让所有在1-WIRE 上的Slave 装置进入辨别状态,当一个Slave 或很多个Slave 接收到Reset Pulse 讯号之后,Slave 会回传一个Presence Pulse 讯号,用来表示接收到。
2.Write 0:发送一个0bit 给Slave(Write 0 time slot)。
3.Write 1:发送一个1bit 给Slave(Write 1 time slot)。
4.Read Data:Read Data Sequences 很像Write 1 Time Slot,但是在Master 释放总线线并且从Slave 装置读回数据后,Master会取样Bus 的状态,透过这种方法Master 可以从Slave 读回任何0 或1 的bit。
Reset:一开始Master 要跟Slave 做任何通讯时,Master 会先传送一个低准位的Reset Pulse(TX)of(标准速度:480us;高速:48us)的一段时间。
接着Master 会释放出总线线并进入接收模式(RX),1-WIRE Bus 会透过上拉电阻将准位拉回High 状态。
然后Master 在Data Line 上会侦测到Rising Edge,此时任何一个Slave 会等待一段时间()(标准速度:15-60us;高速:2-6us)并且传回一个Presence Pulse()(标准速度:60-240us;高速:8-24us)给Master。
单⽚机学习(⼗⼆)1-Wire通信协议和DS18B20温度传感器⽬录⼀、DS18B201. DS18B20简介DS18B20是⼀种常见的数字温度传感器,其控制命令和数据都是以数字信号的⽅式输⼊输出,相⽐较于模拟温度传感器,具有功能强⼤、硬件简单、易扩展、抗⼲扰性强等特点测温范围:-55°C 到 +125°C通信接⼝:1-Wire(单总线)其它特征:可形成总线结构、内置温度报警功能、可寄⽣供电2. 电路原理图其中1和3号引脚分别连接GND和VCC,⽽⼆号引脚则⽤于使⽤1-Wire(单总线)接⼝进⾏通信。
即:3. 内部结构内部完整结构框图64-BIT ROM:作为器件地址,⽤于总线通信的寻址SCRATCHPAD(暂存器):⽤于总线的数据交互EEPROM:⽤于保存温度触发阈值和配置参数其中配置寄存器可以配置温度变化的精度值。
存储器结构当我们希望修改EEPROM中存储的内容时,我们需要先将数据写⼊到暂存器中,然后再发送⼀条指令使从机将暂存器中的数据写⼊到EEPROM中。
⼆、单总线(1-Wire BUS)由于DS18B20使⽤的通信接⼝是1-Wire,因此我们需要学习1-Wire相关的通信协议,这样才能使单⽚机和它进⾏通信。
1. 单总线简介单总线(1-Wire BUS)是由Dallas公司开发的⼀种通⽤数据总线⼀根通信线:DQ异步、半双⼯单总线只需要⼀根通信线即可实现数据的双向传输,当采⽤寄⽣供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线2. 电路规范设备的DQ均要配置成开漏输出模式DQ添加⼀个上拉电阻,阻值⼀般为4.7KΩ左右若此总线的从机采取寄⽣供电,则主机还应配⼀个强上拉输出电路3. 单总线的时序结构①初始化:主机将总线拉低⾄少480us然后释放总线,等待15~60us存在的从机拉低总线60~240us以响应主机最后从机将释放总线对应的信号时序图:②发送⼀位:主机将总线拉低60~120us,然后释放总线,表⽰发送0;主机将总线拉低1~15us,然后释放总线,表⽰发送1。
DS18B20数据手册-中文版DS18B20 分辨率可编程概述1-Wire数字温度传感器 DS18B20数字温度传感器提供9-Bit到12-Bit的摄氏温度测量精度和一个用户可编程? 温度转换时间在转换精度为12-Bits时达到的非易失性且具有过温和低温触发报警的报警最大值750ms。
功能。
DS18B20采用的1-Wire通信即仅采用一? 用户自定义非易失性的的温度报警设置。
个数据线(以及地)与微控制器进行通信。
该? 定义了温度报警搜索命令和当温度超过用户传感器的温度检测范围为-55?至+125?,并且自定义的设定值时。
在温度范围超过-10?至85?之外时还具有? 可选择的8-Pin SO (150 mils), 8-PinμSOP,+-0.5?的精度。
此外,DS18B20可以直接由数及3-Pin TO-92封装。
据线供电而不需要外部电源供电。
? 与DS1822程序兼容。
每片DS18B20都有一个独一无二的64位? 应用于温度控制系统,工业系统,民用产品,序列号,所以一个1-Wire总线上可连接多个温度传感器,或者任何温度检测系统中。
DS18B20设备。
因此,在一个分布式的大环境管脚定义图里用一个微控制器控制多个DS18B20是非常简单的。
这些特征使得其在HVAC环境控制,在建筑、设备及机械的温度监控系统,以及温度过程控制系统中有着很大的优势。
特性独特的1-Wire总线接口仅需要一个管脚来通信。
每个设备的内部ROM上都烧写了一个独一无二的64位序列号。
多路采集能力使得分布式温度采集应用更加简单。
无需外围元件。
能够采用数据线供电;供电范围为3.0V至5.5V。
温度可测量范围为:-55?至+125?(-67?至+257?)。
温度范围超过-10?至85?之外时具有+-0.5?的精度。
内部温度采集精度可以由用户自定义为9-Bits至12-Bits。
DS18B20订购信息零件温度范围引脚数-封装顶部标号DS18B20 3 TO-92 18B20 -55?至+125?DS18B20+ 3 TO-92 18B20 -55?至+125?DS18B20/T&R 18B20 -55?至+125? 3 TO-92(2000片)DS18B20+T&R 18B20 -55?至+125? 3 TO-92(2000片)DS18B20-SL/T&R 18B20 -55?至+125? 3 TO-92(2000片)* DS18B20-SL+T&R 18B20 -55?至+125? 3 TO-92(2000片)* DS18B20U 8 uSOP 18B20 -55?至+125?DS18B20U+ 8 uSOP 18B20 -55?至+125?DS18B20U/T&R 18B20 -55?至+125? 8 uSOP(3000片)DS18B20+T&R 18B20 -55?至+125? 8 uSOP(3000片)DS18B20Z 8 SO DS18B20 -55?至+125?DS18B20Z+ 8 SO DS18B20 -55?至+125?DS18B20Z/T&R DS18B20 -55?至+125? 8 SO(2500片)DS18B20Z+T&R DS18B20 -55?至+125? 8 SO(2500片)“+”号表示的是无铅封装。
文库资料 ©2014 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
文章源自ZLG 致远电子,转载或引用请注明出处
1 ZDS2022
示波器百集实操视频之51:1-wire 协议触发
大家好,上期视频我们跟大家分享了1-wire 协议的解码,今天来看看它的触发功能。
在解码模块中一旦打开协议触发,按下【Trigger 】键后,触发类型就自动变成了解码的1-wire 协议,将触发方式设为普通,在协议参数中可对1-wire 协议进行触发参数设置,触发源根据实际输入进行通道设置。
速度模式包括标准和驱动两种,驱动模式下数据的传输速率比标准模式下数据的传输速率会高一点,我们选择标准模式。
触发模式包括开始段触发、指令触发和自定义触发三种模式,设置自定义触发,长按旋钮A 可得知指令1的帮助信息,指令1是指输入要触发的第一条的8位指令,当您在对某个设置不清楚时,可先将其选中,长按对应的旋钮查看其帮助信息,指令1设置为0xCC ,指令2设置为0x01,确定两个指令后,设定其中的间隔位宽为16位。
图1 1-wire 协议自定义触发
返回到主界面,可见触发点已准确定位在0x01结束处,在解码环境下,观察协议触发情况,对协议分析更加有利!
腾讯视频:/page/g/3/2/g014552hz32.html
优酷视频:/v_show/id_XODgxMTM5NDk2.html。
1wire总线协议
1wire总线协议是一种串行通信协议,它能够通过一根数据线进行数据传输和供电。
它最初由达拉斯半导体公司(Dallas Semiconductor)开发,后来被收购并成为Maxim Integrated公司的一部分。
1wire总线协议被广泛应用于温度传感器、湿度传感器、电压传感器等各种传感器设备中。
1wire总线协议的特点之一是只需要一根数据线就能完成数据传输和供电,这使得它在一些对线缆数量有限的场合中具有很大的优势。
此外,1wire总线协议还具有较高的抗干扰能力,能够在恶劣的环境中稳定工作。
在1wire总线协议中,每个设备都有一个唯一的64位ROM码,这个码是由厂商分配的,保证了每个设备的唯一性。
通过这个唯一的ROM码,系统可以识别和区分不同的传感器设备,从而实现对它们的管理和控制。
1wire总线协议的通信速率比较低,一般在16.3kbps左右,但对于一些低速传感器设备来说已经足够。
此外,1wire总线协议还支持多主机系统,多个1wire设备可以连接到同一条总线上,由主机控制各个设备的访问。
在1wire总线协议中,数据的传输是通过脉冲宽度调制(Pulse Width Modulation)来实现的,这种方式能够很好地抵抗传输过程中的干扰。
此外,1wire 总线协议还支持数据的校验和错误检测,保证了数据传输的可靠性。
总的来说,1wire总线协议是一种简单、灵活、可靠的串行通信协议,适用于各种传感器设备的应用场合。
它的低成本、低线缆数量、高抗干扰能力等特点,使得它在一些特定的领域中具有很大的优势。
随着物联网技术的发展,1wire总线协议有望在更多的领域得到应用和推广。
DS1WM综合1-Wire总线主控器特征内存映射到任何标准的字节宽度数据总线。
用内部产生所有1-Wire时序和控制信号来消除CPU的“位拆裂”。
产生中断来提供更多的高效率程序。
从1-Wire总线上的任意位操作搜索ROM加速器以减轻CPU的负担。
支持超速模式和他激中断。
可以在3.2MHz到128MHz频率下运行。
小尺寸、全数字化设计、仅1500个关口。
支持Verilog和VHDL。
可以在含有1-wire的电路中应用。
描述随着越来越多的单线设备的应用,越来越多的用户必须处理产生单线信号的要求来连接它们。
这通常需要“位拆裂”微处理器上的一个端口引脚,并具微处理器执行1-wire协议规定的计时函数。
虽然1线传输可中断中间字节,但是时隙的低电平不能中断;这意味着,CPU没发送每个位将闲置长达60微秒和产生1-wire复位需要至少480微秒。
单总线主控器帮助用户处理同1-wire设备通讯而不占用宝贵的CPU周期。
作为1-wire端口集成到一个用户的集成电路中,其核心是支持VHDL和Verilog编程,并占用很小的芯片面积。
这种电路的设计是内存映射到用户系统,并通过8位的命令来为1 - Wire总线提供完整的控制。
主机CPU装载指令,读取和写入数据,用5个单独寄存器来控制中断。
所有的定时和控制信号是由1 - Wire总线内部产生的。
主机仅仅需要装载指令或数据,然后就可以处理自己的工作。
当总线产生一个响应要CPU 接受请求,1-wire主控器就置一个状态位,如果允许,则产生一个中断给CPU 。
除了读写简化,1-wire主控器还提供了搜索ROM加速器功能,使CPU 在执行1-Wire总线上任何单位操作时减轻负荷。
1-wire操作在Book of iButton Standards [1]一书中详细介绍;因此,单总线操作细节在本文中就不再讲述。
每一个从设备,一般都有自己的一套指令,详细介绍了该装置的数据表。
用户是指那些文件详细的具体奴隶的实现。
单片机1-Wire总线原理与EEPROM读写方法黄淑蓉【摘要】用K20系列的单片机I/O接口读写1-Wire总线EEPROM.简单介绍了1-Wire原理、通信协议,并对DS28E04的操作时序做了描述.用单片机I/O接口控制1-Wire EEPROM,线路简单、硬件开销少、成本低廉,软件对复位、写1位、写0位和读位4种操作的时序正确即可实现读写EEPROM.【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2018(018)010【总页数】3页(P15-17)【关键词】单片机;读写;DS28E04【作者】黄淑蓉【作者单位】珠海市光联通讯技术有限公司 OMS/软件组,珠海 519030【正文语种】中文【中图分类】TP273引言本文的单片机型号为K20系列的MK20DN512ZVLL 10-N;1-Wire EEPROM的型号为Dallas Semiconductor 的DS28E04。
Dallas Semiconductor 的1-Wire 总线是一种简单的信号交换架构,通过一条线路在主机与外围器件之间进行双向通信。
电源和数据通信通过单根数据线传输,使得1-Wire器件具有无与伦比的强大功能,可减少系统间的互联。
由于1-Wire器件是集成度高、功能丰富且外接简单的单总线网络器件,因而无论在自动化系统或者是通信工程及金融安全等领域应用非常广泛,又由于具有使用方便、体积小等特点,故既适合各类系统开发,又适用于智能化或小型仪器仪表的制造,因此受到设计者及制造厂商的欢迎。
1 1-Wire的工作原理1.1 内部等效图单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。
设备(主机或从机)通过一个漏极开路或三态端口连接至该数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线,其内部等效电路如图1所示。
图1 内部等效图单总线通常要求外接一个约为4.7 kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。
摘要:本应用笔记介绍了嵌入式应用中的四类1-Wire主机电路,并讨论了它们与备用(即未用)系统资源相关的性能与要求。
文中给出的电路适用于半径不超过1米,只挂接少量1-Wire从器件的小型网络。
文章还介绍了针对具体应用寻找最具性价比的1-Wire主机的指令和决策表。
这里假设读者熟悉1-Wire通信和微控制器的基本知识。
引言1-Wire总线是一个简单的信号传输电路,可通过一根共用的数据线实现主控制器与一个或一个以上从器件之间的半双工双向通信。
电源和数据通信通过单根数据线传输,使得1-Wire器件具有无与伦比的强大功能,可减少系统间的互联。
1-Wire器件通过受专利保护的单触点串行接口提供存储器、混合信号和安全认证功能。
1-Wire器件的典型应用如下:打印墨盒或医疗消耗品的识别;机架卡的校准和控制;印刷电路板、配件及外设的识别和认证;知识产权保护、防克隆、安全功能控制。
采用1-Wire技术时,需要通过1-Wire主机发送信号来识别总线上的器件并与它们通信。
构建一个1-Wire主机有很多方法。
本文讨论了嵌入式应用的主机,包括半径不超过1米且1-Wire 从器件数目不超过三至五的小型网络。
设计1-Wire大型网络或从器件数目较多时,可参考应用笔记148:"1-Wire网络可靠设计指南"。
1-Wire术语首先解释几个1-Wire文档中常见的术语。
主机接口本文讨论的电路为1-Wire主机控制器,它们均与1-Wire从器件通信。
但是,这些1-Wire主机控制器不能作为单独的主体,需要一个主机(计算机)告诉它们在1-Wire侧如何工作。
主机接口指1-Wire主控制器和“系统中更高级的指挥官” (即主机)之间的连接类型。
工作电压通常情况下,1-Wire器件的工作电压范围为2.8V (最小值)至5.25V (最大值)。
多数1-Wire 器件没有电源引脚。
因此,这种器件以寄生供电的方式从1-Wire通信线路获取电源。
引言1-Wire ®通信协议可以通过微处理器上的一个IO 引脚产生,不过,为了创建可靠的1-Wire 网络,必须提供正确的时序和适当的输出电压摆率。
1-Wire 主机发送的时序不正确会导致与1-Wire 从器件之间的通信间断或完全失败。
输出电压摆率若不加以控制,可能严重限制网络的长度,并产生时通时断的现象。
如果可以提供串行通信UART ,那么通过一个串口至1-Wire 桥接器(DS2480B)就可以解决上述问题。
DS2480B 是从串行接口到1-Wire 网络协议转换的桥接器。
只要主机具有普通的串行通信UART ,就可以通过该桥接器产生严格定时和电压摆率控制的1-Wire 波形。
DS2480B 接收所要发送的指令与数据,执行1-Wire 操作,并将结果返回至主机。
图1给出了DS2480B 配置的简化框图。
实现该协议并浏览所有的DS2480B 指令可能需要花大量的时间并容易混淆。
为此,本指南将介绍通用的1-Wire 操作,并解释DS2480B 的输入串行数据包结构,以及输出串行数据包的含义。
本文作为DS2480B 数据手册的补充,并不能代替数据手册。
该数据手册可以在网页/中找到。
DS2480B 的使用(简化) 图1与该桥接器一起工作的主机UART 至少应能够支持8位、无奇偶校验、9600波特(位/秒)的通信。
该桥接器可以实现更高的数据速率,最高可以达到115200波特,但是上电时以9600波特启动。
DS2480B 数据手册中介绍了电气方面的注意事项,如RS232。
1-Wire 接口只有在所有指令与模式均被转换到1-Wire 通信接口,使得各种应用能够基于该接口使用,DS2480B 才是有用的。
为了执行1-Wire 操作,应用中必须具备的一些基本1-Wire 函数。
第一项操作是使总线上所有1-Wire 从器件复位,为接收来自1-Wire 主机的指令做好准备。
第二项操作是从1-Wire 主机向从器件执行写一位操作,第三项操作是从1-Wire 从器件中读一位操作。
概述DS28EC20是一款20480位、1-Wire ® EEPROM ,分为80个256位的存储页面。
器件提供一个额外的页用于控制功能。
数据被写入一个32字节暂存器,经过校验后,复制到EEPROM 存储器。
器件具有一个特殊功能,可以将8个存储器页设置为写保护或EPROM 仿真模式,在EPROM 仿真模式下各位仅能由1修改为0状态。
DS28EC20通过单个触点的1-Wire 总线进行通信,遵循标准1-Wire 协议。
各个器件均具有不可修改、唯一的64位ROM 注册码,由工厂光刻入芯片。
该注册码可用于在多节点1-Wire 网络环境中寻址器件。
应用设备识别IEEE 1451.4 传感器TEDS 墨盒/碳粉盒 医学传感器 PCB 认证 无线基站定购信息PART TEMP RANGE PIN-PACKAGE DS28EC20+ -40°C to +85°C 3 TO-92 DS28EC20+T -40°C to +85°C 3 TO-92, T&R DS28EC20P+ -40°C to +85°C 6 TSOCDS28EC20P+T -40°C to +85°C 6 TSOC, T&R + 代表无铅封装。
T = 卷带封装。
DS28EC2020Kb 1-Wire EEPROM特性20480位非易失性(NV) EEPROM 被分为80个256位页独立的8页存储器(块)可以设置为永久性写保护或OTP EPROM 仿真模式(“写为0”)读写访问高度向后兼容以前的器件(如DS2433) 256位暂存器,遵循严格的读/写协议,确保数据传输的完整性+25°C 温度下200k 擦写次数工厂编程的64位唯一注册码,确保无错的器件选择和绝对的器件识别开关滞回和滤波优化噪声性能使用1-Wire 协议以15.4kbps 或125kbps 速率与主机进行通信低成本TO-92封装工作范围:5V ±5%,-40°C 至+85°CI/O 引脚具有IEC 1000-4-2 4 级ESD 保护(典型值:8kV 接触放电模式,15kV 气隙放电模式)引脚配置 为清晰起见,命令、字节和模式用大写字母表示。
基于单片机串口实现1-Wire总线通信的方法可以分为以下几个步骤:
1. 硬件连接:将单片机的串口与1-Wire总线接口连接,确保连接正确。
2. 初始化单片机串口:根据单片机的串口通信协议,设置串口通信参数,如波特率、数据位、校验位等。
3. 初始化1-Wire总线接口:根据1-Wire总线协议,设置总线接口参数,如时钟频率、数据线引脚等。
4. 发送数据:通过单片机串口发送数据到1-Wire总线上,驱动总线上的传感器或其他设备。
5. 接收数据:通过1-Wire总线接口读取传感器或其他设备的数据,并将其传送到单片机串口。
6. 数据处理:对接收到的数据进行处理,如校验、解析等,并将其传送到单片机其他模块或外部设备。
需要注意的是,在实现1-Wire总线通信时,需要考虑到总线上的其他设备,如温度传感器、EEPROM等,它们可能需要进行不同的初始化设置和通信方式。
同时,还需要考虑到单片机的电源、时钟等硬件资源,以确保通信的稳定性和可靠性。
此外,对于具体的单片机型号和开发环境,具体的实现方法可能会有所不同。
因此,建议参考相关硬件和软件文档,或者寻求专业人士的帮助。
设计指南148长线1-Wire网络可靠设计指南Aug 25, 2004摘要:1-Wire®协议设计的初衷是为相邻器件的短距离连接提供一种便利的通信方式,1-Wire还提供了一种通过微处理器单个端口增加辅助存储器的途径。
在以后的应用中,1-Wire协议被扩展到网络系统,通信范围超出了电路板尺寸。
本文从多个方面讨论了保证1-Wire网络可靠运行的设计指南。
附录中说明了精确调整1-Wire总线接口的方法,并列举了不同条件下的1-Wire 通信波形。
概述1-Wire协议设计的初衷是为相邻器件的短距离连接提供一种便利的通信方式,例如通过微处理器的单个端口增加辅助存储器功能。
随着1-Wire器件应用的普及,1-Wire协议被扩展到网络系统,通信范围超出了电路板尺寸。
1-Wire网络是器件、电缆和线路连接的复杂组合。
每个网络在拓扑(布局)和硬件上通常都不相同。
网络中器件(例如主机、网络电缆、1-Wire从机器件、“从机”)的正确匹配是1-Wire可靠运行的前提。
当总线主机设计不当或应用不当,或者在近距离通信的主机中使用了很长的通信电缆,通常都不会得到令人满意的性能。
该应用笔记给出了在不同类型、不同网络规模情况下,1-Wire网络的运行结果。
它还提供了网络可靠运行的工作参数。
这里讨论的有些问题对于近距离应用并不严格。
例如,长度小于1米的网络。
关于嵌入式1-Wire应用的讨论,请参考应用笔记4206:“为嵌入式应用选择合适的1-Wire主机”。
附录A到D说明了精确调整1-Wire总线接口的方法,并列举了不同条件下的通信波形。
网络说明本文仅限于使用5类铜缆双绞线的情况,主机提供5V总线电源为1-Wire网络供电(大部分1-Wire从机器件工作在较低的总线电压下,但大型网络在低压状态下工作性能会受到很大影响)。
本文没有涉及EPROM型从机器件的编程,这些器件不推荐用于距离主机终端接口较远的场合。
本文也不讨论1-Wire器件的高速运行模式,高速运行模式只适用于距离非常短的近距离通信,对1-Wire网络不适用。
竭诚为您提供优质文档/双击可除1,wire,协议篇一:单总线(1-wiRebus)技术及其应用单总线(1-wirebus)技术及其应用摘要:介绍了美dallas公司推出的单总线技术的原理和信号传输方式,说明了单总线通信协议,最后以单总线器件ibutton在安防系统中的应用为例,给出了单总线的数据传输方法。
关键词:单总线单总线协议ibutton1引言目前常用的微机与外设之间进行数据传输的串行总线主要有i2c总线、spi总线和sci 总线。
其中i2c总线以同步串行2线方式进行通信(一条时钟线,一条数据线),spi总线则以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),而sci总线是以异步方式进行通信(一条数据输入线,一条数据输出线)的。
这些总线至少需要两条或两条以上的信号线。
近年来,美国的达拉斯半导体公司(dallassemiconductoR)推出了一项特有的单总线(1-wirebus)技术。
该技术与上述总线不同,它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。
单总线适用于单主机系统,能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。
当只有一个从机设备时,系统可按单节点系统操作;当有多个从设备时,系统则按多节点系统操作。
图1所示是单总线多节点系统的示意图。
2单总线的工作原理顾名思义,单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。
设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线,其内部等效电路如图2所示。
单总线通常要求外接一个约为4.7k Ω的上拉电阻,这样,当总线闲置时,其状态为高电平。
主机和从机之间的通信可通过3个步骤完成,分别为初始化1-wire器件、识别1-wire器件和交换数据。
由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1-wire器件都必须严格遵循单总线命令序列,即初始化、Rom、命令功能命令。
如果出现序列混乱,1-wire器件将不响应主机(搜索Rom命令,报警搜索命令除外)。
表1是列为ΔΙΩ命令的说明,而功能命令则根据具体1-wire器件所支持的功能来确定。
表1Rom命令说明Rom命令说明搜索Rom(F0h)识别单总线上所有的1-wire器件的Rom编码读Rom(33h)(仅适合单节点)直接读1-wire器件的序列号匹配Rom(55h)寻找与指定序列号相匹配的1-wire器件跳跃Rom(cch)(仅适合单节点)使用该命令可直接访问总线上的从机设备报警搜索Rom(ech)(仅少数器件支持)搜索有报警的从机设备3信号方式所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性。
1-wire协议定义了复位脉冲、应答脉冲、写0、读0和读1时序等几种信号类型。
所有的单总线命令序列(初始化,Rom命令,功能命令)都是由这些基本的信号类型组成的。
在这些信号中,除了应答脉冲外,其它均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。
图3是这些信号的时序图。
其中,图3(a)是初始化时序,初始化时序包括主机发出的复位脉冲和从机发出的应答脉冲。
主机通过拉低单总线至少480μs产生tx复位脉冲;然后由主机释放总线,并进入Rx接收模式。
主机释放总线时,会产生一由低电平跳变为高电平的上升沿,单总线器件检测到该上升沿后,延时15~60μs,接着单总线器件通过拉低总线60~240μsμ来产生应答脉冲。
主机接收到从机的以应答脉冲后,说明有单总线器件在线,然后主机就可以开始对从机进行Rom命令和功能命令操作。
图3中的(b)、(c)、(d)分别是写1、写0和读时序。
在每一个时序中,总线只能传输一位数据。
所有的读、写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。
图中,读、写时序均始于主机拉低总线。
在写时序中,主机将在拉低总线15μs之内释放总线,并向单总线器件写1;若主机拉低总线后能保持至少60μs的低电平,则向单总线器件写0。
单总线器件仅在主机发出读时序时才向主机传输数据,所以,当主机向单总线器件发出读数据命令后,必须马上产生读时序,以便单总线器件能传输数据。
在主机发出读时序之后,单总线器件才开始在总线上发送0或1。
若单总线器件发送1,则总线保持高电平,若发送0,则拉低总线。
由于单总线器件发送数据后可保持15μs有效时间,因此,主机在读时序期间必须释放总线,且须在15μs的采样总线状态,以便接收从机发送的数据。
[!--empirenews.page--]图3单总线的几种信号时序4单总线器件通常把挂在单总线上的器件称之为单总线器件,单总线器件内一般都具有控制、收*发、存储等电路。
为了区分不同的单总线器件,厂家生产单总线器件时都要刻录一个64位的二进制Rom代码,以标志其id号。
目前,单总线器件主要有数字温度传感器(如ds18b20)、a/d转换器(如ds2450)、门标、身份识别器(如ds1990a)、单总线控制器(如ds1wm)等。
这里介绍一种ibutton形式的单总线器件,它是利用瞬间接触来进行数字通信的,这些器件的应用已经渗透到货币交易和高度安全的认证系统之中。
ibutton是采用纽扣状不锈钢外壳封装的微型计算机晶片,它具有抗撞击、防水渍、耐腐蚀、抗磁扰、防折叠、价格便宜等特点,能较好的解决传统识别器存在的不足,同时又可满足系统在可靠性、稳定性方面的要求。
ibutton主要有三种类型,分别是memoryibutton(存储器);java-poweredcryptographicibutton(加密型);thermochronibutton(温度型)。
存储型ibutton最大存储空间为64kb,可以存储文本或数字照片。
加密型ibutton是一种微处理器和高速算法加速器,可以产生大量需要加密和解密的数据信息,它的运行速度非常快,可与internet应用相结合,并可应用于远程鉴定识别。
温度型ibutton可以测量温度变化,它内含温度计、时钟、热记录和存储单元等。
图4安防系统硬件原理图5单总线器件的应用现以单总线器件ibutton在安防系统上的应用为例来进行说明,该安防系统就是利用ibutton来进行门禁识别的。
其门禁识别部分的硬件原理图如图4所示,它由主机微控制器、从机(包括ibutton信息读取头和ibutton)、主机通过Rs485进行远程通信(或通过microweb连上internet)等三部分组成。
微控制器采用microchip公司的pic16F873芯片,而api8108a 语音芯片则用来告诉用户系统[1][2]下一页信息;ibutton 采用ds1990a,信息读取头被读取并同时送到主机微控制器,然后由主机把收到的标识码与原先存储的ibutton标识码进行比较判断,若吻合,则系统按设定要求程序工作,否则,系统给出语音提示。
ds1990a与主机微控制器之间的通信软件设计流程图如图5所示。
通常主机与单总线器件的通信都是通过初始化、写0、写1、读0、读1时序来的完成的,下面给出用汇编语言编写的子程序,需要说明的是,这些程序虽然是针对ibutton所写的,但适用于所有的单总线器件,且简单易懂,现予给出,以供大家参考。
篇二:1-wire程序ds18b20程序-超详细注释#include#include#defineucharunsignedchar#defineuintunsignedintsbitdq=p2^2;//数据口defineinterfacesbitdula=p2^6;//数码管段选sbitwela=p2^7;//数码管位选uinttemp;//温度值variableoftemperature//不带小数点unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0 x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71};//带小数点unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};/*************精确延时函数*****************/voiddelay(unsignedchari){while(--i);}/******************************************此延时函数针对的是12mhz的晶振delay(0):延时518us误差:518-2*256=6delay(1):延时7us(原帖写"5us"是错的)delay(10):延时25us误差:25-20=5delay(20):延时45us误差:45-40=5delay(100):延时205us误差:205-200=5delay(200):延时405us误差:405-400=5*******************************************//*****************ds18b20******************/voidinit_ds18b20(void)//ds18b20初始化sendresetandinitializationcommand{dq=1;//dq复位,不要也可行。
delay(1);//稍做延时dq=0;//单片机拉低总线delay(250);//精确延时,维持至少480usdq=1;//释放总线,即拉高了总线delay(100);//此处延时有足够,确保能让ds18b20发出存在脉冲。
}ucharRead_one_byte()//读取一个字节的数据readabytedate//读数据时,数据以字节的最低有效位先从总线移出{uchari=0;uchardat=0;for(i=8;i>0;i--){dq=0;//将总线拉低,要在1us之后释放总线//单片机要在此下降沿后的15us内读数据才会有效。
_nop_();//至少维持了1us,表示读时序开始dat>>=1;//让从总线上读到的位数据,依次从高位移动到低位。
dq=1;//释放总线,此后ds18b20会控制总线,把数据传输到总线上delay(1);//延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分if(dq)//控制器进行采样{dat|=0x80;//若总线为1,即dq为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0}delay(10);//此延时不能少,确保读时序的长度60us。