1-wire总线的基本通信协议(protues)
wire总线的基本通信协议protues
wire总线的基本通信协议protues Wire总线的基本通信协议——ProteusProteus是一款功能强大的电子设计自动化(EDA)软件,广泛应用于电子电路设计、仿真和调试等领域。
在Proteus中,Wire总线是常用的通信协议之一。
本文将介绍Wire总线的基本通信协议以及在Proteus中的应用。
一、Wire总线的基本通信协议Wire总线是一种串行通信协议,常用于短距离通信和连接多个设备。
它采用两根传输线,分别为SCL(串行时钟线)和SDA(串行数据线),通过数据的时序传输来完成通信任务。
在Wire总线中,通信的发送和接收是由主设备(Master)和从设备(Slave)之间的交互完成的。
主设备负责发起通信并控制通信的时序,从设备则被动响应主设备的指令并提供相应的数据。
具体的通信流程如下:1. 主设备发送起始信号(Start):主设备将SDA线从高电平拉低,然后将SCL线拉低,表示开始一次通信。
2. 主设备发送从设备地址和读/写信号:主设备将从设备的地址通过SDA线发送,并指定是读操作还是写操作。
3. 从设备响应主设备信号:从设备接收到地址后,将ACK信号(应答信号)通过SDA线发送给主设备,表示接收到地址。
4. 主设备发送数据:主设备将要发送的数据通过SDA线发送给从设备。
5. 从设备响应主设备信号:从设备接收到数据后,通过SDA线发送ACK信号给主设备,表示接收到数据。
6. 主设备发送停止信号(Stop):主设备将SDA线由低电平拉回高电平,然后将SCL线拉高,表示通信结束。
通过以上的通信流程,主设备和从设备可以实现数据的交互和控制的传输。
Wire总线的通信协议简单易懂,适用于各种场景。
二、Wire总线在Proteus中的应用在Proteus软件中,我们可以通过添加Wire总线来模拟电子电路中的通信过程。
下面将以一个简单的实例来介绍Wire总线在Proteus中的应用。
假设我们需要设计一个由主控芯片和多个从设备组成的系统。
用软件实现1-Wire-通信
摘要:在没有专用总线主机(如DS2480B、DS2482)的情况下,微处理器可以轻松地产生1-Wire 时序信号。
本应用笔记给出了一个采用…C‟语言编写、支持标准速率的1-Wire主机通信基本子程序实例。
1-Wire总线的四个基本操作是:复位、写“1”、写“0”和读数据位。
字节操作可以通过反复调用位操作实现,本文提供了通过各种传输线与1-Wire器件进行可靠通信的时间参数。
引言在没有专用总线主机的情况下,微处理器可以轻松地产生1-Wire时序信号。
本应用笔记给出了一个采用C语言编写、支持标准速率的1-Wire主机通信基本子程序实例。
此外,本文也讨论了高速通信模式。
要使该实例中的代码正常运行,系统必须满足以下几点要求:1. 微处理器的通信端口必须是双向的,其输出为漏极开路,且线上具有弱上拉。
这也是所有1-Wire总线的基本要求。
关于简单的1-Wire主机微处理器电路实例,请参见应用笔记4206:"为嵌入式应用选择合适的1-Wire主机"中的1类部分。
2. 微处理器必须能产生标准速度1-Wire通信所需的精确1µs延时和高速通信所需要的0.25µs延时。
3. 通信过程不能被中断。
1-Wire总线有四种基本操作:复位、写1位、写0位和读位操作。
在数据资料中,将完成一位传输的时间称为一个时隙。
于是字节传输可以通过多次调用位操作来实现,下面的表1是各个操作的简要说明以及实现这些操作所必须的步骤列表。
图1为其时序波形图。
表2给出了通常线路条件下1-Wire主机与1-Wire器件通信的推荐时间。
如果与1-Wire主机相连的器件比较特殊或者线路条件比较特殊,则可以采用最值。
请参考可下载的工作表中的系统和器件参数,确定最小值和最大值。
表1. 1-Wire操作图1. 1-Wire时序图表2. 1-Wire主机时序计算这些值的工作表可供下载。
代码实例下面代码实例都依赖于两个通用的'C'函数outp和inp,从IO端口读写字节数据。
51单片机中的onewire_sendbyte的意思
在51单片机中,onewire_sendbyte是一个函数,用于向单总线(One-Wire)发送一个字节。
One-Wire是一种通信协议,它允许单个数据线在微控制器和外设之间进行通信。
该函数的作用是将一个字节数据发送(写入)到单总线上,以便与其他设备进行通信。
具体而言,onewire_sendbyte函数将接收一个字节数据作为参数,并将其写入到单总线上。
在函数内部,它会执行必要的逻辑来确保数据被正确地发送到单总线上。
这个函数通常用于在单片机与One-Wire 设备之间进行通信时,向设备发送指令或数据。
需要注意的是,具体的实现细节可能因不同的单片机型号而有所不同。
因此,如果您想了解更多关于onewire_sendbyte函数的详细信息,建议参考您所使用的单片机的开发文档或相关资料。
单总线协议详解
单总线协议详解单总线协议详解单总线即one-wire总线,是美国DALLAS公司推出的外围串行扩展总线技术。
与SPI、IC串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。
单总线是DALLAS公司研制开发的种协议由一个总线主节点、或多个从节点组成系统,通过根信号线对从芯片进行数据的读取。
每一个符合OneWire协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。
主芯片对各个从芯片的寻址依据这64位的不同来进行。
单总线利用一根线实现双向通信。
因此其协议对时序的要求较严格,如应答等时序都有明确的时间要求。
,基本的时序包括复位及应答时序、写一位时序、读一位时序。
在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读固或写出数据。
单总线适用于单主机系统,能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。
当只有一个从机设备时,系统可按单节点系统操作;当有多个从设备时,系统则按多节点系统操作。
单总线工作原理单总线器件内部设置有寄生供电电路(Parasite Power Circuit)。
当单总线处于高电平时,一方面通过二极管VD向芯片供电,另方面对内部电容C(约800pF)充电;当单总线处于低电平时,二极管截止,内部电容c向芯片供电。
由于电容c的容量有限,因此要求单总线能间隔地提供高电平以能不断地向内部电容C充电、维持器件的正常工作。
这就是通过网络线路窃取电能的寄生电源的工作原理。
要注意的是,为了确保总线上的某些器件在工作时(如温度传感器进行温度转换、E2PROM写人数据时)有足够的电流供给,除了上拉电阻之外,还需要在总线上使用MOSFET(场效应晶体管)提供强上拉供电。
1-Wire(单线)概述
会话 分时使用总线。这对于操作系统或几个进程或线程要求同时使用总线的情况下是非 常重要的。当多项操作在同一器件上运行而又不能被打断的时候,需要独占总线的使用 权。
链路 基本的 1-Wire 总线通信功能。所有的 1-Wire 总线的通信功能可以归结为:复位 所有的器件和读写位。这也包括设置总线电特性的功能,如提供专用的 EPROM 编程脉 冲或进行供电。
选定 1-Wire 器件
执行一个特定器件操作
每个受控器件的序列号的整数部分是一个 8 位的家族代码。这个代码对器件模型来说是 特定的。因为每种器件模型执行不同的功能,所以可以用代码来选择用于控制或者查询器件 的协议。表 1 是达拉斯半导体公司的器件型号的家族代码。
家族代码对照 表 1
家族代码
器件型号()iButton 封装
(DS1921Z)22 NhomakorabeaDS1822
23
(DS1973), DS2433
24
(DS1904), DS2415
26
DS2438
27
DS2417
28
DS18B20
one-wire 的标准电压
一、简介在电子工程领域中,one-wire总线是很常见的一种通信协议,它只需要一根数据线和一根地线,因此成本较低,应用广泛。
二、one-wire通信原理1. one-wire总线采用单独的一根线来传输数据和提供电源。
在通信过程中,控制器可以通过改变电压来控制数据传输。
2. one-wire通信采用时间分割多路复用的方式,节省了硬件成本,提高了系统的可靠性。
3. one-wire总线采用了独特的通信协议,可以在一个单一的总线上连接多个设备进行通信,因此在一些特定场景下具有一些独特的优势。
三、标准电压1. 标准电压是one-wire通信中一个非常重要的参数。
根据one-wire 协议规范,标准电压一般为3.3V或5V。
2. 标准电压的选择取决于具体的硬件设计和应用场景。
一般来说,3.3V的电压可在功耗上有更好的表现,而5V则能提供更远的通信距离及更强的抗干扰能力。
3. 在实际应用中,需根据物联网设备的功耗和通信距离来选择合适的标准电压。
四、标准电压的影响1. 电压的选择对one-wire总线的通信速率和稳定性有着直接的影响。
一个合适的电压可以保证通信的可靠性。
2. 标准电压也与one-wire设备的供电、传输距离、抗干扰能力等方面息息相关。
在进行物联网设备设计时,需要充分考虑标准电压。
五、调试和验证1. 在设计one-wire设备时,选择合适的标准电压后,需要进行调试和验证。
使用示波器或逻辑分析仪可以观测电压变化及数据传输情况,以确保通信的稳定性和可靠性。
2. 一些相关的测试设备也可以帮助验证设备对电压的适应性,以进一步保证设备的可靠性和稳定性。
六、结语在物联网设备设计中,one-wire总线的通信协议以及标准电压的选择对设备的稳定性、传输距离和抗干扰能力有着重要的影响。
在设计和调试时,需要充分考虑这些因素,以保证设备的性能和可靠性。
随着物联网技术的不断发展,我们也期待能够有更多的优秀的硬件和软件方案能够应用到更多的实际场景中,为人们的生活带来更多的便利和乐趣。
单总线(onewire)技术及应用
单总线技术及其应用单总线(1~Wire Bus)技术采用单根信号线,即传输时钟,又传输数据,而且数据传输是双向的,在其线路简单、硬件开销少、成本低廉、软件设计简单方面有着无可比拟的优势。
目前常用的微机与外设串行总线主要有我们熟悉的12C总线,SPI总线,SCI总线。
其中12C总线是以同步串行2线方式进行通信(一条时钟线,一条数据线),SPI总线是以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),SCI总线是以异步方式进行通讯(一条数据输入线,一条数据输出线)。
这些总线至少需要有两条或两条以上的信号线。
近年来,美国的达拉斯半导体公司(DALLAS SEMICONDUCTOR)推出了一套单总线(1-Wire Bus)技术,与上述总线不同,它采用单根信号线,即传输时钟,又传输数据,而且数据传输是双向的,在其线路简单、硬件开销少、成本低廉、便于总线的扩展和维护等优点。
单总线适用于单个主机系统,能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单总线器件,如图1所示,他们之间的数据交换只通过一条数据线。
当只有一个从机设备时系统可按单节点系统操作;当有多个从机设备时,则系统按多节点系统操作。
单总线工作原理顾名思义,单总线只有一根数据线系统中的数据交换、控制都在这根线上完成。
设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,这样允许设备不发送数据时释放总线,以便其他设备使用总线,其内部等效电路如图2所示。
单总线要求外接一个约4.7Ω的上拉电阻,这样当总线闲置时,状态为高电平。
主机和从机之间的通信通过以下三个步骤完成:初始化1-wire器件,识别1-wire器件,交换数据。
由于二者是主从结构,只有主机呼叫从机时,从机才能答应,因此主机访问1-wire器件都必须严格遵循单总线命令序列:初始化、ROM命令、功能命令。
如果出现序列混乱,1 -wire器件不会响应主机(搜索ROM命令,报警搜索命令除外)。
1-Wire软件资源指南和驱动程序说明
Java OWAPI OWAPI OWAPI OWAPI OWAPI
图 2. API 功能集
会话
分时使用 1-Wire 总线。这对于操作系统或几个进程或线程尝试同时使用同一总线的情况下是非常重要 的。当多项操作在同一器件上运行而又不能被打断的时候,需要独占总线的使用权。
链路
基本的 1-Wire 总线通信功能。 所有的 1-Wire 总线通信功能可以归结为:复位所有的器件和读写位。这 也包括设置总线电特性的功能,如提供专用的 EPROM 编程脉冲或进行供电。
是 执行其它 操作吗?
否 会话 释放 1-Wire 的独占式使用权
其它 处理申请表中的其它任务
AN155
iButton通信实质上是通过与其触头相接触来实现的。这意味着与器件的联系有时是不可靠的。iButton也可 能被安装到阅读器里,在阅读的时候弹出,从而必须有一个相容的纠错方法紧跟其后。当检测到虚假错误 时必须重发数据并在数据通信中进行CRC校验。API中的文件输入输出功能所利用的标准文件结构在 应用 笔记 114 (English only) 1-Wire File Structure中进行了详细说明。这种结构在每页数据上都使用CRC16, 以快速地校验所读数据的正确性。大多数 1-Wire API功能很少或者不能自动重发。重发受应用软件控制。 应用笔记 159 (English only)绝对可靠的 1-Wire通信 讲述了纠错方法和 1-Wire通信的风险评估。
图 3 概括了使用这些功能的典型顺序。‘会话’功能围绕着调用器件进行通信,具有代表性的是先使用一 个‘网络’功能,然后运行存储器或‘器件’的特定操作。
3
10/11/05
图 3. API 用法流程
会话 获取 1-Wire 的独占式使用权
1-wire总线说明
摘要:本应用笔记介绍了嵌入式应用中的四类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通信线路获取电源。
1wire总线协议
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总线协议有望在更多的领域得到应用和推广。
第二章 1-Wire通信协议
表1、DS18B20功能命令集
命令 描述 命令代码 发送命令后,单总线上的响 应信息 注释 温度转换命令 转换温度 启动温度转换 存储器命令 读暂存器 读全部的暂存器内容,包括CRC字节 BEh DS18B20传输多达9个字节至 主机 主机传输3个字节数据至 DS18B20 2 44h 无 1
写暂存器
时序
ARM(32-B RISC)
第二章 1-Wire通信协议
概述 标准模式和高速模式 复位脉冲 写0时隙 写1时隙 读时隙 强上拉供电时隙(为总线提供额外的电源电流,用 于EPROM/EEPROM编程、温度转换、SHA-1计算等)
1 概述
单总线要求外接一个约5k的上拉电阻 ;
1 概述
单总线的闲置状态为高电平 ; 传输过程需要暂时挂起,且要求传输过 程还能够继续的话,则总线必须处于空 闲状态 ; 总线保持低电平超过480µs,总线上的所 有器件将复位; 位传输之间的恢复时间没有限制,只要 总线在恢复期间处于空闲状态。
4.5 读时序
单总线器件仅在主机发出读时隙时,才向主机传输数 据,在主机发出读数据命令后,必须马上产生读时隙, 以便从机能够传输数据。 读时隙至少需要60µs,且在两次独立的读时隙之间至 少需要1µs的恢复时间。 每个读时隙都由主机发起,至少拉低总线1µs。在主机 发起读时隙之后,单总线器件才开始在总线上发送0或 1。 若从机发送1,则保持总线为高电平;若发送0,则拉 低总线。当发送0时,从机在该时隙结束后释放总线, 由上拉电阻将总线拉回至空闲高电平状态。从机发出 的数据在起始时隙之后,保持有效时间15µs,因而, 主机在读时隙期间必须释放总线,并且在时隙起始后 的15µs之内采样总线状态。
2 单总线命令序列
主机发起读写命令并控制整个过程。 读写命令分三个阶段: 初始化 ROM命令(跟随需要交换的数据) 功能命令(跟随需要交换的数据)
单总线(onewire)技术及应用
单总线(onewire)技术及应用预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制单总线技术及其应用单总线(1~Wire Bus)技术采用单根信号线,即传输时钟,又传输数据,而且数据传输是双向的,在其线路简单、硬件开销少、成本低廉、软件设计简单方面有着无可比拟的优势。
目前常用的微机与外设串行总线主要有我们熟悉的12C总线,SPI 总线,SCI总线。
其中12C总线是以同步串行2线方式进行通信(一条时钟线,一条数据线),SPI总线是以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),SCI总线是以异步方式进行通讯(一条数据输入线,一条数据输出线)。
这些总线至少需要有两条或两条以上的信号线。
近年来,美国的达拉斯半导体公司(DALLAS SEMICONDUCTOR)推出了一套单总线(1-Wire Bus)技术,与上述总线不同,它采用单根信号线,即传输时钟,又传输数据,而且数据传输是双向的,在其线路简单、硬件开销少、成本低廉、便于总线的扩展和维护等优点。
单总线适用于单个主机系统,能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单总线器件,如图1所示,他们之间的数据交换只通过一条数据线。
当只有一个从机设备时系统可按单节点系统操作;当有多个从机设备时,则系统按多节点系统操作。
单总线工作原理顾名思义,单总线只有一根数据线系统中的数据交换、控制都在这根线上完成。
设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,这样允许设备不发送数据时释放总线,以便其他设备使用总线,其内部等效电路如图2所示。
单总线要求外接一个约4.7?的上拉电阻,这样当总线闲置时,状态为高电平。
主机和从机之间的通信通过以下三个步骤完成:初始化1-wire器件,识别1-wire器件,交换数据。
由于二者是主从结构,只有主机呼叫从机时,从机才能答应,因此主机访问1-wire器件都必须严格遵循单总线命令序列:初始化、ROM命令、功能命令。
proteus总线使用方法全解
图1 2、在 proteus 中画一条总线,再将所要用总线连接的引脚与导线连接,如图2所示。
图2 3、正确选中总线(变成红色),如图3。
图3 4、点击菜单栏的“工具”,选择“属性分配工具”,如图4,或输入 A 打开图5所示。
图4
图5 5、更改设置如图6所示。NET=D#, Count=0,Increment=,表示编号由 D0开始,每次加1。
图6 6、设置完毕后,将鼠标点击与总线连接的引脚点第一下,显示 D0,依次往前移动,逐个加1, 如图7所示,设置第一个总线完毕后,在设置第二个总线时须重复步骤4、5,重新设置编号从 D0开始。使之与前一个总线编号一致,这样才可以将两总线建立联系。
DS28E01-1001-Wire总线
1-Wire?串行存储器产品提供EEPROM和EPROM存储矩阵,能够通过单线1-Wire接口供电并传输数据。当主控制器与存储器的连线受限制时,或需要工厂提供唯一的器件序列号时,1-Wire接口与其它工业标准接口(I2C?或SPI?等)相比,将充分显示出巨大优势。1-Wire产品仅仅需要两条连线,即可保证器件全速运行;而I2C存储器需要4条连接、SPI存储器则需要5条连线。
存储器和SHA功能命令
Read Scratchpad [0xAA] : 发命令后, 返回= 目标地址(2)+偏移/状态(1)+寄存器(8)
Copy Scratchpad [0x55] : 启动暂存器到存储器的数据传输
借助唯一的64位器件序列号和网络操作命令协议,1-Wire存储器允许多个器件挂接在同一条1-Wire总线上,并可独立工作。1-Wire存储器提供从SW可编程写保护到利用工业标准安全散列算法(SHA-1)实现的低成本、加密、双向认证的安全特性。利用单线连接和地回路,一个独立的控制器口线即可构成1-Wire接口,使系统成本降至最低。
4. 发MAC
5. 等13ms
6. 返回信息 AA(成功) FF 00
密码+数据页+注册码+随机数(主机传的) ----SHA---->MAC
MAC : 20 * 8 byte
通过1-Wire总线访问DS28E01-100 指定存储器页的所有数据(32) + 注册码的前7字节 + 5字节的质询码=56
读存储页->将激活SHA-1引擎来计算160位MAC
1-Wire总线是一种简单的信号电路,它仅用一根数据线即可与外界进行信息交换。(DS28E01-100)
单片机1-Wire总线原理与EEPROM读写方法
敬请登录网站在线投稿2018年第10期15单片机1W i r e总线原理与E E P R O M读写方法黄淑蓉(珠海市光联通讯技术有限公司OM S/软件组,珠海519030)摘要:用K20系列的单片机I/O接口读写1W i r e总线E E P R OM㊂简单介绍了1W i r e原理㊁通信协议,并对D S28E04的操作时序做了描述㊂用单片机I/O接口控制1W i r e E E P R OM,线路简单㊁硬件开销少㊁成本低廉,软件对复位㊁写1位㊁写0位和读位4种操作的时序正确即可实现读写E E P R OM㊂关键词:单片机;读写;D S28E04中图分类号:T P273文献标识码:AP r i n c i p l e o f1-W i r e B u s a n d R e a d i n g a n d W r i t i n g M e t h o d o f E E P R O MH u a n g S h u r o n g(S o f t w a r e G r o u p OM S,O P L I N K C o mm u n i c a t i o n s,Z h u h a i519030,C h i n a)A b s t r a c t:I n t h e p a p e r,t h e I/O p o r t o f K20s e r i e s M C U i s u s e d t o r e a d a n d w r i t e1-W i r e b u s E E P R OM.T h e p r i n c i p l e a n d c o mm u n i c a-t i o n p r o t o c o l o f1-W i r e a r e b r i e f l y i n t r o d u c e d,a n d t h e o p e r a t i o n s e q u e n c e o f D S28E04i s d e s c r i b e d.U s i n g I/O p o r t t o c o n t r o l t h e1-W i r e E E P R OM l i n e i s s i m p l e,t h e h a r d w a r e c o s t i s l e s s a n d t h e c o s t i s l o w.I f a l l o f t h e f o u r o p e r a t i o n t i m e s e q u e n c e a b o u t r e s e t,w r i t i n g1b i t, w r i t i n g0b i t a n d r e a d i n g b i t a r e c o r r e c t,w e c a n r e a l i z e r e a d i n g a n d w r i t i n g E E P R OM.K e y w o r d s:m i c r o c o n t r o l l e r;r e a d i n g a n d w r i t i n g;D S28E04引言本文的单片机型号为K20系列的M K20D N512Z V L L 10N;1W i r e E E P R O M的型号为D a l l a s S e m i c o n d u c t o r的D S28E04㊂D a l l a s S e m i c o n d u c t o r的1W i r e总线是一种简单的信号交换架构,通过一条线路在主机与外围器件之间进行双向通信㊂电源和数据通信通过单根数据线传输,使得1W i r e器件具有无与伦比的强大功能,可减少系统间的互联㊂由于1W i r e器件是集成度高㊁功能丰富且外接简单的单总线网络器件,因而无论在自动化系统或者是通信工程及金融安全等领域应用非常广泛,又由于具有使用方便㊁体积小等特点,故既适合各类系统开发,又适用于智能化或小型仪器仪表的制造,因此受到设计者及制造厂商的欢迎㊂11W i r e的工作原理1.1内部等效图单总线即只有一根数据线,系统中的数据交换㊁控制都由这根线完成㊂设备(主机或从机)通过一个漏极开路或三态端口连接至该数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线,其内部等效电路如图1所示㊂图1内部等效图单总线通常要求外接一个约为4.7kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平㊂1.2总线结构主机和从机之间的通信可通过3个步骤完成,分别为初始化1W i r e器件㊁识别1W i r e器件和交换数据㊂由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1W i r e器件都必须严格遵循单总线命令序列,即初始化㊁R OM㊁命令功能命令㊂如果出现序列混乱,1W i r e器件将不响应主机(搜索R OM命令㊁报警搜索命令除外)㊂单主机多从机示意图如图2所示㊂16M i c r o c o n t r o l l e r s &E m b e d d e d S ys t e m s 2018年第10期w w w .m e s n e t .c o m .c n图2 单主机多从机示意图1.3 1W i r e 的特点所有的1W i r e 总线都具有一个共同的特征:每个从机器件都有一个互不重复的㊁工厂光刻的序列号㊂因此,每个器件都是唯一的,这样就允许从众多连到同一总线的器件中独立选择任何一个器件㊂当1个㊁2个甚至多个1W i r e 器件能共用一条线路进行通信,可以采用二进制位检索法依次查找每一个器件㊂一旦器件的序列号已知,通过寻址该序列号就可以唯一地选出该器件进行通信㊂1.4 1W i r e 通信所有通信的第一步都需要总线控制器发出一个复位信号以使总线同步,然后选择一个从机进行随后的通信,这可以通过选择所有的从机或者选择一个特定的从机(利用该器件的序列号进行选择)或者通过对半检索法找到总线上的下一个从机来实现㊂一旦一个从机被选中,那么在下次复位信号发出之前,所有其他从机都被挂起而忽略随后的通信㊂一旦一个从机被用于总线通信,主机就能向它发出特定的器件指令,对它进行数据读写㊂这是因为每类器件具有不同的功能和不同的用途,而且一旦器件被选定,就有了唯一的协议㊂虽然每类器件具有不同的协议和特征,但其工作过程却是相同的并且遵循如图3所示的工作流程㊂图3 通信流程2 M K 20D N 512Z V L L 10N 单片机简述F r e e s c a l e K 20MK 20D N 512Z V L L 10N 拥有A R MC o r t e x M 4内核,其主频㊁S R AM ㊁F L A S H ㊁I /O 数量等参数详见表1的第二行㊂表1 F r e e s c a l e K 20参数F r e e s c a l epa r t n u mb e r C P U频率/MH z 引脚数封装T o t a l F L A S H m e m o r y/K B P r o gr a m F L A S H /K B E E P R OM /K B S R AM /K B G P I O MK 20D X 256Z V L L 10100100L Q F P 51225646566MK 20D N 512Z V L L 10100100L Q F P512512128663 1W i r e D S 28E 04简述D S 28E 04100是4096位1W i r e E E P R OM 芯片,带有7个地址输入端㊂D S 28E 04工作模式包括:标准速率模式,速率为15.3k b p s ;高速速率模式,速率为111k b ps ㊂4 K 20M C U 如何读写1W i r e D S 28E 044.1 系统要求系统要求M C U 的I /O 口必须是双向的,其输出为漏极开路,且线上具有弱上拉;M C U 必须能产生标准速度1W i r e 通信所需的精确1μs 延时和高速通信所需要的0.25μs 延时;M C U 与E E P R OM 通信过程中不能被中断㊂4.2 两种速率对1W i r e 总线操作要求1W i r e 总线有4种基本操作:复位㊁写1位㊁写0位和读位操作㊂表2是各个操作的简要说明以及实现这些操作所必需的步骤列表㊂图4为其时序波形图㊂表3给出了通常线路条件下1W i r e 主机与1W i r e 器件通信的推荐时间㊂如果与1W i r e 主机相连的器件比较特殊或者线路条件比较特殊,则可以采用最值㊂请参考可下载的工作表中的系统和器件参数确定最小值和最大值㊂表2 1W i r e 操作O pe r a t i o n D e s c r i pt i o n I m p l e m e n t a t i o n W r i t e 1b i t S e n d a '1'b i t t o t h e 1-W i r e s l a v e s (W r i t e 1t i m e s l o t)D r i v e b u s l o w ,d e l a y AR e l e a s e b u s ,d e l a y BW r i t e 0b i t s e n d a '0'b i t t o t h e 1-W i r e s l a v e s (W r i t e 0t i m e s l o t)D r i v e b u s l o w ,d e l a y CR e l e a s e b u s ,d e l a y DR e a d b i tR e a d a b i t f r o m t h e 1-W i r e s l a v e s (R e a d t i m e s l o t )D r i v e b u s l o w ,d e l a y A R e l e a s e b u s ,d e l a y ES a m pl e b u s t o r e a d b i t f r o m s l a v eD e l a y FR e s e tR e s e t t h e 1-W i r e b u s s l a v e d e v i c e s a n d r e a d y t h e m f o r a c o mm a n d D e l a y GD r i v e b u s l o w ,d e l a y HR e l e a s e b u s ,d e l a y I S a m pl e b u s ,0=d e v i c e (s )p r e s e n t ,1=n o d e -v i c e p r e s e n t D e l a y JD S 28E 04的复位㊁写1㊁写0和读位时序图如图5所示㊂本文单片机以标准模式读写D S 28E 04,按照图5要求的时序编写驱动D S 28E 04的函数㊂代码经过验证,无论是单个地址还是整片读写,均可以正确操作,请放心使用㊂敬请登录网站在线投稿2018年第10期17图41W i r e时序图表31W i r e主机与从机通信推荐时间表参数速率推荐/μs A标准6.0高速1.0B标准64.0高速7.5C标准60.0高速7.5D标准10.0高速2.5E标准9.0高速1.0F标准55.0高速7.0G标准0.0高速2.5H标准480.0高速70.0I标准70.0高速8.5J标准410.0高速40.0图5D S28E04读/写时序图结语飞思卡尔(现被恩智浦半导体收购)的单片机从8位到16位,再到今天的32位,具有出类拔萃的低功耗性能和功能扩展性㊂作为全球首屈一指的嵌入式电子解决方案供应商,飞思卡尔半导体从1994年起便与国内大学在技术培训应用研究方面合作,发展迅速㊂采用单片机I/O 口控制1W i r e E E P R OM,线路简单㊁硬件开销少㊁成本低廉㊁软件设计简单,有着广阔的应用前景㊂参考文献[1]MA X I M.D S28E04.p d f[E B/O L].[201807].h t t p://w w w.m a x i m-i c.c o m.[2]百度词条.1W i r e[E B/O L].[201807].w w w.b a i d u.c o m.[3]MK20D N512Z V L L10N D.p d f[E B/O L].[201807].h t-t p://w w w.n x i p.c o m.(责任编辑:薛士然收稿日期:2018-07-06)N e t w o r k s i n t o I n t e r n e t o f T h i n g s[C]//I E E E/I F I P I n t e r n a t i o n-a l C o n f e r e n c e o n E mb e d d e d a n d U b i q u i t o u s C o m p u t i n g,2010.[8]M e h m e t F a t i h K a r a g o e z.D e s i g n a n d I m p l e m e n t a t i o n o fR E S T f u l W i r e l e s s S e n s o r N e t w o r k G a t e w a y s U s i n g N o d e.j sF r a m e w o r k[C]//E u r o p e a n W i r e l e s s20t h E u r o p e a n W i r e l e s sC o n f e r e n c e,2014.[9]唐姝妮.面向物流车辆的网络高并发I/O系统的设计与实现[D].成都:电子科技大学,2016.[10]万里晴,杨浩.探究基于V8引擎的N o d e.j s在各应用领域的发展[J].通讯世界,2015(13):97.[11]王金龙,宋斌,丁锐.N o d e.j s:一种新的W e b应用构建技术[J].现代电子技术,2015,38(6):7073.王静如(硕士研究生),主要研究方向为嵌入式系统㊁物联网㊁脚本语言;何顶新(副教授),主要研究方向为计算机控制技术㊁嵌入式系统应用等㊂(责任编辑:薛士然收稿日期:2018-06-22)。
1-wire总线的基本通信协议(protues)
1-Wire总线的基本通信协议作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。
为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5k>左右)。
主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。
复位、读和写是1-Wire总线通信的基础,下面通过具体-程序详细介绍这3种操作的时序要求。
(程序中DQ代表1-Wire 总线,定义为P1.0,uchar定义为unsigned char)11-Wire总线的复位复位是1-Wire,总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。
如程序1.1所示,产生复位信号时主机首先将总线拉低480-960μs然后释放,由于上拉电阻的存在,此时总线变为高电平。
1-Wire总线器件在接收到有效跳变的15-60μs内会将总线拉低60>240μs,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。
函数Reset()的返回值为0表示有器件挂接在总线上,返回值为1表示没有器件挂接在总线上。
程序1.1总线复位在DS18820中共有三种存储器,分别是ROM、RAM、EEPROM,每种存储器都有其特定的功能,可查阅相关资料。
31-Wire总线ROM功能命令在DS18820内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。
当总线上挂接着多个DS18820时可以通过ROM编码对特定器件进行操作。
ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。
①读ROM(33H)当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。
总线上挂接有多个DS18820时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。
1-wire总线多点温度检测显示系统在Proteus中的仿真实现
1-wire总线多点温度检测显示系统在Proteus中的仿真实现王艳;王丽娟;甄姬娜
【期刊名称】《制造业自动化》
【年(卷),期】2013(035)013
【摘要】本文利用Proteus软件设计了4通道环境温度检测显示系统,温度传感器采用Dallas公司的数字温度传感器DS18B20检测各通道温度数据,4通道温度数据经由1-wlre总线传送至单片机STC89C52,温度数据经单片机处理后传送至液晶显示器LM032L显示.采用Kell软件和C51语言设计、编写单片机和多个
DS18B20的通信程序流程以及显示程序流程.并通过Proteus软件仿真.
【总页数】5页(P52-56)
【作者】王艳;王丽娟;甄姬娜
【作者单位】郑州升达经贸管理学院信息工程系,郑州451191;郑州升达经贸管理学院信息工程系,郑州451191;郑州升达经贸管理学院信息工程系,郑州451191【正文语种】中文
【中图分类】TP273.1
【相关文献】
1.基于1-Wire总线技术的远程多点温度采集系统解决方案 [J], 杜军
2.基于RS-485、1-Wire总线的远程多点温度采集系统解决方案 [J], 段波
3.单总线多点温度监测显示系统设计与仿真 [J], 李壮辉;李连合;朱清慧
4.1-Wire总线在农业温度监测系统中的应用 [J], 窦龙超;郑永春;霍艳忠
5.基于单片机的多点温度测量系统的PROTEUS设计与仿真 [J], 陈亚娟
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1-Wire总线的基本通信协议作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。
为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5k>左右)。
主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。
复位、读和写是1-Wire总线通信的基础,下面通过具体-程序详细介绍这3种操作的时序要求。
(程序中DQ代表1-Wire 总线,定义为P1.0,uchar定义为unsigned char)11-Wire总线的复位复位是1-Wire,总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。
如程序1.1所示,产生复位信号时主机首先将总线拉低480-960μs然后释放,由于上拉电阻的存在,此时总线变为高电平。
1-Wire总线器件在接收到有效跳变的15-60μs内会将总线拉低60>240μs,在此期间主机可以通过对DQ采样来判断是否有从器件挂接在当前总线上。
函数Reset()的返回值为0表示有器件挂接在总线上,返回值为1表示没有器件挂接在总线上。
程序1.1总线复位在DS18820中共有三种存储器,分别是ROM、RAM、EEPROM,每种存储器都有其特定的功能,可查阅相关资料。
31-Wire总线ROM功能命令在DS18820内部光刻了一个长度为64bit的ROM编码,这个编码是器件的身份识别标志。
当总线上挂接着多个DS18820时可以通过ROM编码对特定器件进行操作。
ROM功能命令是针对器件的ROM编码进行操作的命令,共有5个,长度均为8bit(1Byte)。
①读ROM(33H)当挂接在总线上的1-Wire总线器件接收到此命令时,会在主机读操作的配合下将自身的ROM编码按由低位到高位的顺序依次发送给主机。
总线上挂接有多个DS18820时,此命令会使所有器件同时向主机传送自身的ROM编码,这将导致数据的冲突。
②匹配ROM(55H)主机在发送完此命令后,必须紧接着发送一个64bit的ROM编码,与此ROM编码匹配的从器件会响应主机的后续命令,而其他从器件则处于等待状态。
该命令主要用于选择总线上的特定器件进行访问。
③跳过ROM(CCH)发送此命令后,主机不必提供ROM编码即可对从器件进行访问。
与读ROM命令类似,该命令同样只适用于单节点的1-Wire,总线系统,当总线上有多个器件挂接时会引起数据的冲突。
④查找ROM(FOH)当主机不知道总线上器件的ROM编码时,可以使用此命令并配合特定的算法查找出总线上从器件的数量和各个从器件的ROM编码。
⑤报警查找(ECH)此命令用于查找总线上满足报警条件的DS18820,通过报警查找命令并配合特定的查找算法,可以查找出总线上满足报警条件的器件数目和各个器件的ROM编码。
4DS18820器件功能命令与1-Wire总线相关的命令分为ROM功能命令和器件功能命令两种,ROM功能命令具有通用性,不仅适用于DS18820也适用于其他具有1-Wire总线接口的器件,主要用于器件的识别与寻址;器件功能命令具有专用性,它们与器件的具体功能紧密相关。
下面是DSl8820的器件功能命令。
①启动温度转换(44H)该命令发送完成后,主机可以通过调用Readbit()函数判断温度转换是否完成,若Readbit()的返回值为0则表示转换正在进行,若Readbit()的返回值为1则表示转换完成。
②读RAM(BEH)该命令发送完成后,主机可以通过调用Readbit()函数将DSl8820中RAM的内容从低位到高位依次读出。
③写RAM(4EH)该命令发出后,主机随后写入1-Wire总线的3字节将依次被存储到DS18820的报警上限、报警下限和配置寄存器中。
④复制RAM(48H)该命令会将DSl8820的报警上限、报警下限和配置寄存器中的内容复制到EEPROM中。
该命令发出后,主机可以通过调用Readbit()函数判断复制操作是否完成,若Readbit()的返回值为1,则表示复制操作完成。
⑤回读EEPROM(B8H)该命令会将存储在EEPROM中的报警上限、报警下限和配置寄器的内容回读到RAM 中,主机可以通过调用Readbit()函数判断回读操作是否完成,若Readbit()的返回值为1则表示回读操作完成。
DS18820在上电时会自动进行一次回读操作。
5主机与DS18820的通信流程如图1所示,主机通过1-Wire总线接口对DS18820的每次访问都以复位信号和ROM 功能命令开始,访问的结束位置是不确定的,这与具体的功能命令相关。
图中圆角矩形中的操作与主机发送的功能命令相对应,随着功能命令的不同圆角矩形中的操作有时可以被省略。
对总线上的DS18820来说,复位信号意味着又一次通信的开始,器件对此的响应是拉低总线以告知主机自身的存在,然后准备接收ROM功能命令。
多点测温系统仿真实例DS18820是一种比较廉价的温度传感器,其封封装形式如图2所示。
在Proteus中包含有DS18820的仿真模型,这使得相关程序的调试变得简单方便。
下面以一个实例介绍用Proteus仿真多点测温系统的步骤。
①绘制仿真原理图如图3所示,在本实例中以单片机A T89C52和8个DS18820构成了一个多点测温系统。
为了有足够的空间存储各个DS18820的ROM编码和温度值,在实例中用一片8KB的sRAM 芯片6116对单片机的RAM进行了扩展。
②设置DS18820仿真模型的属性首先右击选中protues编辑区中的DS18820仿真模型然后再左击,此时弹出如图4所示的属性设置对话框。
其中,Family Code是器件的家族码,对于DS18820来说是28H。
ROM Serial Number对应于器件的48bit序列号,格式为十六进制,在填写过程中要保证同一条l —wire总线上所有仿真模型的ROM Serial Number都不相同。
Automatic Serialization设置为No时仿真模型将使用ROM Serial Number中的序列号,设置为Yes时模型的序列号将由仿真环境自动生成,在此设置为Yes,这样可以免去手动修改ROMSerial Number的麻烦。
Current Value中是仿真模型当前的温度值。
Cranularity中是单击仿真模型的温度值增减按钮时温度值的改变量,在此设置为1.1。
其他选项保持默认即可。
单击OK按钮,设置完成。
③编制源程序主机是通过Reset()、Readbit()、Writebit()三种基本操作与1-Wire总线进行通信的,只要这三个函数的时序准确,那么对于有一定C语言编程基础的用户来说程序其他部分的编写将不是难事,按照前面介绍的流程向总线发送功能命令并进行相应读写操作即可。
多点测温系统编程的难点在于器件的查找,系统上电时主机首先要查找总线上挂接着多少个1-Wire 器件并将各个器件的ROM编码读入单片机的RAM中,这需要一套复杂的算法,限于篇幅关于此算法在此不再详述。
本仿真实例大体工作过程如图3右下角注释部分所示,“查找总线上所有器件的ROM编码并存储”这一步可以由uchar B20ReadROM(uchar B20ROM[]函数完成,该函数的返回值是查找到的器件数目,各个器件的ROM编码将存储在二维数组B20ROM[]中。
“统一开始温度转换”的通信流程为:发送复位信号;发送跳过ROM(CCH)命令;发送启动温度转换(44H)命令。
“逐器件读取温度值”的通信流程为:发送复位信号,发送匹配ROM(55H)命令;发送第i(i=0>7)个器件的ROM编码;发送读RAM(BEH)命令;读取2字节,其中低字节在前,高字节在后,读取到的值符合温度值数据格式。
④在Proteus中添加监视变量为了检验程序运行的正确与否,通常的做法是将运行结果通过单片机的UART接口输出到虚拟终端上,这种方法的缺点是会占用一定的单片机资源,在此介绍另外一种程序调试技巧一一监视变量。
在Proteus的运行状态下点击Debug→Watch Window会弹出监视窗口(watch window),然后按下Alt+A键会弹出如图5所示的添加存储器条目对话框(Add Memory Item)。
所谓监视变量也就是监视相应存储单元中的内容,图5中Memory用于选择待监视变量所在的存储器;Name用于填写变量名称,为了含义清晰该名称最好与源程序中定义的变量名称一致;Address用于填写待监视变量的地址;Data Type和Display Fomat用于设置数据格式和显示格式。
设置完成后单击Add按钮即可添加一个监视变量。
在本实例中将测量到的温度值转化成A CSLL码字符串的格式存储在二维数组TempBuffer中,因此Data Type 选择为ASCLLZ String,Watch Window的最终结果如图6所示。
Value一栏中显示的即为8个DS18820测量到的温度值,单击仿真模型的温度增减按钮温度值的改变会自动映射在watchWindow中。
图6中TempBuffer[i](i=0>7)的地址在Keil中可以按以下步骤得到:>单击Keil工具栏中的@按钮,进入调试状态。
>通过View→Output Window菜单调出Keil的Output Window,并选中Command标签。
>在Output Window的命令输入区输入TempBuffer[i]然后回车即可得到TempB uffer[i]的地址,在本实例中i=0>7。
对于非数组类型的变量在输入时需要在变量名前加取地址符号&,如图7所示。
“统一开始温度转换”的通信流程为:发送复位信号;发送跳过ROM(CCH)命令;发送启动温度转换(44H)命令。
“逐器件读取温度值”的通信流程为:发送复位信号,发送匹配ROM(55H)命令;发送第i(i=0>7)个器件的ROM编码;发送读RAM(BEH)命令;读取2字节,其中低字节在前,高字节在后,读取到的值符合温度值数据格式。
④在Proteus中添加监视变量为了检验程序运行的正确与否,通常的做法是将运行结果通过单片机的UART接口输出到虚拟终端上,这种方法的缺点是会占用一定的单片机资源,在此介绍另外一种程序调试技巧一一监视变量。
在Proteus的运行状态下点击Debug→Watch Window会弹出监视窗口(watch window),然后按下Alt+A键会弹出如图5所示的添加存储器条目对话框(Add Memory Item)。
所谓监视变量也就是监视相应存储单元中的内容,图5中Memory用于选择待监视变量所在的存储器;Name用于填写变量名称,为了含义清晰该名称最好与源程序中定义的变量名称一致;Address用于填写待监视变量的地址;Data Type和Display Fomat用于设置数据格式和显示格式。