上逐步阐述了如何充分利用1-Wire

合集下载

1-WIRE总线详解

1-WIRE总线详解

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。

在iButton-应用中通过软件方法实现可靠的1-Wire-通信

在iButton-应用中通过软件方法实现可靠的1-Wire-通信

摘要:1-Wire器件利用一条数据线和地参考端进行通信。

使用不锈钢iButton封装的1-Wire器件时,协议还对处理断续连接(“接触”)方式做出了特殊规定。

该应用笔记讨论了在实现高度可靠的iButton设计中可以采用的技术和注意事项,以保证数据完整性。

读者应首先熟悉1-Wire总线的通信协议和利用微控制器产生1-Wire通信时序的方法。

本文讨论的内容主要关注的是在连接不可靠的环境下的应用,但也提出了几种改善1-Wire硬件可靠性设计的方案。

引言1-Wire器件利用一条数据线和地参考端进行通信。

1-Wire协议配合一些附加的内嵌功能使得iButton非常适合处理需要断续连接(“接触”)的应用。

当iButton用于高度安全的认证或支付交易时,高可靠性通信非常重要。

通用的1-Wire器件通信通常包括:搜索(识别总线上的器件)、读器件识别码(网络地址、注册码、64位唯一ID、64位光刻ROM)、读器件数据或状态、写存储器或控制数据等功能。

有些情况下,软件很容易检测到通信失败并加以修正。

比如,读取时发生错误时,软件会尝试重新读取iButton,或者由用户移走并重新加载iButton启动一次新的交易。

这些修正操作通常只会引起小的延时或给用户带来稍许麻烦。

但是,向iButton器件写数据时情况要复杂得多。

如果在回读数据进行验证之前iButton发生故障,用户甚至不知道数据出现写错误。

如果写数据时发生错误,可能将没有机会重新写入。

因此,失败的写操作会导致非常严重的后果。

例如,当iButton内部存储货币数据时,借方(买方)在每次购买时都要向iButton中写入改变后的货币数量。

如果数据更新时发生任何错误,都会破坏iButton的数据,用户可能丢失他们全部的货币余额。

通过断续连接实现1-Wire通信的软件设计必须经过周密的设计,以便在发生故障时能够重新操作。

软件开发人员必须考虑在操作失败时可能发生的任何状况。

快速检测到故障要比在随后作出快速的系统响应更重要,能够降低错误地更新(覆盖) iButton数据的危险。

1-Wire总线技术的通信特点及其应用

1-Wire总线技术的通信特点及其应用

Th mm u ia in a a t r t f - i sT c n lg e Co nc t sCh r ce i i o W r Bu e h oo y o sc 1 e
GU O i LIBi Le , n
( c o l f tmainW u a i . f e h, h n4 0 7 , ia) S h o Auo t h nUnv o T c . o o Wu a 3 0 0Chn
Ab t a t s r c :DALLAS Co p r to ’ 1 W ie b st c n l g a n o r o a i n S - r u e h o o y h s i c mp r b e a p i a i n p o pe tb c u e isc r u ti i l .n a a l p lc to r s c e a s t ic i ss mp e a d wih f we ,h r wa e e p n e .1 W ie b s t c ol g a e u e n t e c r e s s e a d f ri e t i a i n o e t e r a d r x e s s 一 r u e h o y c n b s d i h ha g y t m n o d n i c to f t f h i e t y 1 W ie Sc d n i . 一 r ’ ommu i a i n i e i b e a d smpl , t p l a i n e a t n c to sr la l n i e isa p i to x mpl sa s r s n e n t e p p r c e i lo p e e t d i h a e . Ke wo d :1 W ie b s c mm u i a i n p o o o ; u c s i n; S1 b 0 y r s 一 r u ; o n c to r t c l s c e so D 8 2

1-wire总线接口应用

1-wire总线接口应用
学号:
实验日期:
成绩:
1-wire
实验目的
1、理解1-wire总线的工作时序。
2、掌握DS18B20传感器的使用方法。
3、理解不同数码之间的转换方法。
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
1、1-wire总线
近年来,美国的DALLAS公司推出了一项特有的单总线(1-Wire Bus)技术。该技术采用单根信号线进行数据传输。既可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。
1-wire总线的读位时序如图4-25所示。首先把总线拉成地电平约8μS,然后IO口为高电平释放总线。主机(单片机)约在开始后15μS读IO数据,再等待读时序结束(约45μS),最后释放总线,准备读下一位。位与位之间间隔没有限制,但至少1μS以上。
图4-25 1-wire总线读位时序图
总线复位时序如图4-26所示。主机先把总线拉成低电平并保持480μS-960μS,然后主机释放总线(变成高电平)约15μS-60μS,DS18B20发出存在信号(低电平60μS-240μS),然后DS18B20也释放总线,准备开始通信。
此命令读暂存存储器的内容读开始于字节0,并继续经过暂存存储器直至第九个字节字节8CRC被读出为止。主机可以在任何时候发出一复位以中止读操作。
复制暂存存储器Copy Scratchpad [48h]
此命令把暂存存储器复制入DS18B20的E2PROM存储器,把温度存储器字节存贮入非易失性存储器。如果由寄生电源供电总线主机在发出此命令之后必须能立即强制上拉至少10mS。
Skip ROM(跳过ROM)[CCh]
在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件,而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据会在总线上发生数据冲突漏极开路下拉会产生线与的效果。

1-wire 单总线原理

1-wire 单总线原理

附录 A ROM 搜索实例 ROM 搜索过程只是一个简单的三步循环程序 读一位 读该位的补码 写入一个期望
的数据位 总线主机在 ROM 的每一位上都重复这样的三步循环程序 当完成某个器件后 主机就能够知晓该器件的 ROM 信息 剩下的设备数量及其 ROM 代码通过相同的过程即可 获得
下面的 ROM 搜索过程实例假设四个不同的器件被连接至同一条总线上 它们的 ROM 代码如下所示
息 例如 主机通过在发出跳越 ROM 命令后跟随转换温度命令[44h] 就可以同时命令总线
上所有的 DS18B20 开始转换温度 这样大大节省了主机的时间 值得注意 如果跳越 ROM
命令跟随的是读暂存器[BEh]的命令 包括其它读操作命令 则该命令只能应用于单节点系
统 否则将由于多个节点都响应该命令而引起数据冲突
1-wire 单总线适用于单个主机系统 能够控制一个或多个从机设备 当只有一个从机位 于总线上时 系统可按照单节点系统操作 而当多个从机位于总线上时 则系统按照多节点 系统操作
为了较为全面地介绍单总线系统 将系统分为三个部分讨论 硬件结构 命令序列和信 号方式 信号类型和时序 二 硬件结构
顾名思义 单总线只有一根数据线 设备 主机或从机 通过一个漏极开路或三态端口 连接至该数据线 这样允许设备在不发送数据时释放数据总线 以便总线被其它设备所使用 单总线端口为漏极开路 其内部等效电路如图 1 所示
在主机检测到应答脉冲后 就可以发出 ROM 命令 这些命令与各个从机设备的唯一 64 位 ROM 代码相关 允许主机在单总线上连接多个从机设备时 指定操作某个从机设备 这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型 或者有没有设备 处于报警状态 从机设备可能支持 5 种 ROM 命令 实际情况与具体型号有关 每种命令 长度为 8 位 主机在发出功能命令之前 必须送出合适的 ROM 命令 ROM 命令的操作流 程如图 2 所示 下面将简要地介绍各个 ROM 命令的功能 以及使用在何种情况下

逻辑分析仪在1-Wire总线开发中的应用

逻辑分析仪在1-Wire总线开发中的应用

逻辑分析仪─从入门到精通讲座(22) 逻辑分析仪在1-Wire总线开发中的应用1.引言1-Wire总线是Dallas公司一项专有技术,它采用单根信号线即传输时钟又传输双向的数据,具有节省IO资源、布线简单、易于维护等诸多优点。

作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从机数量几乎不受限止。

为了不引起逻辑上的冲突,所有从机的1-Wire总线接口都是漏极开路的,因此在使用中必须对总线外加5kΩ左右的上拉电阻。

在1-Wire总线系统中,主机对从机的基本操作分为三种,分别是总线复位、总线写和总线读,这三种操作的时序精确与否直接影响着总线通信的速度和稳定性。

本文首先介绍基本的1-Wire总线通信协议,然后介绍如何借助逻辑分析仪来分析、优化1-Wire总线的通信时序。

2.1-Wire总线时序在1-Wire总线系统中,有三种基本的操作,分别是总线复位、总线写和总线读,系统中的所有数据传输都是由这三种基本操作组成的。

1-Wire总线有两种速度类型,分别为标准型和高速型,下面以较为常用的标准型为例进行说明。

总线复位的时序如图 1所示,主机首先拉低总线至少480μs然后释放,由于上拉电阻的存在,此时总线变为高电平。

1-Wire从机在接收到有效跳变的15~60μs后会将总线拉低60~240μs,在此期间主机可以通过对总线采样来判断是否有从机挂接到当前总线上。

图 1 总线复位时序总线写的时序如图 2所示,向1-Wire总线写一个位至少需要60μs,同时还要保证两次连续写操作有1μs以上的间隔。

若待写位为0,则写数据的过程为主机拉低总线60μs 然后释放,若待写位为1,则写数据的过程为主机拉低总线并在1~15μs之后释放,然后等待45μs。

由于只有一条IO线,1-Wire总线中的写操作只能由低位到高位逐位进行,连续写8次即可写入一个字节。

图 2 总线写时序总线读的时序如图 3所示,主机首先拉低总线1μs以上然后释放总线,在15μs内主机对总线的采样值即为读取到的数据。

1-Wire(单线)概述

1-Wire(单线)概述
达拉斯半导体公司的 1-Wire 总线是一种简单的信号交换方式,它是在主机与外围器件 之间通过一条线路进行双向通信。所有的 1-Wire 总线器件都具有一个共同的特征:无论是 芯片内还是 iButton 内,在出厂时每个器件都有一个与其它任何器件互不重复的固定的序列 号。也就是说,每一个器件都是唯一的。这就使得在众多连到同一总线的器件中可以选择出 任意一个器件。因为一个、二个甚至几十个 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

单总线(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命令、功能命令。

如果出现序列混乱,1 -wire器件不会响应主机(搜索ROM命令,报警搜索命令除外)。

1-Wire双向电平转换器应用

1-Wire双向电平转换器应用

1-Wire双向电平转换器应用
FPGA、微处理器、DS2482-100 和DS2480B 是常见的1-Wire 主机器件。

1-Wire/iButton 从器件由Maxim 生产,该系列器件的典型工作电压为2.8V 至5.25V。

过去,传统的1-Wire 主机和从器件均采用5V 漏极开路逻辑。

现在,设计人员需要1-Wire 主机IO 提供1.8V 的漏极开路逻辑。

而大部分1-Wire 从器件可以安全地工作在5V,它们中的绝大多数无法工作在1.8V。

需要一个双向电平转换器来克服这种限制。

本参考设计采用MAX3394E 双向
电平转换器,用于解决这类应用中的问题。

电平转换器
MAX3394E 双向电平转换器采用8 引脚、3mm x 3mm TDFN 封装。

借助其内部摆率增强电路,可理想用于大电容负载驱动。

1-Wire 从器件电容负载通
常大于500pF。

MAX3394E 的VCC I/O 引脚具有±15kV HBM 静电保护,为1- Wire 主机提供保护。

1-Wire 总线通常用于连接外部世界,HBM 保护是基本需求。

推荐在上拉电阻、可选择的强上拉电路以及1-Wire 从器件处使用DS9503P 以增强ESD 保护。

应用电路
图1 所示电路利用MAX3394E 实现1.8V 至5V 双向电平转换,系统采
用漏极开路端口。

图1. 1-Wire 双向电平转换器电路原理图,注意,引脚I/O VL 和I/O VCC 具有10kΩ内部上拉。

从DS18B20数字温度计浅谈1-wire通信(修订)

从DS18B20数字温度计浅谈1-wire通信(修订)

由DS18B20数字温度计全面解析1-Wire通信关键字:DS18B20 1-wire 1-wire通信1-wire网络可靠性1-wire安全存储新一代数字化温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、可组网等优点,并且充分发挥了1-Wire通信在恶劣现场测量环境中的高抗扰性,多点数据采集,系统设计灵活等特点。

基于MAXIM技术社区关于1-wire的海量介绍,本文精选了1-wire通信、1-wire 网络可靠性、1-wire安全存储等方面的技术资料。

1-wire初级印象1-Wire是Maxim 子公司Dallas半导体的专利技术,采用单一信号线,但可像I2C,SPI 一样,同时传输时钟(clock)又传输数据(data),而且数据传输是双向的。

本文集结的全为maxim官网上的权威应用资料。

基于1-wire的DS18B20设计实例本实例的核心器件是单片机与温度传感器,而温度传感器与单片机采用1-wire通信,因此,其硬件电路十分简单。

1-Wire主机选择采用1-Wire技术时,需要通过1-Wire主机发送信号来识别总线上的器件并与它们通信。

本文介绍了构建一个1-Wire主机的多种方法。

用软件实现1-wire通信在没有专用总线主机的情况下,微处理器可以轻松地产生1-Wire时序信号。

本应用笔记给出了一个采用C语言编写、支持标准速率的1-Wire主机通信基本子程序实例。

1-wire网络可靠性设计1-Wire协议设计的初衷是为相邻器件的短距离连接提供一种便利的通信方式,随着该通信方式的普及,1-Wire协议被扩展到网络系统,通信范围也超出了电路板的尺寸,此时增强通信网络运行的可靠性,尤为重要。

1-wire安全存储芯片的保密设计开发电子产品,包括嵌入式FPGA的配置代码,其成本是相当高的,如何防止未经授权的机构对这些设计和配置进行拷贝,以保护设计者的知识产权,希望这篇文章能够给你带来答案。

通过1-Wire网络供电(04-100)

通过1-Wire网络供电(04-100)

通过1-Wire网络供电(04-100)1-Wire 网络是一种经济总线,它是基于漏极开路主/从多站结构基础上的,在主机中用电阻上拉额定的5V 电源。

网络包含3 个主要部分:总线主机,连线和有关连接器,1 线从机。

协议采用普通的CMOS/TTL 逻辑电平,规定工作的电源电压范围为2.8~6V。

主机和从机配置成收发器,充许位序数据双向传输,但在一个时间限制在一个方向,数据是先读、写最低有效位。

数据相对于时隙传输,例如,写逻辑1 到从机,主机在≤15ms 时间拉总线低态。

为了写逻辑0,主机拉总线低态至少60ms,以便为最坏条件提供定时容限。

不需要时钟,每个从机靠自己内部振荡器自定时与主机下降沿同步。

从机工作电源来自总线,在空闲通信期间DATA 线为5V。

除加速时隙上升沿所用的软件控制15mA 强上拉电流外,通常仅有5mA 可用于网络。

这妨碍对指示器和传感器供电。

用下面4 种方法的任一种可解决供电问题。

这四种方法都考虑到所需的电量、供电时间多长和电源到总线主机的距离:-当线上电压在3.5V 以上时供电;-通过阻塞二极管传输电荷到电容器来供电;-在空闲通信时间用强上拉供电;-用缆线中备用导线的外部电源。

分接3.5V 和5V 之间的可用电源因为,1-Wire 从机设计成单节锂离子电池工作关断,所以,可以分接3.5V 和5V 电压之间可用的电平。

这等效于工作在分路模式负载,可以用钳位型负载(如LED)工作。

这要求跨接在LED 上总压降至少为3.5V,以便对可靠的通信有足够的噪声容限。

在一定的装置中,永久连接分路负载跨接在总线上时,通常负载应该在总线主机控制下工作,把负载连接在1-Wire DATA 和可寻。

1-Wire总线技术及其在火灾监测中的应用

1-Wire总线技术及其在火灾监测中的应用

和信号线这 3 根线 在功率消耗不是特 别大 的场合 ,甚 至
闭 I 单总线 硬件接 口
收稿 H朗 :2 0 —0 —1 06 2 7
维普资讯
控 制技 术与 自
单 总 线 命 令 序 列 :初 始 化 、R M 命 令 、功 能 命 令 。如 果 出 O
随 着 人 们 生 活 水 平 和 住 房 条 件 的 提 高 , 对 居 住 环 境 的 要 求 和 安 全 性 也 随 之 提 高 一 个 完 整 的 家 庭 监 控 网 络
和通讯。它 采用单 报信 号线 ,既可传输时钟 ,叉能 传输数 据 ,而 且数据传输星双 向的.蹦而过种单. 总线技术具 有线
2 】 r 工 作 原 理 一 e的
顾 名 思 义 .单 总 线 只有 一 根 数 据 线 ,系 统 中 的 数据 交
换 、控 制都在这根线 七完成 。设 备 ( 主机或从机】通过 一 个谓极开赂或 三态端 门连至该数据线 ,这样允 诈设备不发 送数据时 群放 总线 , 便其 他设备使用总线 .其内部等效
维普资讯
技 术 与 自 动 化
1 Wi - r 线技术雷金 莉 , 周妮 娜
( 宝鸡 文 理 学 院 电 气 系 . 胰 西 宝鸡 7 10 ) 2 0 7
I刖 置
只 需 要 电 源/ 号 线 和 地 线 2根 线 就 可 蹦 完 成 器 件 的供 电 信
现 序 列 混 乱 ,1 w r 器 件 不 会 响 应 主 机 ( 索 R M 命 令 、 -i e 搜 O
DI SWM)等 等 。 虽 然 各 个 家 庭 监 控 单 元 的功 能 不 同 ,但 是 它 们 都 是 由

报警搜索命令除外 ) 。 所 有 单 总线 器 件 要 求 遵 循 严格 的 通 信 协 议 ,以 保 证 数 据 的 完 整 性 。 1 wr 一i e协 议 定 义 了 几 种 信 号 类 型 :复 位 脉

串口单总线例程

串口单总线例程

串口单总线例程1.引言1.1 概述概述在嵌入式系统开发中,串口单总线是一种常用的通信协议。

它通过一个单独的数据线连接多个设备,实现设备间的数据交换和通信。

串口单总线具有简单、灵活、成本低廉等优点,因此在很多应用场景下被广泛应用。

本文将重点介绍串口单总线的实例应用,并详细讲解其原理和实现方法。

通过对这一应用的深入剖析,读者可以了解串口单总线的工作原理和使用技巧,从而可以在自己的项目中灵活应用和扩展。

本文包含三个主要部分。

首先我们将在引言中介绍本文的结构和目的,为读者提供整体的内容概述。

然后,在正文部分将逐步详细讲解串口单总线的要点和关键技术。

最后,在结论中对本文进行总结和回顾,并提出对未来发展的展望。

通过本文的阅读,读者将会了解到串口单总线的基本原理、通信流程以及常见的应用场景。

在实际应用中,串口单总线可以用于各种设备之间的通信,比如温度传感器、湿度传感器、运动控制模块等等。

掌握了串口单总线的知识,读者可以更加灵活地搭建嵌入式系统,并提高系统的性能和稳定性。

下面,我们将进入正文部分,首先介绍串口单总线的第一个要点。

1.2 文章结构文章结构部分的内容应该介绍整篇文章的组织结构和各个部分的主要内容。

根据提供的目录,可以按以下方式撰写文章结构的内容:2. 文章结构本文将按照以下结构进行组织和呈现:2.1 第一个要点这一部分将详细介绍关于串口单总线的概念、基本原理以及其在实际应用中的作用和优势。

2.2 第二个要点接下来的部分将进一步探讨串口单总线的使用方法和开发实例。

通过具体的例程演示,我们将介绍如何在不同平台上利用串口单总线进行数据通信,并给出相应的代码示例和操作步骤。

在这两个要点中,我们将深入理解串口单总线的工作原理,包括数据传输、通信协议和硬件连接等方面的知识。

同时,我们将演示如何使用串口单总线进行数据采集、控制以及与其他设备的接口操作等实际应用。

通过本文的阅读,读者将能够全面了解串口单总线的基本原理和使用方法,具备在相关项目中进行串口单总线开发的基础知识和技能。

长线1-Wire网络可靠设计指南

长线1-Wire网络可靠设计指南

设计指南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网络不适用。

单总线(onewire)技术及应用

单总线(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命令、功能命令。

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通信线路获取电源。

DS2480B 1-Wire时序的理解及配置

DS2480B 1-Wire时序的理解及配置

摘要:DS2480B是带有UART主机接口的1-Wire®主机(驱动器)。

该驱动器专门为电源传输进行优化,并支持嵌入式应用中的高速模式。

DS2480B的特性之一在于其具有伸缩速率模式,允许设计者以标准速度配置1-Wire时序。

本应用笔记阐述了如何确定最佳时序配置以及如何用Windows®软件将设置参数写入芯片。

文章还将DS2480B与上拉电阻的驱动强度进行比较,详细描述见应用笔记3829。

附录一描述了如何确定最佳的配置参数。

附录二则给出了估算DS2480B可以驱动的从器件数目的算法,这取决于主机电气特性以及网络电缆的容性负载。

附录三讨论了网络过载的条件。

引言DS2480B是带UART主机接口的1-Wire主机(驱动器)。

该器件针对电源传输进行优化并支持嵌入式应用的高速模式,可以将主机从生成严格定时的1-Wire波形这一任务中解脱出来。

DS2480 B采用有源电路,缩短了时隙结束时的恢复时间。

图1给出了1-Wire驱动器部分的简化电路图。

图1. DS2480B 1-Wire驱动器的简化电路当1-Wire总线处于空闲状态时,DS2480B驱动器通过一个受控电流源提供上拉。

该电流源可被关闭(下拉期间),可提供弱上拉电流(下拉及空闲时IWEAKPU),或者提供一个有源上拉(上升沿时IACTPU)。

下拉电路(Q1)的压摆率可以通过软件调整。

Q2表示需要大电流的1-Wire从器件功能(如EEPROM编程或温度转换)所采用的供电电路。

Q2的功能在本应用笔记中未讨论。

为支持有效的布线配置,需要一个外部线路终端电阻RT (~100Ω)以尽量减小传输线路的影响,如反射、下冲和过冲。

然而,加入RT后会导致有源上拉在1-Wire总线完全充电之前过早关闭。

这是因为DS2480B检测的是其1-Wire引脚的电压,而非1-Wire网络从器件一侧的电压。

当1-Wire引脚电压到达内部门限值(典型值IACTPU ×RT =15mA × 100Ω = 1.5V)时,从器件一侧的电压将低于1-Wire引脚电压,差值为RT上的压降。

1-wire总线技术的原理与接口设计

1-wire总线技术的原理与接口设计

1-wire总线技术的原理与接口设计
葛青;李鸿;刘宜成
【期刊名称】《四川大学学报(自然科学版)》
【年(卷),期】2004(041)0z1
【摘要】1-Wire总线具有结构简单,通讯链接方便,布线成本低等优点.本文介绍了1-wire总线的原理及达拉斯半导体公司的1-wire总线产品的接口算法的实现.【总页数】3页(P657-659)
【作者】葛青;李鸿;刘宜成
【作者单位】成都理工大学应用核技术与自动化工程学院,成都,610059;深圳风云实业有限公司;成都理工大学应用核技术与自动化工程学院,成都,610059
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于1-Wire技术的无线传感器节点数据采集单元接口设计 [J], 李佳璐;陈俊杰;魏猷刚
2.基于1-Wire总线的DS28E01加密芯片原理研究及其在FPGA加密系统中的应用 [J], 刘宇;徐东明;王艳;郭振雨
3.1-Wire总线数字温度传感器DS18B20原理及应用 [J], 李钢;赵彦峰
4.单片机1-Wire总线原理与EEPROM读写方法 [J], 黄淑蓉
5.ISA总线与1-wire器件的接口设计 [J], 王建农
因版权原因,仅展示原文概要,查看原文内容请购买。

1-wire单总线数据通信

1-wire单总线数据通信

1-wire单总线数据通信
功能命令
主器件借助功能命令访问从器件。 在成功执行初始化和ROM命令后,即可由主器件发出功能
命令,实现主器件与从器件的通信。 Dallas公司现已开发出多种信息纽扣,各器件的功能命令并
不完全相同,使用时须查阅该芯片的技术文档。
1-wire单总线数据通信
基本ROM命令
Read ROM [33H] 即将信息纽扣的注
册码读出。 用于主器件略过其
他ROM命令,直 接读取从器件的 64bit ROM注册码。
1-wire单总线数据通信
基本ROM命令
Match ROM [55H] 用于从多个从器
件中选中一个 命令字节[55H]后
必须紧随64bit ROM注册码
复位时序
1-wire单总线数据通信
写0时序
当单总线上的电平降至VTL以下时,从器件启动内部定时, 于采样窗口内(tSLSMIN至tSLSMAX)写数据0。
单总线在采样点处的电平决定了从器件在窗口内写1或0。 为了保证可靠的通信,整个采样窗口内电平值应该保持恒

写0时序
1-wire单总线数据通信
硬件结构
主器件或从器件通过OC门或OD门(即集电极开路或漏极 开路)连接至单总线
单总线要求外接一个5千欧姆左右的上拉电阻 如果单总线保持低电平超过480,单总线上的所有器件将复

1-wire单总线数据通信
单总线操作流程
初始化 执行ROM命令 执行功能命令
1-wire单总线数据通信
初始化
1-wire单总线数据通信
复位时序
主器件(单片机或PC机)发送复位脉冲(使单总线为低电 平的持续时间大于tRSTL的)
主器件释放单总线,同时转换为接收模式。 通过上拉电阻将单总线拉至高电平;从器件在检测到数据
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用笔记从理论上逐步阐述了如何充分利用1-Wire®功能,并列举了一些示例。

1-Wire主机已被设计到客户的A SIC芯片中,主控CPU用于读取1-Wire温度传感器的数值。

所提供的源代码用于1WM对4个温度传感器发送温度转换指令,并提供转换温度。

假设读者已经了解DS18B20温度传感器、DS1WM 1-Wire主机以及Dallas Semiconductor的1-Wire协议。

引言DS1WM 1-Wire主机为单总线控制器,专为简化主控CPU与周边1-Wire器件之间的单总线通讯而设计,利用D S1WM不必考虑位时序。

本应用笔记从理论上逐步阐述了如何充分利用1-Wire功能,并列举了一些示例。

假设读者已经了解DS18B20温度传感器、DS1WM 1-Wire主机以及Dallas Semiconductor 1-Wire通讯协议,详细资料请参考:Book of iButton Standards (PDF), DS1WM数据资料, DS18B20数据资料, 应用笔记119:嵌入1-Wire主机。

图1. 示例电路图1是以下示例所参考的电路配置,1-Wire主机已被设计到客户的ASIC芯片中,主控CPU通过它对4个DS1 8B20温度传感器发送温度转换命令,并读取转换的温度值。

1-Wire总线和INTR均上拉一个5k电阻,50MHz 的系统时钟通过CLK引脚为1-Wire主机提供时钟信号。

1-Wire主机已被映射到CPU的端口地址存储器中。

概述本示例的程序采用C语言编写,主程序为:GetTemperatures,它完成1-Wire主机的初始化,搜索1-Wire总线上的所有器件,并指定它们测量温度,然后将测量值送回CPU并存储。

如果总线上没有1-Wire器件,则退出主程序并返回值“1”,否则,则返回值0。

其它函数将在下面详细描述。

程序中的常数BASE是1-Wire主机被映射到CPU地址空间中的地址。

TEMPS和ROMS是全局变量。

//individual Serial #s and readings#define DEVICES 4int ROMS[DEVICES][8];int TEMPS[DEVICES];int GetTemperatures(int BASE){// init. the 1-Wire MasterInitialize(BASE);// exit if no devices can be foundif(Reset(BASE)) return(1);// find all individual Serial#sFindROMs(BASE);// Convert temp. and read devicesConvertT(BASE);ReadTemps(BASE);return(0);}运行程序主控制器首先向时钟分频寄存器写入合适的控制字,使DS1WM得到正确的时序,初始化1-Wire主机。

50MHz 输入时钟对应的数字是:0x0Fh (见DS1WM数据资料)。

主控制器初始化INTR是通过向中断使能寄存器写入0 x3Dh实现的。

这样,当有数据发送或复位完成后,INTR引脚将产生低电平中断请求信号。

void Initialize(int BASE){// Divide the clockoutp(BASE+4,0x0F);// Generate INTs on reset and sendoutp(BASE+3,0x09);}主控制器必须确定1-Wire总线上是否有器件,为此,通过向命令寄存器写入0x01,产生一个复位信号,等待中断信号产生。

收到中断信号后,CPU读取中断寄存器的值,如果第2位为低,则表明总线上有器件存在,否则,说明没有1-Wire器件或总线有故障,需采取适当措施。

WaitforInterrupt()函数本文并未做定义,用户可以自行定义该等待程序,保证主程序执行需要完成的任务。

int Reset(int BASE){outp(BASE,0x02); // send resetWaitforInterrupt();if(inp(BASE+2) & 0x02)return(1); //no presence foundelsereturn(0); //presence found}主控制器必须获知1-Wire总线上每个器件的ROM序列号,通过运行Search ROM算法获得1-Wire器件的序列号。

主机向从机发送Search ROM命令,使1-Wire主机进入搜索模式;然后,主机基于前一次搜索读到的RO M代码发送16位搜索值,第一次运行时,该搜索值为0x00,返回的16位值包含新搜索到的ROM代码,用于产生下次搜索所需参数。

重复搜索过程,直到发现相同的序列号为止。

本示例中查找到4个器件,由于存储空间只分配存储4个ROM码,因此只需4次就能完成该循环。

RecoverROM函数将产生新的发送数据,并从最近收到的数据中提取新的ROM 代码。

完整的RecoverROM函数附在本应用笔记后,搜索程序的详细描述见DS1WM数据资料。

int FindROMs(int BASE){int loop;int dev;int TData[16];int RData[16];// reset RecoverROM and generate the// starting TDataRecoverROM(NULL,TData,NULL);//run once for each devicefor(dev=0;dev<4;dev++){outp(BASE,0x01); // send resetWaitforInterrupt();outp(BASE+1,0xF0); // send SeachROMWaitforInterrupt();// enter Accelerator modeoutp(BASE,0x02);// transmit the TDATA and receive// the RDATA.for(loop=0;loop<16;loop++){outp(BASE+1,TData[loop]);WaitforInterrupt();inp(BASE+1,RData[loop]);}//decode recovered ROM and generate//next Search valueRecoverROM(RDATA,TData,ROMS[dev]);}}寻找到的唯一序列号可用于以后每个1-Wire器件的数据读取,利用该序列号不再需要给所有器件发送读写命令。

通过写入0x44h,主控制器命令所有从机器件执行温度转换命令。

总线复位后,温度转换命令紧随Skip ROM (0 xCC) 命令,可以同时发送到所有的1-Wire器件。

int ConvertT(int BASE){outp(BASE,0x01); // send resetWaitforInterrupt();outp(BASE+1,0xCC); // skip ROMWaitforInterrupt();outp(BASE+1,0x44); // convert Temp.WaitforInterrupt();DS18B20温度转换速度很快,无须等待时间。

主控制器必须逐个访问从机器件读取它们的温度。

总线复位后,主控制器发送一个Match ROM命令和64位序列号,然后是读取缓存器命令。

之后,主控制器读取2个字节的温度信息,注意:在1-Wire总线上读数时,必须先发送0xFFh。

由这2个字节得到一个16位的温度值。

该流程对每个器件重复循环一次。

int ReadTemps(int BASE){int dev,loop;int LSB,MSB;for(dev=0;dev<4;dev++){outp(BASE,0x01); // send resetWaitforInterrupt();outp(BASE+1,0x55); // match ROMWaitforInterrupt();// send 8 bytes of ROM codefor(loop=0;loop<8;loop++){outp(BASE+1,ROMS[dev][loop]);WaitforInterrupt();}outp(BASE+1,0xBE); // read memoryWaitforInterrupt();outp(BASE+1,0xFF); // read LSBWaitforInterrupt();LSB = inp(BASE+1);outp(BASE+1,0xFF); // read MSBWaitforInterrupt();MSB = inp(BASE+1);TEMPS[dev] = MSB<<8 + LSB;}}程序运行完成后,GetTemperatures函数要么返回一个值“1”,表明总线上无器件;要么返回一个值“0”,利用从4个1-Wire器件获得的数字,更新ROM代码和温度值。

如果已知器件的ROM代码,可以跳过整个Search ROM程序。

如果总线上只有一个器件,其ROM序列号不必搜索,每次处理时,执行Skip ROM命令。

如果无法提供中断请求信号线,则WaitforInterrupt函数可以编写成通过查询中断寄存器完成命令。

然而这样一来,CPU必须等待1-Wire主机完成其操作。

RecoverROM源代码下面提供的源代码包含用于产生16字节发送值的用户代码,并从Search ROM过程中获得的16个字节中提取最新的ROM码。

该函数需要16字节接收数据、16字节发送数据和8字节ROM码的指针。

如果总线上仍有未知器件,该函数将返回值“0”,当总线上所有器件均被找到时则返回值“1”,这一特性在上述例子中未采用。

该函数没有出错检验,因此,如果总线上无器件,则发现的ROM代码是错误的。

///////////////////////////////////////////////////////////////////////// ////////// RecoverROM performs two functions. Given 16 bytes of receive data take n from// the 1-Wire Master during a Search ROM function, it will extract the RO M code// found into an 8 byte array and it will generate the next 16 bytes to b e trans-// mitted during the next Search ROM.// RecoverROM must be initialized by sending a NULL pointer in ReceivedDa ta. It// will write 16 bytes of zeros into TransmitData and clear the discrepan cy tree.// The discrepancy tree keeps track of which ROM discrepancies have alrea dy been// explored.// RecoverROM also returns a value telling whether there are any more ROM codes to// be found. If a zero is returned, there are still discrepancies. If a o ne is// returned all ROMs on the bus have been found. Running RecoverROM again in this// case will result in repeating ROM codes already found///////////////////////////////////////////////////////////////////////// ///////int RecoverROM(int* ReceiveData, int* TransmitData, int* ROMCode){int loop;int result;int TROM[64]; // the transmit value being generatedint RROM[64]; // the ROM recovered from the received dataint RDIS[64]; // the discrepancy bits in the received datastatic int TREE[64]; // used to keep track of which discrepancy bits have// already been flipped.// If receivedata is NULL, this is the first run. Transmit data should be all// zeros, and the discrepancy tree must also be reset.if(ReceiveData == NULL){for(loop = 0; loop < 64; loop++) TREE[loop] = 0;for(loop = 0; loop < 16; loop++) TransmitData[loop] = 0;return 1;}// de-interleave the received data into the new ROM code and the discre pancy bitsfor(loop = 0; loop < 16; loop++){if((ReceiveData[loop] & 0x02) == 0x00) RROM[loop*4] = 0; else RROM[lo op*4 ] = 1;if((ReceiveData[loop] & 0x08) == 0x00) RROM[loop*4+1] = 0; else RROM [loop*4+1] = 1;if((ReceiveData[loop] & 0x20) == 0x00) RROM[loop*4+2] = 0; else RROM [loop*4+2] = 1;if((ReceiveData[loop] & 0x80) == 0x00) RROM[loop*4+3] = 0; else RROM [loop*4+3] = 1;if((ReceiveData[loop] & 0x01) == 0x00) RDIS[loop*4] = 0; else RDIS[lo op*4 ] = 1;if((ReceiveData[loop] & 0x04) == 0x00) RDIS[loop*4+1] = 0; else RDIS [loop*4+1] = 1;if((ReceiveData[loop] & 0x10) == 0x00) RDIS[loop*4+2] = 0; else RDIS [loop*4+2] = 1;if((ReceiveData[loop] & 0x40) == 0x00) RDIS[loop*4+3] = 0; else RDIS [loop*4+3] = 1;}// initialize the transmit ROM to the recovered ROMfor(loop = 0; loop < 64; loop++) TROM[loop] = RROM[loop];// work through the new transmit ROM backwards setting every bit to 0 u ntil the// most significant discrepancy bit which has not yet been flipped is f ound.// The transmit ROM bit at that location must be flipped.for(loop = 63; loop >= 0; loop--){// This is a new discrepancy bit. Set the indicator in the tree, flip the// transmit bit, and then break from the loop.if((TREE[loop] == 0) && (RDIS[loop] == 1) && (TROM[loop] == 0)){TREE[loop] = 1;TROM[loop] = 1;break;}if((TREE[loop] == 0) && (RDIS[loop] == 1) && (TROM[loop] == 1)){TREE[loop] = 1;TROM[loop] = 0;break;}// This bit has already been flipped, remove it from the tree and con tinue// setting the transmit bits to zero.if((TREE[loop] == 1) && (RDIS[loop] == 1)) TREE[loop] = 0;TROM[loop] = 0;}result = loop; // if loop made it to -1, there are no more discrepanc y bits// and the search can end.// Convert the individual transmit ROM bit into a 16 byte format// every other bit is don't care.for(loop = 0; loop < 16; loop++){TransmitData[loop] = (TROM[loop*4]<<1) +(TROM[loop*4+1]<<3) +(TROM[loop*4+2]<<5) +(TROM[loop*4+3]<<7);}// Convert the individual recovered ROM bits into an 8 byte formatfor(loop = 0; loop < 8; loop++){ROMCode[loop] = (RROM[loop*8]) +(RROM[loop*8+1]<<1) +(RROM[loop*8+2]<<2) +(RROM[loop*8+3]<<3) +(RROM[loop*8+4]<<4) +(RROM[loop*8+5]<<5) +(RROM[loop*8+6]<<6) +(RROM[loop*8+7]<<7);}if(result == -1) return 1; // There are no DIS bits that haven't been flipped// Tell the main loop the seach is over return 0; // else continue}。

相关文档
最新文档