CN117171076A - Spi通信防误识别方法、装置、电子设备及存储介质 - Google Patents
Spi通信防误识别方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117171076A CN117171076A CN202210590516.0A CN202210590516A CN117171076A CN 117171076 A CN117171076 A CN 117171076A CN 202210590516 A CN202210590516 A CN 202210590516A CN 117171076 A CN117171076 A CN 117171076A
- Authority
- CN
- China
- Prior art keywords
- target value
- address
- identified
- identification
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000006854 communication Effects 0.000 title claims abstract description 58
- 238000004891 communication Methods 0.000 title claims abstract description 55
- 230000002265 prevention Effects 0.000 claims description 106
- 230000004044 response Effects 0.000 claims description 44
- 230000002093 peripheral effect Effects 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 30
- 238000004519 manufacturing process Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000010276 construction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 235000015429 Mirabilis expansa Nutrition 0.000 description 1
- 244000294411 Mirabilis expansa Species 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 235000013536 miso Nutrition 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
一种SPI通信防误识别方法、装置、电子设备及存储介质,应用于SPI通信技术领域,以解决SPI通信过程中主器件对从器件在位状态的误识别问题。该方法先通过主器件获取待识别器件中存储识别目标值的识别寄存器地址和存储防误识别目标值的虚拟寄存器地址。然后主器件根据上述识别寄存器地址从当前在位从器件读取第一返回值,根据上述虚拟寄存器地址从当前在位从器件读取第二返回值。最后,主器件在确定第一返回值与识别目标值相同,且第二返回值与防误识别目标值相同时,确定待识别器件在位;或者,主器件在确定第一返回值与识别目标值相同,但第二返回值与防误识别目标值不同时,确定待识别器件不在位。
Description
技术领域
本申请涉及SPI通信技术领域,尤其涉及一种SPI通信防误识别方法、装置、电子设备及存储介质。
背景技术
串行外围设备接口(serial peripheral interface,SPI,简称:串行外设接口)是一种同步串行接口技术,可以实现全双工同步通信。在通信过程中,SPI通信采用主从模式,即通常有一个主器件和一个或者多个从器件,主器件通过发出的片选信号对各个从器件进行控制。基于上述特点,现有的很多手机、平板电脑等终端设备的外设传感器均采用了SPI通信的方式。因为主器件的同一SPI总线能够连接的从器件可能有多个,所以主器件需要先对在位的从器件进行识别;在识别出在位从器件后,主器件继续与从器件进行通信,控制从器件的状态,获取从器件的设备信息和数据等。
目前,在手机、平板电脑等终端设备中,为了识别与主器件的SPI总线连接的从器件是否在位,通常主器件会通过从器件上的识别寄存器中存储的识别信息进行识别,即主器件根据待识别器件的识别寄存器地址获取一个从器件的返回值,然后将该返回值与主器件中待识别器件的目标值进行对比,若该返回值与目标值相同,则待识别器件在位。但是,随着器件的连续性迭代,主器件的同一片选引脚上往往会挂载多个从器件,在遍历识别多个从器件时,由于其他非在位从器件的识别寄存器中的识别目标值存在不确定性,会存在读取数据与非在位器件预期一致的情况,导致从器件被误识别。
发明内容
本申请实施例的目的在于提供一种SPI通信防误识别方法、装置、电子设备及存储介质,用以解决SPI通信过程中主器件对从器件的在位状态容易出现误识别的问题。
为解决上述问题,本申请采用如下技术方案:
第一方面,本申请实施例提供了一种SPI通信防误识别方法,应用于电子设备,该电子设备包括通过SPI总线连接的第一器件和第二器件,该方法包括:第一器件向第二器件发送待识别器件的第一地址;第一器件接收第二器件响应于第一地址返回的第一返回值;第一器件向第二器件发送待识别器件的第二地址;第一器件接收第二器件响应于第二地址返回的第二返回值;第一器件确定第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,第一器件确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值;待识别器件包括能够与第一器件的同一SPI总线连接的多个器件。
通过上述方案,第一器件作为主器件可以通过待识别器件的第一地址和第二地址从作为从器件的第二器件中获得两个不同的返回值,即第一返回值和第二返回值;若第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,第一器件确定待识别器件在位;若第一器件确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,第一器件确定待识别器件不在位;其中,第一返回值存储于第二器件的识别寄存器内,第二返回值存储于第二器件的虚拟寄存器内。基于此,可以解决现有的SPI通信过程中主器件仅通过识别寄存器中的目标值对从器件在位状态进行识别时容易出现误识别的问题。
在一种可能的实现方式中,该方法还包括:第一器件向第二器件发送待识别器件的第三地址;第一器件接收第二器件响应于第三地址返回的第三返回值;第一器件确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,第一器件确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器内,第一防误识别目标值和第二防误识别目标值分别存储在待识别器件的两个虚拟寄存器中。
通过上述方案,当多个第二器件作为从器件在同一设备上使用时,因为识别目标值和第一防误识别目标值也可能相同,所以用户或者厂家可以结合使用环境的实际需求设置第二防误识别目标值,然后将从器件的识别目标值、第一防误识别目标值和第二防误识别目标值作为从器件在位状态识别的判断依据,以更好地解决因使用环境的实际需求造成的从器件在位状态误识别问题。需要说明的是,用户或者厂家也可以根据实际使用环境增设额外的防误识别目标值,并不局限于只增设第二防误识别目标值。
在一种可能的实现方式中,上述第一器件向第二器件发送待识别器件的第一地址之前,该方法还包括:第一器件读取第一地址和第一地址的识别目标值,以及第二地址和第二地址的第一防误识别目标值。
通过上述方案,第一器件可以直接从存储器读取待识别器件的第一地址和第一地址的识别目标值,以及第二地址和第二地址的第一防误识别目标值。当第一器件的SPI总线连接了一个从器件时,第一器件可以直接通过第一地址从第二器件获取第一返回值,以及通过第二地址从第二器件获取第二返回值,不需要每个待识别器件与第一器件连接一次以获取注册信息,提高了防误识别的效率。
在一种可能的实现方式中,第一器件获取上述第一地址和第一地址的识别目标值,以及上述第二地址和第二地址的第一防误识别目标值之前,该方法还包括:第一器件获取注册器件发送的驱动注册信息,该注册器件包括待识别器件;第一器件对该驱动注册信息进行解析得到待识别器件的第一地址和该第一地址对应的识别目标值;以及待识别器件的第二地址和该第二地址对应的第一防误识别目标值。基于此,第一器件可以提前通过注册器件的驱动注册信息进行解析得到注册器件的第一地址和第一地址对应的识别目标值;以及注册器件的第二地址和第二地址对应的第一防误识别目标值,后续进行待识别器件的在位状态识别时,可以更加方便快捷地获取上述数据。
在一种可能的实现方式中,第一器件向第二器件发送待识别器件的第一地址之前,该方法还包括:根据注册器件的第一地址和第一地址的识别目标值,以及注册器件的第二地址和第二地址的第一防误识别目标值构建查询列表;第一器件根据该查询列表确定待识别器件的第一地址对应的识别目标值;以及待识别器件的第二地址对应的第一防误识别目标值。基于此,在第一器件连接第二器件后,第一器件可以先根据查询列表获取待识别器件的第一地址和第一地址的识别目标值,以及第二地址和第二地址的第一防误识别目标值,使第一器件可以更加快速地获取待识别器件的信息。
在一种可能的实现方式中,第一防误识别目标值为待识别器件出厂时预设的唯一值。第一防误识别目标值可以根据待识别器件的出厂时间、出厂批次、生产地址等构建得到唯一识别码作为第一防误识别目标值,并通过待识别器件内设置的虚拟寄存器进行存储。通过这种方式,无需用户配置第一防误识别目标值,提高了用户使用的便捷性,同时该第一防误识别目标值为唯一值,也可以提高防误识别的准确性。
第二方面,本申请实施例提供了一种SPI通信防误识别装置,该SPI通信防误识别装置用于第一器件,包括:收发器和处理器。收发器用于向第二器件发送待识别器件的第一地址;接收第二器件响应于第一地址返回的第一返回值;收发器还用于向第二器件发送待识别器件的第二地址;以及接收第二器件响应于第二地址返回的第二返回值。处理器用于确定收发器接收的第一返回值与识别目标值相同,且收发器接收的第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,处理器用于确定收发器接收的第一返回值与识别目标值相同,但收发器接收的第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器内,第一防误识别目标值存储于待识别器件的虚拟寄存器内。通过该第一器件可以对后续连接的第二器件的在位状态进行更为准确的识别。
在一种可能的实现方式中,收发器还用于向第二器件发送待识别器件的第三地址;接收第二器件响应于第三地址返回的第三返回值。处理器还用于确定收发器接收的第一返回值与识别目标值相同,收发器接收的第二返回值与第一防误识别目标值相同,且收发器接收的第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,处理器还用于确定收发器接收的第一返回值与识别目标值相同,收发器接收的第二返回值与第一防误识别目标值相同,但收发器接收的第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器内,第一防误识别目标值和第二防误识别目标值分别存储在待识别器件的两个虚拟寄存器中。
第三方面,本申请实施例提供了一种SPI通信防误识别方法,应用于电子设备,该电子设备包括通过SPI总线连接的第一器件和第二器件;该方法包括:第二器件接收第一器件发送的待识别器件的第一地址;第二器件响应于第一地址向第一器件返回第一返回值;第二器件接收第一器件发送的待识别器件的第二地址;第二器件响应于第二地址向第一器件返回第二返回值;其中,第一器件用于确定第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,第一器件用于确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器内,第一防误识别目标值存储在待识别器件的虚拟寄存器中。基于此,第二器件可以根据第一器件发送的地址返回一个返回值,为第一器件对待识别器件的在位状态识别提供支撑数据。
在一种可能的实现方式中,该方法还包括:第二器件接收第一器件发送的待识别器件的第三地址;第二器件响应于第三地址向第一器件返回第三返回值;第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器中,第一防误识别目标值和第二防误识别目标值分别存储在待识别器件的两个虚拟寄存器中。基于此,在两个待识别器件的识别目标值和第一防误识别目标值相同的情况下,主器件也可以很好地解决因使用环境的实际需求造成的从器件在位状态误识别问题。
第四方面,本申请实施例提供了一种SPI通信防误识别装置,该SPI通信防误识别装置用于第二器件,包括:收发器和处理器;收发器用于接收第一器件发送的待识别器件的第一地址;处理器用于响应于收发器接收的第一地址,通过收发器向第一器件返回第一返回值;收发器还用于接收第一器件发送的待识别器件的第二地址;处理器还用于响应于收发器接收的第二地址,通过收发器向第一器件返回第二返回值;其中,第一器件用于确定第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,第一器件用于确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值和第一防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器中,第一防误识别目标值存储在待识别器件的虚拟寄存器中。
在一种可能的实现方式中,收发器还用于接收第一器件发送的待识别器件的第三地址;处理器还用于响应于第三地址,通过收发器向第一器件返回第三返回值;其中,第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值;识别目标值存储于待识别器件的识别寄存器中,第一防误识别目标值和第二防误识别目标值分别存储在待识别器件的两个虚拟寄存器中。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括上述第二方面任一种可能的实现方式中的第一器件,以及通过SPI总线与该第一器件连接的上述第四方面任一种可能的实现方式中的第二器件。
第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当计算机指令在电子设备上运行时,实现上述第一方面中任一种可能的实现方式中的方法或者实现上述第三方面中任一种可能的实现方式中的方法。
第七方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面中任一种可能的实现方式中的方法或者实现上述第三方面中任一种可能的实现方式中的方法。
第二方面至第七方面以及可能的实现方式所带来的技术效果可参见上述第一方面及可能的实现方式带来的技术效果描述,此处不再赘述。
附图说明
图1为本申请实施例提供的SPI通信的控制原理图;
图2为本申请实施例提供的从器件连接方式示意图;
图3为本申请实施例提供的从器件误识别过程示意图;
图4为本申请实施例提供的从器件在位状态误识别流程示意图;
图5为本申请实施例提供的一种SPI通信防误识别方法流程示意图;
图6为本申请实施例提供的一种从器件在位状态识别流程示意图;
图7为本申请实施例提供的又一种SPI通信防误识别方法流程示意图;
图8为本申请实施例提供的又一种从器件在位状态识别流程示意图;
图9为本申请实施例提供的一种SPI通信防误识别装置的拓扑结构示意图;
图10为本申请实施例提供的一种电子设备的拓扑结构示意图;
图11为本申请实施例提供的又一种SPI通信防误识别装置的拓扑结构示意图;
图12为本申请实施例提供的又一种SPI通信防误识别装置的拓扑结构示意图。
具体实现方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
SPI通信采用主从模式,即通常有一个主器件和一个或者多个从器件,主器件通过发出的片选信号(片选引脚CS的输入信号)对各个从器件进行控制。具体的,如图1所示,主器件(即微控制单元(micro controllerunit,MCU)(主))连接了多个从器件(包括MCU(从)和外围器件1#~外围器件n#),主器件通过各个从器件的CS引脚输入的片选信号对各个从器件进行控制(如图1所示,MCU(主)的输入/输出(input/output,I/O)引脚分别连接至外围器件(1#~n#)的CS引脚)。主器件通过串行时钟引脚(serial clock,SCK)向各个从器件传输时钟信号,控制数据交换的时机以及速率。主器件通过主机输出从机输入引脚(masterout slave in,MOSI)向各个从器件发送数据,并通过主机输入从机输出引脚(master inslave out,MISO)接收各个从器件返回的数据,可以实现全双工同步通信。基于上述特点,现有的很多手机、平板电脑等终端设备的外设传感器均采用了SPI通信的方式。考虑到在SPI通信过程中,主器件的同一SPI总线能够连接的从器件可能有多个,因此主器件需要先对在位的从器件进行识别;在识别出在位从器件后,主器件继续与从器件进行通信,控制从器件的状态,获取从器件的设备信息和数据等。
目前,在手机、平板电脑等终端设备中,为了识别与主器件的SPI总线连接的从器件是否在位,通常主器件会通过从器件上的识别寄存器中存储的识别信息进行识别,即主器件根据待识别器件的识别寄存器地址获取一个从器件的返回值,然后将该返回值与主器件中待识别器件的目标值进行对比,若该返回值与目标值相同,则待识别器件在位。但是,随着器件的连续性迭代,主器件的同一片选引脚上往往会挂载多个从器件,在遍历识别多个从器件时,由于其他非在位从器件的识别寄存器中的识别目标值存在不确定性,会存在读取数据与非在位器件预期一致的情况,导致从器件被误识别。
如图2所示,假设主器件的同一片选引脚能够通过SPI总线连接A、B、C和D四个器件中的任意一个;其中,实际在位从器件用实线表示,未在位从器件用虚线表示。当主器件进行从器件的在位状态识别时,其总体流程如图3所示,即主器件分别将各个从器件作为待识别器件,并依据待识别器件的识别寄存器地址从当前在位从器件获取一个返回值;然后将该返回值与待识别器件的识别目标值进行对比;若两个值相同,则待识别器件在位;否则待识别器件不在位。
示例性的,主器件将器件A作为待识别器件时,先读取器件A的识别寄存器地址Addr_A;然后根据Addr_A从在位从器件获取返回值Val_A;最后将返回值Val_A与器件A的识别目标值为Val_A’进行对比;若返回值Val_A与识别目标值为Val_A’相同,则器件A在位;否则,器件A不在位。主器件将器件B作为待识别器件时,先读取器件B的识别寄存器地址Addr_B;然后根据Addr_B从在位从器件获取返回值Val_B;最后将返回值Val_B与器件B的识别目标值为Val_B’进行对比;若返回值Val_B与识别目标值为Val_B’相同,则器件B在位;否则,器件B不在位。主器件将器件C作为待识别器件时,先读取器件C的识别寄存器地址Addr_C;然后根据Addr_C从在位从器件获取返回值Val_C;最后将返回值Val_C与器件C的识别目标值为Val_C’进行对比;若返回值Val_C与识别目标值为Val_C’相同,则器件C在位;否则,器件C不在位。主器件将器件D作为待识别器件时,先读取器件D的识别寄存器地址Addr_D,然后根据Addr_D从在位从器件获取返回值Val_D,最后将返回值Val_D与器件D的识别目标值为Val_D’进行对比,若返回值Val_D与识别目标值为Val_D’相同,则器件D在位;否则,器件D不在位。但是,采取这种识别方式仍然可能出现在位从器件误识别问题。
具体的,如图4所示,主器件在进行在位从器件的识别前,先进行从器件A的驱动注册,然后从驱动注册信息中解析得到从器件A的识别寄存器地址Addr_A和识别目标值Val_A’并存储在存储器中。当器件A作为待识别器件时,主器件先从存储器读取器件A的识别寄存器地址Addr_A和识别目标值Val_A’;然后依据识别寄存器地址Addr_A通过SPI总线从当前在位从器件中获取返回值Val_A;确定该返回值Val_A与识别目标值Val_A’是否一致;若该返回值Val_A与识别目标值Val_A’一致,那么器件A被识别在位,主器件将会保存器件A的信息。但是,实际上当前在位从器件是器件C,那么主器件将器件C作为待识别器件时,又会认为是器件C在位,然后保存器件C的信息。这与实际硬件连接关系不符,后续必然产生功能问题以及稳定性问题。为解决该问题,如表1所示,本申请在各个器件中新增虚拟寄存器地址Addr_X,通过该虚拟寄存器地址Addr_X从器件A读取的固定数值为Val_X;从器件C读取的固定数值为Val1_C,且Val1_C与Val_X不一致,从而实现器件A与器件C的防误识别。
表1
Addr\Val\器件 | A | B | C | D |
Addr_A | Val_A | Val_B | Val_A | Val_D |
Addr_X | Val_X | 随机 | Val1_C | 随机 |
基于上述方案,本申请实施例提供了一种SPI通信防误识别方法,该方法应用于电子设备,且该电子设备包括通过SPI总线连接的第一器件和第二器件;如图5所示,以下方案中以第一器件作为主器件51,第二器件作为从器件5n。该SPI通信防误识别方法包括如下步骤:
S501.主器件51读取待识别器件的第一地址和该第一地址的识别目标值,以及待识别器件的第二地址和该第二地址的第一防误识别目标值。
示例性的,主器件可以从存储器中读取待识别器件的第一地址和该第一地址的识别目标值,以及待识别器件的第二地址和该第二地址的第一防误识别目标值。其中,待识别器件包括能够与主器件的同一SPI总线连接的多个从器件。例如,主器件的同一SPI总线能够与5个从器件连接,那么待识别器件就包括5个从器件。第一地址为待识别器件的识别寄存器地址,第二地址为待识别器件的虚拟寄存器地址,且该第一地址和第二地址均预存储在主器件中。上述的识别目标值可以是存储在待识别器件的识别寄存器内的固定值,其可以在器件出厂时厂家进行预设,也可以是用户通过器件手册或者自定义的方式进行预设。该识别目标值可以但不限于使用元器件型号、厂家预设编码序列、用户预设编码序列等多种形式。第一防误识别目标值可以根据待识别器件的生产地址、生产时间或者生产批次等中的一个或者多个进行构建得到。例如某器件的生产地址是“xxx省xx市/县/州xx街道xx号”,那么可以按照“该地址的行政区域代码+门牌号”的形式设置第一防误识别目标值;或者,也可以按照“该地址的行政区域代码+门牌号+生产时间”的形式设置第一防误识别目标值。通过这种方式,可以更好地保证各个器件第一防误识别目标值的唯一性。
需要说明的是,上述的识别目标值和第一防误识别目标值的设置方式只是本申请实施例提供的部分实施方案,识别目标值和第一防误识别目标值的设置方式也可以依据实际使用环境进行设置,本申请实施例对此不作具体限定。
在一种可选的实施方案中,主器件在执行S501之前还可先执行以下步骤:
a.主器件51获取注册器件发送的驱动注册信息;其中,注册器件包括待识别器件。
b.主器件51对该驱动注册信息进行解析得到待识别器件的第一地址和第一地址对应的识别目标值;以及待识别器件的第二地址和第二地址对应的第一防误识别目标值。
其中,上述的驱动注册信息至少包括注册器件的型号、类别、生产厂商、识别寄存器中存储的识别目标值、虚拟寄存器中存储的第一防误识别目标值等内容;同时考虑到注册器件的注册和解析过程为本领域的常规技术手段,所以本申请实施例在此不做赘述。
在另一种可选的实施方案中,主器件在执行S501之前还可先执行以下步骤:
A.根据注册器件的第一地址和该第一地址的识别目标值,以及注册器件的第二地址和该第二地址的第一防误识别目标值构建查询列表。
B.主器件根据该查询列表确定待识别器件的第一地址对应的识别目标值;以及第二地址对应的第一防误识别目标值。
示例性的,用户可以通过注册器件的第一地址和该第一地址的识别目标值,以及注册器件的第二地址和该第二地址的第一防误识别目标值先手动创建查询列表;然后,将该查询列表通过串口程序写入主器件。另外,用户也可以在主器件中设置驱动注册信息解析程序,通过驱动注册信息解析程序对导入的待识别器件的驱动注册信息进行解析得到注册器件的第一地址和该第一地址的识别目标值,以及注册器件的第二地址和该第二地址的第一防误识别目标值;然后根据解析到的上述数据构建查询列表。具体的,通过设置的驱动注册信息解析程序可以对主器件的同一SPI总线能够连接的多个从器件的驱动注册列表进行解析,得到上述数据后通过内存映射表单(memorymap)的形式进行存储,然后需要对从器件进行在位状态识别时,主器件再依次从该内存映射表单中读取待识别器件的第一地址和该第一地址的识别目标值,以及待识别器件的第二地址和该第二地址的第一防误识别目标值。
需要说明的是,上述查询列表的构建方式只是本申请实施例提供的部分实施方案,实际查询列表的构建方式也可以采取目前本领域常用的其它各种方式。
进一步需要说明的是,上述实现过程中的S501为可选步骤,本申请实际执行时可以按照实际需求进行选择,同时上述的步骤顺序并不限制主器件的实际执行步骤,待识别器件的第一地址和第二地址可以按照上述步骤逐步发送给从器件5n,也可以同时发送给从器件5n,具体实现方式可以按照实际需求进行设置。
S502.主器件51向从器件5n发送待识别器件的第一地址。
其中,该第一地址为待识别器件内部设置的一个物理寄存器地址。因为主器件的同一SPI总线实际使用时通常只会连接一个从器件,所以在进行待识别器件的在位状态识别时,主器件每次只获取一个待识别器件的第一地址并通过SPI总线发送给从器件。
S503.从器件5n接收主器件51发送的第一地址。
S504.从器件5n响应于该第一地址向主器件51返回第一返回值。
其中,若从器件5n的第一地址与待识别器件的第一地址一致,那么从器件5n就可以正确返回其内部的识别寄存器存储的固定值;否则从器件5n返回一个错误代码。例如,该代码可以是“错误(error)”、“未发现(not found,也称作404状态码)”等。另外,该错误代码也可以通过用户进行自定义得到。
S505.主器件51接收从器件5n响应于第一地址返回的第一返回值。
S506.主器件51向从器件5n发送待识别器件的第二地址。
其中,第二地址可以为待识别器件内部设置的一个虚拟寄存器的地址,也可以为一个物理寄存器的地址,具体可以根据用户的实际需求进行设置。
S507.从器件5n接收主器件51发送的第二地址。
S508.从器件5n响应于该第二地址向主器件51返回第二返回值。
其中,若该第二地址与待识别器件的第二地址一致,那么从器件5n就可以正确返回其内部的虚拟寄存器存储的固定值;否则从器件5n返回一个错误代码。该代码可以是“错误(error)”、“未发现(not found,也称作404状态码)”等。另外,该错误代码也可以通过用户进行自定义得到。
S509.主器件51接收从器件5n响应于第二地址返回的第二返回值。
S510.主器件确定第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,主器件51确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值,识别目标值可以为待识别器件内设置的识别寄存器内存储的固定值;第一防误识别目标值为待识别器件内设置的虚拟寄存器存储的唯一值。
示例性地,仍以图3为例,假设主器件51的同一片选引脚能够连接A、B、C和D四个器件中的任意一个,当前在位的从器件为器件C,器件A/B/D都不在位。则参照本申请的实施例进行在位识别时,如图6所示,主器件81在进行在位从器件的识别前,先进行器件A的驱动注册,以从器件A的驱动注册信息中解析得到器件A的识别寄存器地址Addr_A、识别目标值Val_A’、虚拟寄存器地址Addr_X以及第一防误识别目标值Val_X’,然后将Addr_A、Val_A’、Addr_X和Val_X’存储在存储器中。当器件A作为待识别器件时,主器件51先从存储器中读取Addr_A、Val_A’、Addr_X和Val_X’,然后将Addr_A通过SPI总线发送给器件C,器件C接收Addr_A后依据该地址通过SPI总线向主器件51返回一个返回值Val_A;然后,主器件51将Addr_X通过SPI总线发送给器件C,器件C接收Addr_X后依据该地址通过SPI总线向主器件51返回一个返回值Val_X;最后,主器件51对比返回值Val_A是否与器件A的识别目标值Val_A’一致,且返回值Val_X是否与器件A的第一防误识别目标值Val_X’一致(即Val_A==Val_A’&&Val_X==Val_X’?);若不满足上述条件,则器件A不在位。通过上述方式,主器件51可以更为准确的对从器件进行防误识别。
请参看图7,当多个第二器件作为从器件在同一设备的同一SPI总线上使用时,识别目标值和第一防误识别目标值也可能相同,因此用户或者厂家可以结合使用环境的实际需求设置第二防误识别目标值并存储在从器件中。第一器件作为主器件,将从器件的识别目标值、第一防误识别目标值和第二防误识别目标值作为从器件在位状态识别的判断依据,以更好地解决因使用环境的实际需求造成的从器件在位状态误识别问题,该方法的具体执行步骤如下。
S701.主器件71读取待识别器件的第一地址和该第一地址的识别目标值,待识别器件的第二地址和该第二地址的第一防误识别目标值,以及待识别器件的第三地址和该第三地址的第二防误识别目标值。
示例性的,主器件可以从存储器中直接读取待识别器件的第一地址和该第一地址的识别目标值,待识别器件的第二地址和该第二地址的第一防误识别目标值,以及待识别器件的第三地址和该第三地址的第二防误识别目标值。其中,待识别器件包括能够与主器件的同一SPI总线连接的多个从器件。例如,主器件的同一SPI总线能够与6个从器件连接,那么待识别器件就包括6个从器件。第一地址为待识别器件的识别寄存器地址;第二地址和第三地址为待识别器件的两个不同的虚拟寄存器地址。上述的识别目标值可以是存储在待识别器件的识别寄存器内的固定值,其可以在器件出厂时厂家进行预设,也可以是用户通过器件手册或者自定义的方式进行预设。该识别目标值可以但不限于使用元器件型号、厂家预设编码序列、用户预设编码序列等多种形式。第一防误识别目标值可以根据待识别器件的生产地址、生产时间或者生产批次等中的一个或者多个进行构建得到。例如某器件的生产地址是“xxx省xx市/县/州xx街道xx号”,那么可以按照“该地址的行政区域代码+门牌号”的形式设置第一防误识别目标值;或者,也可以按照“该地址的行政区域代码+门牌号+生产时间”的形式设置第一防误识别目标值。第二防误识别目标值则可以依据待识别器件的生产批次、生产序列号等采用二进制编码的方式进行编码得到。
通过这种方式,可以更好地保证各个器件第一防误识别目标值和第二防误识别目标值的唯一性。
进一步的,当待识别器件为同种器件时,用户或者厂家可以使用一个二进制编码作为第一识别防误识别目标值,使用另一个二进制编码作为第二识别防误识别目标值,且第一识别防误识别目标值和第二识别防误识别目标值可以按照待识别器件的生产批次和同批次序列号进行编码,以保证第一识别防误识别目标值和第二识别防误识别目标值组成的编码组唯一性。例如,可以采用“生产批次”的二进制编码作为第一识别防误识别目标值,“同批次序列号”的二进制编码则作为第二识别防误识别目标值。
需要说明的是,上述的识别目标值、第一防误识别目标值和第二防误识别目标值的设置方式只是本申请实施例提供的部分实施方案,识别目标值、第一防误识别目标值和第二防误识别目标值的设置方式也可以在满足实际使用需求的情况下进行自定义,本申请实施例对此不作具体限定。为了满足使用环境的实际需求,用户也可以继续增设存储有防误识别目标值的虚拟寄存器,并使用多个防误识别目标值进行组合的方式进行从器件在位状态的防误识别。例如,每个虚拟寄存器的防误识别目标值可以设为一个不同的二进制编码序列。
通过上述方式,即使主器件的同一SPI总线上的从器件更换了,主器件也能够快速通过存储器中存储的数据对当前在位的从器件进行在位识别,提高了从器件在位状态防误识别的准确性。
在一种可选的实施方案中,在执行S701之前,上述方法还包括:
a.主器件获取注册器件发送的驱动注册信息;其中,注册器件包括待识别器件;
b.主器件对驱动注册信息进行解析得到待识别器件的第一地址和该第一地址对应的识别目标值;待识别器件的第二地址和该第二地址对应的第一防误识别目标值;以及待识别器件的第三地址和该第三地址对应的第二防误识别目标值。
其中,上述的驱动注册信息至少包括注册器件的型号、类别、生产厂商、识别寄存器中存储的识别目标值、虚拟寄存器中存储的防误识别目标值等内容;同时考虑到注册器件的注册和解析过程为本领域的常规技术手段,所以本申请实施例在此不做赘述。
在另一种可选的实施方案中,在执行S701之前,上述方法还包括:
A.根据注册器件的第一地址和该第一地址的识别目标值,注册器件的第二地址和该第二地址的第一防误识别目标值,以及注册器件的第三地址和该第三地址的第二防误识别目标值构建查询列表;
B.主器件根据该查询列表确定待识别器件的第一地址对应的识别目标值;第二地址对应的第一防误识别目标值;以及第三地址对应的第二防误识别目标值。
示例性的,用户可以通过注册器件的第一地址和该第一地址的识别目标值,注册器件的第二地址和该第二地址的第一防误识别目标值,以及注册器件的第三地址和该第三地址的第二防误识别目标值先手动创建查询列表;然后,将该查询列表通过串口程序写入主器件。另外,用户也可以在主器件中设置驱动注册信息解析程序,通过驱动注册信息解析程序对导入的待识别器件的驱动注册信息进行解析得到注册器件的第一地址和该第一地址的识别目标值,注册器件的第二地址和该第二地址的第一防误识别目标值,以及注册器件的第三地址和该第三地址的第一防误识别目标值;然后根据解析到的上述数据构建查询列表。具体的,通过设置的驱动注册信息解析程序可以对主器件的同一SPI总线能够连接的多个从器件的驱动注册列表进行解析,得到上述数据后通过内存映射表单的形式进行存储,然后需要对从器件进行在位状态识别时,主器件再依次从该内存映射表单中读取待识别器件的第一地址和该第一地址的识别目标值,待识别器件的第二地址和该第二地址的第一防误识别目标值,以及待识别器件的第三地址和该第三地址的第一防误识别目标值.
需要说明的是,上述查询列表的构建方式只是本申请实施例提供的部分实施方案,实际查询列表的构建方式也可以采取目前本领域常用的其它各种方式。
进一步需要说明的是,上述实现过程中的S701为可选步骤,本申请实际执行时可以按照实际需求进行选择,同时上述的步骤顺序并不限制主器件的实际执行步骤,待识别器件的第一地址和第二地址可以按照上述步骤逐步发送给从器件7n,也可以同时发送给从器件7n,具体实现方式可以按照实际需求进行设置。
S702.主器件71向从器件7n发送待识别器件的第一地址。
其中,该第一地址为待识别器件内部设置的一个物理寄存器地址。因为主器件的同一SPI总线实际使用时通常只会连接一个从器件,所以在进行待识别器件的在位状态识别时,主器件每次只获取一个待识别器件的第一地址并通过SPI总线发送给从器件。
S703.从器件7n接收主器件71发送的第一地址。
S704.从器件7n响应于该第一地址向主器件71返回第一返回值。
其中,若从器件的第一地址与待识别器件的第一地址一致,那么从器件就可以正确返回其内部的识别寄存器存储的固定值;否则从器件返回一个错误代码。例如,该代码可以是“错误(error)”、“未发现(not found,也称作404状态码)”等。另外,该错误代码也可以通过用户进行自定义得到。
S705.主器件71接收从器件7n响应于第一地址返回的第一返回值。
S706.主器件71向从器件7n发送待识别器件的第二地址。
其中,第二地址可以为待识别器件内部设置的一个虚拟寄存器的地址,也可以为一个物理寄存器的地址,具体可以根据用户的实际需求进行设置。
S707.从器件7n接收主器件71发送的第二地址。
S708.从器件7n响应于该第二地址向主器件71返回第二返回值。
其中,若该从器件的第二地址与待识别器件的第二地址一致,那么从器件就可以正确返回其内部的虚拟寄存器存储的固定值;否则从器件返回一个错误代码。该代码可以是“错误(error)”、“未发现(not found,也称作404状态码)”等。另外,该错误代码也可以通过用户进行自定义得到。
S709.主器件71接收从器件7n响应于第二地址返回的第二返回值。
S710.主器件71向从器件7n发送待识别器件的第三地址。
S711.从器件7n接收主器件71发送的第三地址。
S712.从器件7n响应于该第三地址向主器件71返回第三返回值。
其中,若该从器件的第二地址与待识别器件的第二地址一致,那么从器件就可以正确返回其内部的虚拟寄存器存储的固定值;否则从器件返回一个错误代码。该代码可以是“错误(error)”、“未发现(not found,也称作404状态码)”等。另外,该错误代码也可以通过用户进行自定义得到。
S713.主器件71接收从器件7n响应于第三地址返回的第三返回值;
S714.主器件71确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,主器件确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位。其中,识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值。识别目标值可以为待识别器件内设置的识别寄存器内存储的固定值;第一防误识别目标值为待识别器件内设置的虚拟寄存器存储的唯一值。
示例性地,仍以图3为例,假设主器件71的同一片选引脚能够连接A、B、C和D四个器件中的任意一个,当前在位的从器件为器件C,器件A/B/D都不在位。则参照本申请的实施例进行在位识别时,如图8所示,主器件71在进行在位从器件的识别前,先进行器件A的驱动注册,以从驱动注册信息中解析得到器件A的识别寄存器地址Addr_A、识别目标值Val_A’、虚拟寄存器地址Addr_X、第一防误识别目标值Val_X’、虚拟寄存器地址Addr_Y以及第二防误识别目标值Val_Y’,然后将Addr_A、Val_A’、Addr_X、Val_X’、Addr_Y和Val_Y’存储在存储器中。当器件A作为待识别器件时,主器件71先从存储器中读取Addr_A、Val_A’、Addr_X、Val_X’、Addr_Y和Val_Y’;其次,主器件71将Addr_A通过SPI总线发送给器件C,器件C接收Addr_A后依据该地址通过SPI总线向主器件71返回一个返回值Val_A;再次,主器件71将Addr_X通过SPI总线发送给器件C,器件C接收Addr_X后依据该地址通过SPI总线向主器件71返回一个返回值Val_X;然后,主器件71将Addr_Y通过SPI总线发送给器件C,器件C接收Addr_Y后依据该地址通过SPI总线向主器件71返回一个返回值Val_Y;最后,主器件71分析返回值Val_A是否与器件A的识别目标值Val_A’一致,返回值Val_X是否与器件A的第一防误识别目标值Val_X’一致,且返回值Val_Y是否与器件A的第一防误识别目标值Val_Y’一致(即Val_A==Val_A’&&Val_X==Val_X’&&Val_Y==Val_Y’?);若不满足上述条件,则器件A不在位。
通过上述方式,主器件71可以更为准确的对从器件7n进行防误识别。
请参看图9,本申请实施例提供了一种SPI通信防误识别装置900,用于实施上述的SPI通信防误识别方法,该SPI通信防误识别装置900包括收发器901和处理器902,且该SPI通信防误识别装置900可以是第一器件或者第二器件本身,或者集成于第一器件或第二器件的功能模块或芯片。其中,处理器902可以是中央处理器(central processing unit,CPU)、通用处理器、网络处理器(networkprocessor,NP)、数字信号处理器(digital signalprocessing,DSP)、微处理器、微控制器、可编程逻辑器件(programmable logic device,PLD)或它们的任意组合。处理器902还可以是其它具有处理功能的装置,如电路、器件或软件模块,本申请不予限制。
在一种实施方案中,当该SPI通信防误识别装置900是第一器件时,收发器901用于向第二器件发送待识别器件的第一地址;并接收第二器件响应于第一地址返回的第一返回值;向第二器件发送待识别器件的第二地址;并接收第二器件响应于第二地址返回的第二返回值。处理器902用于确定收发器901接收的第一返回值与识别目标值相同,且收发器901接收的第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,处理器902用于确定收发器901接收的第一返回值与识别目标值相同,但收发器901接收的第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值。
通过上述方式,第一器件可以通过识别目标值和第一防误识别目标值对第二器件进行在位识别,确定第二器件具体是哪一个待识别器件,从而保证电子设备能够正常运行。
进一步的,本申请实施例考虑到在某些情况下同一电子设备可能会使用到多个相同型号的器件,但每个器件的实际使用需求并不相同。为了防止出现误识别问题,本申请实施例提供的第一器件中的收发器901还用于向第二器件发送待识别器件的第三地址;接收第二器件响应于第三地址返回的第三返回值;处理器902还用于确定收发器901接收的第一返回值与识别目标值相同,收发器901接收的第二返回值与第一防误识别目标值相同,且收发器901接收的第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,处理器902还用于确定收发器901接收的第一返回值与识别目标值相同,收发器901接收的第二返回值与第一防误识别目标值相同,但收发器901接收的第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值。
需要说明的是,上述的第一地址、第二地址、第三地址、识别目标值、第一防误识别目标值和第二防误识别目标值等可以按照图5~图8对应实施例所描述的方式进行获取,在此不做赘述。
在一种实施方案中,当该SPI通信防误识别装置900是第二器件时,收发器901用于接收第一器件发送的待识别器件的第一地址;处理器902用于响应于收发器901接收的第一地址,通过收发器901向第一器件返回第一返回值;收发器901还用于接收第一器件发送的待识别器件的第二地址;处理器902还用于响应于收发器901接收的第二地址,通过收发器901向第一器件返回第二返回值;其中,第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,第一器件还用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中识别目标值和第一防误识别目标值为不同的值。
进一步的,考虑到在某些情况下同一电子设备可能会使用到多个相同型号的器件,但每个器件的实际使用需求并不相同。为了防止出现误识别问题,本申请实施例提供的第二器件中的收发器901还用于接收第一器件发送的待识别器件的第三地址;处理器902还用于响应于收发器901接收的第三地址,通过收发器901向第一器件返回第三返回值;其中,第一器件用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,第一器件还用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值。
通过本实施例提供的SPI通信防误识别装置,第一器件可以通过获取到待识别器件的多个地址从第二器件读取多个返回值,然后将各个地址获取到的返回值与各个地址对应的目标值进行对比,在所有返回值与对应的目标值一致时,确定待识别器件在位,避免了在位从器件的误识别问题。
需要说明的是,上述实现过程中待识别器件的第一地址、第二地址、第三地址、识别目标值、第一防误识别目标值以及第二防误识别目标值等可以通过与处理器902连接的存储器进行存储,该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random accessmemory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DRRAM)。
请参看图10,本申请实施例提供了一种电子设备1000,该电子设备1000包括上述的第一器件1001以及通过SPI总线1002与第一器件1001连接的上述第二器件1003。
示例性的,该电子设备1000可以是手机、平板电脑、或者其他内部设有SPI通信器件的设备。第一器件1001可以选用具备SPI接口的片上系统(system on chip,SOC)芯片、单片机等;第二器件1003可以为采用SPI通信的传感器,或者也可以选用具备SPI接口的SOC芯片、单片机等。
可以理解的是,上述SPI通信防误识别装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述SPI通信防误识别装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用集成的单元的情况下,图11示出了上述实施例中所涉及的一种SPI通信防误识别装置1100可能的结构示意图。
SPI通信防误识别装置1100应用于第一器件时,包括:
读取模块1101,用于读取待识别器件的第一地址和第一地址的识别目标值,以及待识别器件的第二地址和第二地址的第一防误识别目标值;
收发模块1102,用于向第二器件发送待识别器件的第一地址;接收第二器件响应于第一地址返回的第一返回值;向第二器件发送待识别器件的第二地址;接收第二器件响应于第二地址返回的第二返回值;
器件在位识别模块1103,用于确定第一返回值与识别目标值相同,且第二返回值与第一防误识别目标值相同时,确定待识别器件在位;或,器件在位识别模块用于确定第一返回值与识别目标值相同,但第二返回值与第一防误识别目标值不同时,确定待识别器件不在位;其中,识别目标值与第一防误识别目标值为不同的值。
可选的,收发模块1102还用于向第二器件发送待识别器件的第三地址;接收第二器件响应于第二地址返回的第三返回值;器件在位识别模块1103还用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,且第三返回值与第二防误识别目标值相同时,确定待识别器件在位;或,器件在位识别模块1103还用于确定第一返回值与识别目标值相同,第二返回值与第一防误识别目标值相同,但第三返回值与第二防误识别目标值不同时,确定待识别器件不在位;其中识别目标值、第一防误识别目标值和第二防误识别目标值为不同的值。
在一种实施方案中,SPI通信防误识别装置1100还包括获取模块(图11中未示出),获取模块用于获取注册器件发送的驱动注册信息;对驱动注册信息进行解析得到待识别器件的第一地址和第一地址对应的识别目标值;以及待识别器件的第二地址和第二地址对应的第一防误识别目标值;其中,注册器件包括待识别器件。解析得到的第一地址和第一地址对应的识别目标值;以及第二地址和第二地址对应的第一防误识别目标值存储在存储器中。主器件进行在位从器件的识别时,读取模块1101从存储器中读取待识别器件的第一地址和第一地址的识别目标值,以及待识别器件的第二地址和第二地址的第一防误识别目标值。
在另一种实施方案中,SPI通信防误识别装置1100还包括查询模块(图11中未示出),该查询模块用于根据查询列表确定待识别器件的第一地址对应的识别目标值;以及第二地址对应的第一防误识别目标值;其中查询列表根据注册器件的第一地址和第一地址的识别目标值,以及注册器件的第二地址和第二地址的第一防误识别目标值构建得到。查询列表存储在存储器中,主器件进行在位从器件的识别时,读取模块1101从存储器中读取查询列表确定第一地址和第一地址的识别目标值,以及第二地址和第二地址的第一防误识别目标值。
当然,上述SPI通信防误识别装置中的单元模块不限于上述的读取模块、收发模块、器件在位识别模块、获取模块以及查询模块。其中,获取模块、查询模块、读取模块和器件在位识别模块可以是上述的处理器902。收发模块可以是集成于处理器902或者单独设置的其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路;例如收发模块可以是上述的图9示出的与其他器件连接的收发器901。
在采用集成的单元的情况下,图12示出了上述实施例中所涉及的另一种SPI通信防误识别装置1200可能的结构示意图。该SPI通信防误识别装置1200应用于第二器件时,包括:
收发模块1201,用于接收第一器件发送的待识别器件的第一地址;
处理模块1202,用于响应于收发模块接收的第一地址,通过收发模块向第一器件返回第一返回值;
收发模块1201,还用于接收第一器件发送的待识别器件的第二地址;
处理模块1202,还用于响应于收发模块接收的第二地址,通过收发模块向第一器件返回第二返回值。
可选的,收发模块1201,还用于接收第一器件发送的待识别器件的第三地址;
处理模块1202,还用于响应于收发模块接收的第三地址,通过收发模块向第一器件返回第三返回值。
当然,上述SPI通信防误识别装置中的单元模块不限于上述的收发模块和处理模块。其中,处理模块可以是上述图9示出的处理器902。收发模块可以是集成于处理器902或者单独设置的其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路;例如收发模块可以是上述的图9示出的与其他器件连接的收发器901。
在一种实施方案中,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当计算机指令在电子设备上运行时,实现上述各种实施方案中的方法。示例性地,该计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact discread-onlymemory,CD-ROM)、磁带、软盘、U盘和光数据存储设备等。
在另一种实施方案中,本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如上述任意一种实施方案中的方法。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备,如:可以是单片机,芯片等,或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种SPI通信防误识别方法,应用于电子设备,所述电子设备包括通过串行外围设备接口SPI总线连接的第一器件和第二器件,其特征在于,所述方法包括:
所述第一器件向所述第二器件发送待识别器件的第一地址;
所述第一器件接收所述第二器件响应于所述第一地址返回的第一返回值;
所述第一器件向所述第二器件发送待识别器件的第二地址;
所述第一器件接收所述第二器件响应于所述第二地址返回的第二返回值;
所述第一器件确定所述第一返回值与识别目标值相同,且所述第二返回值与第一防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件确定所述第一返回值与识别目标值相同,但所述第二返回值与第一防误识别目标值不同时,确定所述待识别器件不在位;所述识别目标值与所述第一防误识别目标值为不同的值。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一器件向所述第二器件发送待识别器件的第三地址;
所述第一器件接收所述第二器件响应于所述第三地址返回的第三返回值;
所述第一器件确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,且所述第三返回值与第二防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,但所述第三返回值与第二防误识别目标值不同时,确定所述待识别器件不在位;其中所述识别目标值、所述第一防误识别目标值和所述第二防误识别目标值为不同的值。
3.根据权利要求1所述的方法,其特征在于,所述第一器件向所述第二器件发送待识别器件的第一地址之前,所述方法还包括:
所述第一器件读取所述第一地址和所述第一地址的识别目标值,以及所述第二地址和所述第二地址的第一防误识别目标值。
4.根据权利要求3所述的方法,其特征在于,所述第一器件读取所述第一地址和所述第一地址的识别目标值,以及所述第二地址和所述第二地址的第一防误识别目标值之前,所述方法还包括:
所述第一器件获取注册器件发送的驱动注册信息,所述注册器件包括所述待识别器件;
所述第一器件对所述驱动注册信息进行解析得到所述待识别器件的所述第一地址和所述第一地址对应的识别目标值;以及所述待识别器件的所述第二地址和所述第二地址对应的第一防误识别目标值。
5.根据权利要求1所述的方法,其特征在于,所述第一器件向所述第二器件发送待识别器件的第一地址之前,所述方法还包括:根据注册器件的第一地址和所述第一地址的识别目标值,以及所述注册器件的第二地址和所述第二地址的第一防误识别目标值构建查询列表;
所述第一器件根据所述查询列表确定所述待识别器件的所述第一地址对应的所述识别目标值;以及所述第二地址对应的所述第一防误识别目标值。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一防误识别目标值为所述待识别器件出厂时预设的唯一值。
7.一种SPI通信防误识别装置,所述SPI通信防误识别装置用于第一器件,其特征在于,包括:收发器和处理器;
所述收发器用于向第二器件发送待识别器件的第一地址;接收所述第二器件响应于所述第一地址返回的第一返回值;向所述第二器件发送待识别器件的第二地址;接收所述第二器件响应于所述第二地址返回的第二返回值;
所述处理器用于确定所述收发器接收的所述第一返回值与识别目标值相同,且所述收发器接收的所述第二返回值与第一防误识别目标值相同时,确定所述待识别器件在位;或,所述处理器用于确定所述收发器接收的所述第一返回值与识别目标值相同,但所述收发器接收的所述第二返回值与第一防误识别目标值不同时,确定所述待识别器件不在位;其中,所述识别目标值与所述第一防误识别目标值为不同的值。
8.根据权利要求7所述的SPI通信防误识别装置,其特征在于,所述收发器还用于向所述第二器件发送待识别器件的第三地址;接收所述第二器件响应于所述第三地址返回的第三返回值;
所述处理器还用于确定所述收发器接收的所述第一返回值与识别目标值相同,所述收发器接收的所述第二返回值与第一防误识别目标值相同,且所述收发器接收的所述第三返回值与第二防误识别目标值相同时,确定所述待识别器件在位;或,所述处理器还用于确定所述收发器接收的所述第一返回值与识别目标值相同,所述收发器接收的所述第二返回值与第一防误识别目标值相同,但所述收发器接收的所述第三返回值与第二防误识别目标值不同时,确定所述待识别器件不在位;其中,所述识别目标值、所述第一防误识别目标值和所述第二防误识别目标值为不同的值。
9.一种SPI通信防误识别方法,应用于电子设备,其特征在于,所述电子设备包括通过SPI总线连接的第一器件和第二器件;该方法包括:
所述第二器件接收所述第一器件发送的待识别器件的第一地址;
所述第二器件响应于所述第一地址向所述第一器件返回第一返回值;
所述第二器件接收所述第一器件发送的待识别器件的第二地址;
所述第二器件响应于所述第二地址向所述第一器件返回第二返回值;其中,所述第一器件用于确定所述第一返回值与识别目标值相同,且所述第二返回值与第一防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件用于确定所述第一返回值与识别目标值相同,但所述第二返回值与所述第一防误识别目标值不同时,确定所述待识别器件不在位;所述识别目标值与所述第一防误识别目标值为不同的值。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第二器件接收所述第一器件发送的待识别器件的第三地址;
所述第二器件响应于所述第三地址向所述第一器件返回第三返回值;
所述第一器件用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,且所述第三返回值与第二防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,但所述第三返回值与第二防误识别目标值不同时,确定所述待识别器件不在位;其中,所述识别目标值、所述第一防误识别目标值和所述第二防误识别目标值为不同的值。
11.一种SPI通信防误识别装置,所述SPI通信防误识别装置用于第二器件,其特征在于,包括:收发器和处理器;
所述收发器用于接收第一器件发送的待识别器件的第一地址;
所述处理器用于响应于所述收发器接收的所述第一地址,通过所述收发器向所述第一器件返回第一返回值;
所述收发器还用于接收所述第一器件发送的待识别器件的第二地址;
所述处理器还用于响应于所述收发器接收的所述第二地址,通过所述收发器向所述第一器件返回第二返回值;其中,所述第一器件用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件还用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值不同时,确定所述待识别器件不在位;其中所述识别目标值和所述第一防误识别目标值为不同的值。
12.根据权利要求11所述的SPI通信防误识别装置,其特征在于,
所述收发器还用于接收所述第一器件发送的待识别器件的第三地址;
所述处理器还用于响应于所述收发器接收的所述第三地址,通过所述收发器向所述第一器件返回第三返回值;其中,所述第一器件用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,且所述第三返回值与第二防误识别目标值相同时,确定所述待识别器件在位;或,所述第一器件还用于确定所述第一返回值与识别目标值相同,所述第二返回值与第一防误识别目标值相同,但所述第三返回值与第二防误识别目标值不同时,确定所述待识别器件不在位;其中所述识别目标值、所述第一防误识别目标值和所述第二防误识别目标值为不同的值。
13.一种电子设备,其特征在于,包括权利要求7或8所述的第一器件,以及通过SPI总线与所述第一器件连接的权利要求11或12所述的第二器件。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在电子设备上运行时,实现权利要求1-6中任一项所述的方法或者实现权利要求9或10所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210590516.0A CN117171076A (zh) | 2022-05-26 | 2022-05-26 | Spi通信防误识别方法、装置、电子设备及存储介质 |
PCT/CN2023/095855 WO2023226990A1 (zh) | 2022-05-26 | 2023-05-23 | Spi通信防误识别方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210590516.0A CN117171076A (zh) | 2022-05-26 | 2022-05-26 | Spi通信防误识别方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117171076A true CN117171076A (zh) | 2023-12-05 |
Family
ID=88918525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210590516.0A Pending CN117171076A (zh) | 2022-05-26 | 2022-05-26 | Spi通信防误识别方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117171076A (zh) |
WO (1) | WO2023226990A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102654857A (zh) * | 2011-03-04 | 2012-09-05 | 希姆通信息技术(上海)有限公司 | 采用gpio接口模拟spi协议的通信方法 |
JP6210187B2 (ja) * | 2012-10-23 | 2017-10-11 | セイコーエプソン株式会社 | 集積回路装置、物理量測定装置、電子機器および移動体 |
CN113190277B (zh) * | 2020-01-14 | 2024-06-14 | 深圳怡化电脑股份有限公司 | 设备识别方法、设备识别装置及终端设备 |
CN112965926B (zh) * | 2021-03-05 | 2024-04-30 | 张玉禄 | 一种spi接口安全芯片及spi接口电子装置 |
CN113065172A (zh) * | 2021-04-07 | 2021-07-02 | 北京衍芯科技有限公司 | 一种多设备共用spi接口总线的方法 |
-
2022
- 2022-05-26 CN CN202210590516.0A patent/CN117171076A/zh active Pending
-
2023
- 2023-05-23 WO PCT/CN2023/095855 patent/WO2023226990A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023226990A1 (zh) | 2023-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6854053B2 (en) | Method for identifying and communicating with a plurality of slaves in a master-slave system | |
BR112014018207B1 (pt) | Método implementado por um roteador e dispositivo para adquirir informação de recurso | |
KR20050003960A (ko) | 다중 호스트 인터페이스를 지원하는 스마트 카드 겸용이동형 저장 장치 및 이에 대한 인터페이스 방법 | |
US20210124696A1 (en) | Device for a single wire digital bus, master device, sensor, and method to assign addresses to multiple devices on a single wire digital bus | |
US8700814B2 (en) | Intelligent bus address self-configuration in a multi-module system | |
CN111295710A (zh) | 用于识别半导体装置的共享外部电阻的存储器装置的设备及方法 | |
EP2388960A1 (en) | Intelligent bus address self-configuration in a multi-module system | |
US20120030549A1 (en) | Data transmission detecting device, data transmission detecting method and electronic device thereof | |
CN113225406A (zh) | 一种主机和多从机的通信方法 | |
US11452149B2 (en) | System and method of recovering pairing information of wireless devices | |
CN116321101A (zh) | 一种智慧社区信息共享方法及系统 | |
CN117171076A (zh) | Spi通信防误识别方法、装置、电子设备及存储介质 | |
CN111177046B (zh) | 一种多总线设备融合访问的方法及装置 | |
CN108920299B (zh) | 储存媒体 | |
CN110245732B (zh) | 一种u位数字化管控装置及其电路板 | |
CN109218149B (zh) | 设备接入方法、装置、网络系统及网关 | |
JP3655597B2 (ja) | 電子機器、電子カード、及びカード識別方法 | |
US9232009B2 (en) | Data integration apparatus for use in sensor network | |
US20050249235A1 (en) | Method of accessing a mac address for a nic device | |
CN106548088A (zh) | 一种基于移动终端的保密存储区读取控制方法及移动终端 | |
WO2020107430A1 (zh) | 日志存储方法、日志读取方法、智能电池、无人机 | |
CN107957969B (zh) | 判定设备连接状态及设备类型的方法 | |
US11467044B2 (en) | Multi-channel remote temperature monitor | |
CN116597887B (zh) | Lpddr芯片的降容测试方法、系统、设备以及存储介质 | |
CN113883691B (zh) | 空调器参数的读取方法、装置、空调器和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |