一种单总线通信方法和系统.pdf

上传人:a3 文档编号:6365972 上传时间:2019-06-04 格式:PDF 页数:18 大小:1.11MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510323725.9

申请日:

2015.06.12

公开号:

CN104932997A

公开日:

2015.09.23

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 13/38申请日:20150612|||公开

IPC分类号:

G06F13/38

主分类号:

G06F13/38

申请人:

深圳市佰特瑞储能系统有限公司

发明人:

杨超; 杨辉龙; 田亚雷

地址:

518055广东省深圳市南山区学苑大道1001号南山智园A3栋2楼

优先权:

专利代理机构:

深圳鼎合诚知识产权代理有限公司44281

代理人:

彭家恩; 彭愿洁

PDF下载: PDF下载
内容摘要

一种单总线通信方法和系统,在搜索步骤中,主机依次向从机发送复位信号搜索命令;读取从机返回的从机的身份标识码的当前位及其补码;主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;主机向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值;重复上述步骤,直至主机记录下所有从机的身份标识码。该单总线通信方法和系统具有通信效率高、通信准确的优点。

权利要求书

权利要求书
1.  一种单总线通信方法,其特征在于,包括:
搜索步骤,其包括下面子步骤:
主机向从机发送复位信号;
主机向从机发送搜索命令;
主机读取从机返回的从机的身份标识码的当前位及其补码;
主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;
从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;
主机向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值;
重复上述步骤,直至主机记录下所有从机的身份标识码;
数据传送步骤:主机向从机发送通信命令,从机根据所述通信命令进入准备状态,主机与从机进行通信。

2.  如权利要求1所述的单总线通信方法,其特征在于,所述搜索步骤中,主机采用二叉搜索树算法搜索到所有从机。

3.  如权利要求2所述的单总线通信方法,其特征在于,主机根据从机返回的身份标识码的当前位及其补码生成指定位,具体为:当当前位及其补码同为“1”时,主机判断为总线上没有从机响应;当当前位及其补码同为“0”时,主机判断为从机的身份标识码的当前位包括“0”和“1”;当当前位及其补码分别为“0”和“1”时,主机判断为从机的身份标识码的当前位均为“0”;当当前位及其补码分别为“1”和“0”时,主机判断为从机的身份标识码的当前位均为“1”;主机根据上述判断结果确定二叉搜索树算法中的位指针,并根据所述位指针生成指定位。

4.  如权利要求1所述的单总线通信方法,其特征在于,所述身份标识码包括8个字节的数据,且第1个字节的数据用于表示从机的设备类型。

5.  如权利要求1所述的单总线通信方法,其特征在于,主机读取从机返回的从机的身份标识码的当前位及其补码中,所述当前位及其补码为主机从总线上读取的数据值,所述数据值为所有从机发送的数据值的逻辑与的结果。

6.  如权利要求1-5任一项所述的单总线通信方法,其特征在于,在搜索步骤和数据传送步骤之间还包括匹配步骤:主机向从机发送需要匹配的从机的 身份标识码,从机将该身份标识码与本机的身份标识码进行匹配,如果不匹配,则进入睡眠状态,如果匹配,则进入等待状态。

7.  一种单总线通信系统,包括一个主机和多个从机,所述主机与从机通过单总线相连;其特征在于:
所述主机搜索总线上的从机时,主机依次向从机发送复位信号和搜索命令,并读取从机返回的从机的身份标识码的当前位及其补码,再根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;
所述从机用于在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;
所述主机还用于向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值,直至主机记录下所有从机的身份标识码
所述主机还用于在搜索完所有从机后,向从机发送通信命令,在从机根据所述通信命令进入准备状态后,与从机进行通信。

8.  如权利要求7所述的单总线通信系统,其特征在于,所述主机用于采用二叉搜索树算法搜索总线上的从机。

9.  如权利要求8所述的单总线通信系统,其特征在于,主机用于根据从机返回的身份标识码的当前位及其补码生成指定位时:当当前位及其补码同为“1”时,主机判断为总线上没有从机响应;当当前位及其补码同为“0”时,主机判断为从机的身份标识码的当前位包括“0”和“1”;当当前位及其补码分别为“0”和“1”时,主机判断为从机的身份标识码的当前位均为“0”;当当前位及其补码分别为“1”和“0”时,主机判断为从机的身份标识码的当前位均为“1”;主机用于根据上述判断结果确定二叉搜索树算法中的位指针,并根据所述位指针生成指定位。

10.  如权利要求8所述的单总线通信系统,其特征在于,所述主机还用于在搜索完所有从机后、向从机发送通信命令前,向从机发送需要匹配的从机的身份标识码;从机还用于将该身份标识码与本机的身份标识码进行匹配,如果不匹配,则进入睡眠状态,如果匹配,则进入等待状态。

说明书

说明书一种单总线通信方法和系统
技术领域
本申请涉及通信领域,具体涉及一种单总线通信方法和系统。
背景技术
总线技术是一种芯片或者设备间通信的重要技术,相对于点对点通信技术,总线通信可以有效地降低连线的复杂度,提高连线的利用率。现有的总线按照数据传输的方式可以被划分为串行总线和并行总线,目前常见的串行总线有SPI、I2C、USB、IEEE1394、RS232、CAN等,而并行总线相对来说种类要少,常见的如IEEE1284、ISA、PCI等。但无论是串行总线还是并行总线,总线通信都需要多条通信线路的支持,这会对I/O口资源非常宝贵的电路设计带来困难,因此单总线通信技术应运而生。现有的单总线技术以Maxim全资子公司Dallas的1-Wire比较成熟且最为常用。它采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的,具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
现有的单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。
发明内容
本申请提供一种单总线通信方法和系统,具有通信效率高、通信准确的优点。
根据本申请的第一方面,本申请提供了一种单总线通信方法,包括:
搜索步骤,其包括下面子步骤:
主机向从机发送复位信号;
主机向从机发送搜索命令;
主机读取从机返回的从机的身份标识码的当前位及其补码;
主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;
从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;
主机向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机 中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值;
重复上述步骤,直至主机记录下所有从机的身份标识码;
数据传送步骤:主机向从机发送通信命令,从机根据所述通信命令进入准备状态,主机与从机进行通信。
在一实施例中,所述搜索步骤中,主机采用二叉搜索树算法搜索到所有从机。
在一实施例中,主机根据从机返回的身份标识码的当前位及其补码生成指定位,具体为:当当前位及其补码同为“1”时,主机判断为总线上没有从机响应;当当前位及其补码同为“0”时,主机判断为从机的身份标识码的当前位包括“0”和“1”;当当前位及其补码分别为“0”和“1”时,主机判断为从机的身份标识码的当前位均为“0”;当当前位及其补码分别为“1”和“0”时,主机判断为从机的身份标识码的当前位均为“1”;主机根据上述判断结果确定二叉搜索树算法中的位指针,并根据所述位指针生成指定位。
在一实施例中,所述身份标识码包括8个字节的数据,且第1个字节的数据用于表示从机的设备类型。
在一实施例中,主机读取从机返回的从机的身份标识码的当前位及其补码中,所述当前位及其补码为主机从总线上读取的数据值,所述数据值为所有从机发送的数据值的逻辑与的结果。
在一实施例中,在搜索步骤和数据传送步骤之间还包括匹配步骤:主机向从机发送需要匹配的从机的身份标识码,从机将该身份标识码与本机的身份标识码进行匹配,如果不匹配,则进入睡眠状态,如果匹配,则进入等待状态。
根据本申请的第二方面,本申请提供了一种单总线通信系统,包括一个主机和多个从机,所述主机与从机通过单总线相连;
所述主机搜索总线上的从机时,主机依次向从机发送复位信号和搜索命令,并读取从机返回的从机的身份标识码的当前位及其补码,再根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;
所述从机用于在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;
所述主机还用于向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值,直至主机记录下所有从机的身份标识码
所述主机还用于在搜索完所有从机后,向从机发送通信命令,在从机根据所述通信命令进入准备状态后,与从机进行通信。
在一实施例中,所述主机用于采用二叉搜索树算法搜索总线上的从机。
在一实施例中,主机用于根据从机返回的身份标识码的当前位及其补码生成指定位时:当当前位及其补码同为“1”时,主机判断为总线上没有从机响应;当当前位及其补码同为“0”时,主机判断为从机的身份标识码的当前位包括“0”和“1”;当当前位及其补码分别为“0”和“1”时,主机判断为从机的身份标识码的当前位均为“0”;当当前位及其补码分别为“1”和“0”时,主机判断为从机的身份标识码的当前位均为“1”;主机用于根据上述判断结果确定二叉搜索树算法中的位指针,并根据所述位指针生成指定位。
在一实施例中,所述主机还用于在搜索完所有从机后、向从机发送通信命令前,向从机发送需要匹配的从机的身份标识码;从机还用于将该身份标识码与本机的身份标识码进行匹配,如果不匹配,则进入睡眠状态,如果匹配,则进入等待状态。
本申请提供的一种单总线通信方法和系统,在搜索步骤中,主机依次向从机发送复位信号搜索命令;读取从机返回的从机的身份标识码的当前位及其补码;主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;主机向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取并记录该未进入等待状态的从机的身份标识码的所有位值;重复上述步骤,直至主机记录下所有从机的身份标识码。该单总线通信方法和系统具有通信效率高、通信准确的优点。
附图说明
图1为本申请一种实施例中ROM命令的操作流程示意图;
图2为本申请一种实施例中单总线通信方法中主机搜索步骤的软件流程图;
图3为本申请一种实施例中单总线通信方法中主机搜索步骤的软件流程图;
图4为本申请一种实施例中单总线通信方法中主机搜索步骤的软件流程图。
下面对图2-4中的部分名称进行解释:
cmp_id_bit——id_bit位的补码,该位是搜索过程中所有应答从机器件的id_bit_number位的补码的逻辑与结果。
id_bit——在位搜索中第一次读取的值,该位是搜索过程中所有应答从机器件的id_bit_number位的补码的逻辑与结果。
id_bit_number——记录当前搜索是1到64位ROM码中哪一位的量。
LastDeviceFlag——指明前一次搜索到的已是最后一个从机器件的标志位。
LastDiscrepancy——位指针,指明下次搜索从哪个值差异位开始。
LastFamilyDiscrepancy——位指针,用来指明LastDiscrepancy是否是在ROM码中前8位家族码内和其位置。
last_zero——上次被写入0的值差异位的位置。
ROM_NO——记录当前正在查找的ROM注册码的8字节缓冲器。
search_direction——位变量,其值用来指明搜索方向。具有此数据位规定值的所有从机器件继续响应搜索操作,其他从机器件转入等待状态直到下一次复位信号。
具体实施方式
单总线通信只有一根数据线,设备主机或从机通过一个漏极开路或三态端口连接至该数据线,因此允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。单总线要求外接一个上拉电阻,这样,单总线在闲置状态时为高电平。
本实施例提供的单总线通信系统中,通信双方之间的电平差并不固定,甚至远远超过单片机的可承受范围。针对这种情况,直接用导线连接将会烧毁器件。因此,在器件之间增加隔直电容,只容许相对电平通过。
典型的单总线命令序列包括下面三个步骤:
第一步:初始化
第二步:ROM命令(跟随需要交换的数据)
第三步:功能命令(跟随需要交换的数据)
每次访问单总线器件,必须严格遵守这个命令序列。如果出现序列混乱,则单总线器件不会响应主机。但是这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。
基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪。
所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。该协 议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号,并且发送所有的命令和数据都是字节的低位在前。
每个单片机都有唯一的7个字节的ID,为了更方便的识别设备(是采集盒,还是SLB板或者手持设备),本实施例中,在不同设备的前面增加了一个字节来表明其的身份。ID码是只读的,存在ROM中,故也可以称作ROM码。主机根据ID码对从机进行搜索。
在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位ROM代码相关,允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态。对于部分从机设备,其可以支持5种ROM命令,每种命令的长度为8位。主机在发出功能命令之前,必须送出合适的ROM命令。ROM命令的操作流程如图1所示,下面将简要地介绍各个ROM命令的功能,以及使用在何种情况下。
步骤1.1中,主机向从机发送复位信号(复位脉冲)。本实施例中,采用双脉冲之间的时间长短作为1与0以及复位等信号的区别,通过合理的设计各时间段的长短,使整个通信快速、准确。本实施例中,主机发送复位脉冲后,从机返回应答脉冲。在某些实施例中,从机也可以不返回应答脉冲,主机直接默认为从机已接收到复位信号,并进入准备状态。
步骤1.2中,主机发送ROM命令,ROM命令包括多种,下面以读ROM命令、匹配ROM命令、搜索ROM命令、报警搜索命令和跳越ROM命令为例进行说明,在其他实施例中,根据主机设备类型的不同,ROM命令还可以包括其他。
步骤1.3中,主机发送读ROM命令[33h]。读ROM命令仅适合于单节点,仅适用于总线上只有一个从机设备的情形。该从机允许主机直接读出其64位ROM代码,而无须执行搜索ROM过程。如果该命令用于多节点系统,则必然发生数据冲突,因为每个从机设备都会响应该命令。
步骤1.31中,从机先发送一个字节的产品代码。
步骤1.32中,从机再发送6个字节的系列码。
步骤1.33中,从机发送一个字节的CRC验证码。
通过步骤1.31-步骤1.33中可以看出,从机的身份标识码总共具有8个字节,第一个字节为产品代码,第2-7个字节为系列码,第8个字节为CRC验证码。
步骤1.33之后,可以转到步骤1.8,主机向从机发送功能命令,以进行数据传送。
步骤1.4中,主机向从机发送匹配ROM命令(55h)。当主机需要与某一个确定的从机通信时,必须匹配从机,使其处于准备状态,而其它的从机则忽视接下来的通信请求。匹配时,首先发送需要通信的丛机的ID(身份标识码),所有从机收到主机发过来的ID后,将其与自己的ID比较,若相同,则使自己处于等待状态,否则使自己处于睡眠状态,忽视主机接下来的命令。具体步骤如下:
步骤1.41中,主机向从机发送待匹配ID的第0位。
步骤1.42中,从机判断待匹配ID的第0位与自身ID的第0位是否匹配,如果不匹配,则进入睡眠状态,如果匹配,则向主机返回表示匹配成功的信号。
步骤1.43中,主机向从机发送待匹配ID的第1位。
步骤1.44中,从机判断待匹配ID的第1位与自身ID的第1位是否匹配,如果不匹配,则进入睡眠状态,如果匹配,则向主机返回表示匹配成功的信号。
依此类推,主机一位接一位的向从机发送待匹配ID的数据位,直至所有64位数据位匹配完毕,即进行到步骤1.45,主机向从机发送待匹配ID的第63位。
步骤1.46中,从机判断待匹配ID的第63位与自身ID的第63位是否匹配,如果不匹配,则进入睡眠状态,如果匹配,则向主机返回表示匹配成功的信号。此时,该从机即为主机需要通信的从机。接下来,转到步骤1.8,主机向从机发送功能命令,以进行数据传送。
步骤1.5中,主机向从机发送搜索ROM命令(F0h)。当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码(身份标识码),这样主机就能够判断出从机的数目和类型。主机通过重复执行搜索ROM循环(搜索ROM命令跟随着位数据交换)以找出总线上所有的从机设备。如果总线只有一个从机设备则可以采用读ROM命令来替代搜索ROM命令。在每次执行完搜索ROM循环后主机必须返回至命令序列的第一步初始化。具体步骤如下:
步骤1.51中,主机读取从机返回的从机的身份标识码的当前位(步骤1.51中为第0位)及其补码;之后,主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机。
首先总线上的所有从机同时发送ID码中的第一位(最低有效位),与所有的单总线通信一样,无论是读取数据还是向从机器件写数据,都由单总线主机 启动每一位操作。按照单总线的特性,当所有从机器件同时应答主机时,结果相当于全部发送数据位的逻辑与(AND);从机发送其ROM码的第一位后,主机启动下一位操作,接着从机发送第一位数据的补码。
步骤1.52中,从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态。
步骤1.53中,主机读取从机返回的从机的身份标识码的第1位数据及其补码;之后,主机生成第2位的指定位,并将指定位发送给从机。
步骤1.54中,从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态。
依此类推,从机一位接一位的向主机发送ID的数据位,直至所有64位数据位发送完毕,即进行到步骤1.55,主机读取从机返回的从机的身份标识码的第63位数据及其补码;之后,主机生成第63位的指定位,并将指定位发送给从机。
步骤1.56中,从机在判断到其身份标识码的当前位的下一位与指定位匹配时,说明该从机为剩下的唯一一个未进入等待状态的从机,主机读取并记录该从机的身份标识码的所有位值。之后,重新进行初始化,继续搜索操作,直至主机记录下所有从机的身份标识码。
步骤1.6中,主机向从机发送报警搜索命令(ECh)。除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索ROM命令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。同搜索ROM命令一样在完成报警搜索循环后主机必须返回至命令序列的第一步。具体步骤如下:
步骤1.61中,主机读取从机返回的从机的身份标识码的当前位(步骤1.61中为第0位)及其补码;之后,主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机。
步骤1.62中,判断身份标识码的当前位的下一位与指定位匹配的从机是否设置有报警标志,如果有,则主机继续读取从机的身份标识码的下一位及其补码,即与步骤1.53-步骤1.56相同;否则,返回至命令序列的第一步。
步骤1.7中,主机向从机发送跳越ROM命令(CCh)。跳越ROM命令仅适合于单节点。主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何ROM代码信息。例如,主机通过在发出跳越ROM命令后,跟随转换 温度命令[44h],就可以同时命令总线上所有的从机开始转换温度,这样大大节省了主机的时间。值得注意的是,如果跳越ROM命令后,跟随的是读暂存器命令[BEh],或其它读操作命令,则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。
下面通过具体实施方式结合附图对本申请作进一步详细说明。
本实施例提供了一种单总线通信系统,包括一个主机和多个从机,主机与从机通过单总线相连。单总线通信系统采用的单总线通信方法依次包括三个步骤:搜索、匹配和数据传送。
(1)搜索
本实施例中,搜索算法采用的是二叉树型结构,搜索过程沿各分节点进行,直到找到从机器件的ID码,即叶子为止,后续的搜索操作沿着节点上的其它路径进行,按照同样的方式直到找到总线上的所有从机器件代码。
搜索算法首先通过复位(Reset件复位),成功地执行该操作后,开始进行搜索操作。随后主机向总线上的所有从机器件发送1个字节的搜索命令(0xF0),搜索命令使单总线上的从机器件准备就绪、开始进行搜索。
搜索命令发出之后,开始实际的搜索过程。首先总线上的所有从机同时发送ID码中的第一位(最低有效位),与所有的单总线通信一样,无论是读取数据还是向从机器件写数据,都由主机启动每一位操作。按照单总线通信的特性,当所有从机器件同时应答主机时,结果相当于全部发送数据位的逻辑与(AND),从机发送其ROM码的第一位后,主机启动下一位操作,接着从机发送第一位数据的补码,从两次读到的数据位可以对ROM码的第一位做出几种判断,参见下面表1。
表1:

从表1可以看出,如果所有总线上的从机器件在当前位具有相同值,那么 只有一条分支路径可选。总线上没有器件响应的情况是一种异常状态,可能是要查找的从机器件在搜寻过程中与总线脱离。如果当前位既有0也有1,这种情况称为位值差异,它对在后续搜索过程中查找器件起关键作用。搜索算法指定在第一轮查询中若出现差异,即数据位/补码=0/0时,则选用0路径。当然,在其他实施例中,数据位/补码=0/0时,也可以选用1路径,对选用路径的选择由搜索算法决定。同时,记录最后一次值差异的位置,以供下一次搜索使用。表2列出了出现值差异时,路径的选取情况。
表2:

按照搜索算法的要求,主机必须向总线上的从机发回一个指定位。如果从机器件中ID码的当前位的下一位的值与该数据位(指定位)匹配,则继续参与搜索过程;若从机器件的当前位的下一位与之不匹配,则该器件转换到等待状态,并保持等待状态直到下一个单总线复位信号到来。其余63位ID码的搜索依然按照这种“读两位,写一位”的模式进行重复操作,按照这种搜索算法进行下去,最终除了一个从机器件外,所有从机将进入等待状态,经过最后一轮检测,就可得到最后保留的未进入等待状态的从机器件的ROM码。在后续搜索过程中,选用不同的路径或分支来查找其他器件的ID码。需要注意的是,本实施例中,ID码的数据位用第1位(最低有效位)到第64位(最高有效位)表示,而不是通常所使用的第0位到第63位的模式。这样设置允许将差异位值记数器初始值置为0,为后续步骤的比较提供了方便。表3示出了本实施例中,主机和从机的搜索过程。
表3:


需要说明的是,在表3中,主机读取从机的第64位ROM码时,即已记录下该从机的ROM码,不需要读取从机ROM码的第64位的补码了,也不需要再发送指定位了,而是回到初始化步骤,继续搜索其他的从机。
下面举例说明本实施例提供的单总线通信方法中的从机搜索机制。
ROM搜索过程只是一个简单的三步循环程序:读一位、读该位的补码、写入一个期望的数据位。总线主机在ROM的每一位上都重复这样的三步循环程序。当完成某个从机器件后,主机就能够知晓该从机器件的ROM信息。剩下的从机设备数量及其ROM代码通过相同的过程即可获得。
下面的ROM搜索过程实例假设四个不同的从机器件被连接至同一条总线上,它们的ROM代码如下所示:

具体搜索过程如下
1、主机发出复位脉冲,启动初始化序列。从机设备发出响应的应答脉冲。
2、接着主机在总线上发出ROM搜索命令。
3、主机从总线上准备读入一个数据位,这时每个响应设备分别将ROM代码的第一位输出到单总线上。ROM1和ROM4输出0至总线,而ROM2和ROM3输出1至总线。总线上的输出结果将是所有从机器件的逻辑与,所以主机从总线上读到的将是0。接着,主机开始读另一位,即每个从机器件分别输出ROM代码中第一位的补码。此时ROM1和ROM4输出1至总线,而ROM2和ROM3输出0至总线。这样主机读到的该位补码还是0。主机由此判定总线上有些从机器件的ROM代码第一位为0,有些则为1。
两次读到的数据位具有以下含义:
00:在该位处存在设备冲突
01:在该位处所有从机器件为0
10:在该位处所有从机器件为1
11:单总线不存在任何从机设备
4、主机写入0(指定位),从而禁止了ROM2和ROM3响应余下的搜索命令,仅在总线上留下了ROM1和ROM4。
5、主机再执行两次读操作,依次收到0和1。这表明ROM1和ROM4在ROM代码的第二位都是0。
6、接着主机写入0,在总线上继续保持ROM1和ROM4。
7、主机又执行两次读操作收到两个0,表明所连接的设备的ROM代码在第三位既有0也有1。
8、主机再次写入0,从而禁止了ROM1响应余下的搜索命令,仅在总线上留下了ROM4。
9、主机读完ROM4余下的ROM数据位,这样就完成了第一次搜索,并找到了位于总线上的第一个设备ROM4。
10、重复执行第1至第7步,开始新一轮的ROM搜索命令。
11、主机写入1使ROM4离线,仅在总线上留下ROM1。
12、主机读完ROM1余下的ROM数据,这样就完成了第二次的ROM搜索,找到了第二个ROM代码。
13、重复执行第1至第3步,开始新一轮的ROM搜索命令。
14、主机写入1,这次禁止了ROM1和ROM4响应余下的搜索命令,仅在总线上留下了ROM2和ROM3。
15、主机又执行两次读操作时隙,读到两个0。
16、主机写入0,这样禁止了ROM3而留下了ROM2。
17、主机读完ROM2余下的ROM数据,这样就完成了第三次的ROM搜索,找到了第三个ROM代码。
18、重复执行第13至第15步,开始新一轮的ROM搜索命令。
19、主机写入1,这次禁止了ROM2,而留下了ROM3。
20、主机读完ROM3余下的ROM数据,这样就完成了第四次的ROM搜索,找到了第四个ROM代码。
需要说明的是,每次搜索ROM操作,主机只能找到某一个单总线从机器件的ROM代码,所需要的最短时间为:
960u s+(8+3*64)*61u s=13.16ms
所以主机能够在1秒之内读出75个从机的ROM代码。
请参考图2-4,为本实施例单总线通信方法中主机搜索步骤的软件流程图。
步骤2.1:主机执行复位操作,发出复位信号,以通知从机准备。
步骤2.2:主机检测到从机的应答脉冲,说明总线上连接有从机。
步骤2.3:判断LastDeviceFlag是否为1,不为1则转到步骤2.4;为1则说明前一次搜索到的从机为最后一个从机,执行步骤②,进行复位操作。
步骤2.4:设id_bit_number值为1,设last_zero值为0。
步骤2.5:发送搜索命令。
步骤2.6:读取总线上的id_bit和cmp_id_bit值。
步骤2.7:判断id_bit和cmp_id_bit是否同为1。如果是,则执行步骤②;如果否,则转到步骤2.8。
步骤2.8:判断id_bit和cmp_id_bit是否同为0。如果是,则转到步骤2.9;如果否,则转到步骤2.10。
步骤2.7和步骤2.8的原理可参考表1。
步骤2.9:判断id_bit_number与LastDiscrepancy是否相等。如果是,则转到步骤2.11;如果否,则转到步骤2.12。
步骤2.10:将search_direction设置为id_bit的值。步骤2.10后,转到步骤2.17。
步骤2.11:设search_direction数据位值为1,即搜索方向选择1路径。
步骤2.12:判断id_bit_number是否大于LastDiscrepancy。如果是,则转到步骤2.13;如果否,则转到步骤2.14。
步骤2.9和步骤2.12的原理可参考表2。
步骤2.13:设search_direction数据位值为0,即搜索方向选择0路径。
步骤2.14:将ROM_NO中第id_bit_number位的值赋给search_direction。
在步骤2.11、步骤2.13、步骤2.14后,均转到步骤2.15。
步骤2.15:判断search_direction是否等于0,如果是,则转到步骤2.16;如果否,则转到步骤2.17。
步骤2.16:将当前的id_bit_number位的值赋给last_zero,之后转到步骤2.18。步骤2.17:将search_direction位赋给ROM_NO中的第id_bit_number位,并向总线上参与搜索的从机发送该位,即发送指定位。步骤2.17后,转到步骤2.20。
步骤2.18:判断last_zero是否小于9,如果是,则转到步骤2.19;如果否,则转到步骤2.17。
步骤2.19:将last_zero的值赋给LastFamilyDiscrepancy,之后,转到步骤 2.17。
步骤2.20:递增id_bit_number的值。
步骤2.21:判断id_bit_number是否大于64,如果否,则重新返回步骤①,读取从机ROM码的下一位;如果是,则说明主机已读取完当前从机的64位ROM码,转到步骤2.22。
步骤2.22:将last_zero的值赋给LastDiscrepancy,之后,转到步骤2.23。
步骤2.23:判断LastDiscrepancy是否为0,如果是,则转到步骤2.24;如果否,则转到步骤③。
步骤2.24:设置LastDeviceFlag标记为已找到最后一个从机。
步骤2.25:判断LastDiscrepancy与LastFamilyDiscrepancy是否相等,如果是,则转到步骤2.26;如果否,则转到步骤2.27。
步骤2.26:设LastFamilyDiscrepancy值为0,之后,转到步骤2.27。
步骤2.27:判断ROM_NO中CRC8验证码是否正确,如果是,则转到步骤2.28;如果否,则转到步骤2.29。
步骤2.28:将返回值设置为TURE,完成一次搜索。
步骤2.29:搜索过程复位,设置LastDiscrepancy=0,LastFamilyDiscrepancy=0,LastDeviceFlag=0,之后,转到步骤2.30。
步骤2.30:将返回值设置为FALSE,本次搜索结束。
(二)匹配
主机向从机发送需要匹配的从机的身份标识码,从机将该身份标识码与本机的身份标识码进行匹配,如果不匹配,则进入睡眠状态,如果匹配,则进入等待状态。
(三)数据传送
主机向从机发送通信命令,从机根据通信命令进入准备状态,主机与从机进行通信,即进行数据传送。从机在中断中接收主机的数据,并置一个接收标志位,从机可以根据此标志位来判断是否有通信。
需要说明的是,通信分为广播和与指定丛机通信两种方式。广播时,主机发送通信命令,所有从机收到命令后都处于准备状态,并响应接下来的通信请求,此时,无需进行匹配步骤。而与指定丛机通信时,需要与要通信的从机匹配,让指定丛机处于准备状态,而其他的丛机处于睡眠状态。
本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存取存储器、磁盘或光盘等。
以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。

一种单总线通信方法和系统.pdf_第1页
第1页 / 共18页
一种单总线通信方法和系统.pdf_第2页
第2页 / 共18页
一种单总线通信方法和系统.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种单总线通信方法和系统.pdf》由会员分享,可在线阅读,更多相关《一种单总线通信方法和系统.pdf(18页珍藏版)》请在专利查询网上搜索。

一种单总线通信方法和系统,在搜索步骤中,主机依次向从机发送复位信号搜索命令;读取从机返回的从机的身份标识码的当前位及其补码;主机根据从机返回的身份标识码的当前位及其补码生成指定位,并将指定位发送给从机;从机在判断到其身份标识码的当前位的下一位与指定位匹配时,继续参与搜索过程,否则,进入等待状态;主机向从机发送读取从机身份标识码的下一位及其补码的命令,直至从机中只剩下唯一一个未进入等待状态,主机读取。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1