一种I2C设备数据采集方法及其系统与流程

文档序号:21087484发布日期:2020-06-12 16:59阅读:418来源:国知局
一种I2C设备数据采集方法及其系统与流程

本发明涉及数据读取领域,尤其是一种i2c设备数据采集方法及其系统。



背景技术:

i2c接口温湿度传感器是最常用的环境量测量传感器之一,由于具有精度高,外围电路简单,可组网等特点而被广泛使用。

现有技术中,主设备可以通过区分作为从设备的i2c接口温湿度传感器的总线地址来获取不同传感器的数据信息,参考图1和图2,其中,a类i2c接口传感器的数据字节数为m,b类i2c接口传感器的数据字节数为n。在只有a类i2c接口传感器或b类i2c接口传感器单独组网时,读取传感器数据的流程如图1和图2所示,a类i2c接口传感器共有i个,i2c起始地址是x,则相应的地址分别为x、x+1、……x+i;而b类i2c接口传感器有j个,i2c起始地址是y,相应的地址分别为y、y+1、……y+j。i2c接口传感器的地址空间大小有限;而且由于传感器芯片厂家的不同,i2c地址的编码规则与数据读取方式会有所差异,现有组网方式只能处理一类传感器,在多种传感器混合接入时,由于不同的传感器会使用不同的上位机软件,导致不同类型的传感器不能接入同一i2c总线混合使用,不能正确的读取所有传感器的数据,给主设备的软件开发制造了兼容性困难,也给现场施工带来诸多不便,急需解决以上问题。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种i2c设备数据采集系统,利用多路选择器扩展地址空间,使得主机接入的i2c设备的数量不受限制。

为此,本发明的第二个目的是提供一种i2c设备数据采集方法,兼容多种i2c地址类型的i2c设备。

本发明所采用的技术方案是:

第一方面,本发明提供一种i2c设备数据采集系统,包括用于读取i2c设备的数据的主机、多路选择器和至少两种i2c地址类型的i2c设备,一个所述多路选择器与一个所述i2c设备连接,所述主机的一个i2c接口与所述多路选择器连接,所述主机为每个多路选择器分配一个分配地址。

进一步地,所述i2c设备数据采集系统还包括与所述i2c接口连接的直连i2c设备。

进一步地,所述i2c设备和/或所述直连i2c设备包括i2c接口传感器。

进一步地,所述i2c接口传感器为温湿度传感器。

第二方面,本发明提供一种i2c设备数据采集方法,应用于所述的i2c设备数据采集系统,所述i2c设备数据采集方法包括与多路选择器连接的i2c设备的数据采集方法,所述与多路选择器连接的i2c设备的数据采集方法包括以下步骤:

地址选通步骤,选通多路选择器的分配地址;

i2c地址选通步骤,根据所述多路选择器的分配地址对应的i2c设备的类型选通所述i2c设备的i2c地址;

参数设置步骤,根据所述多路选择器的分配地址对应的i2c设备的类型设置数据读取参数;

数据校验步骤,获取i2c数据长度,判断所述i2c数据长度和第一预设数据长度是否一致以校验所述i2c设备是否在位,所述i2c数据长度和第一预设数据长度相同,则判断所述i2c设备在位,根据所述i2c设备的类型获取所述第一预设数据长度;

数据读取步骤,根据所述数据读取参数读取在位的i2c设备的数据。

进一步地,所述与多路选择器连接的i2c设备的数据采集方法还包括:

重复步骤,改变选通的多路选择器的分配地址,并重复执行所述i2c地址选通步骤、所述参数设置步骤、所述数据校验步骤和所述数据读取步骤。

进一步地,所述i2c设备数据采集方法还包括直连i2c设备数据读取步骤:

选通直连i2c设备的i2c地址;

根据所述直连i2c设备的i2c地址对应的i2c设备的类型设置数据读取参数;

获取i2c数据长度,判断所述i2c数据长度和第二预设数据长度是否一致以校验所述直连i2c设备是否在位,所述i2c数据长度和所述第二预设数据长度相同,则判断所述直连i2c设备在位,根据所述直连i2c设备的类型获取所述第二预设数据长度;

根据所述数据读取参数读取在位的直连i2c设备的数据。

进一步地,判断选通的直连i2c设备的i2c地址与i2c设备的i2c地址相同,且所述直连i2c设备在位时,则i2c地址为所述i2c地址且与多路选择器连接的i2c设备不在位,否则,利用所述与多路选择器连接的i2c设备的数据采集方法判断i2c地址为所述i2c地址且与多路选择器连接的i2c设备是否在位。

本发明的有益效果是:

本发明通过采用一个多路选择器连接一个i2c设备,主机的一个i2c接口与多路选择器连接,实现地址空间扩展,使得主机接入的i2c设备的数量不受限制,克服现有技术中存在i2c接口传感器的地址空间有限的技术问题;另外,通过数据长度校验实现i2c设备在位判断,根据在位的i2c设备的类型设置数据读取参数以实现对i2c设备进行数据读取,使得i2c设备数据采集方法能兼容多种i2c地址类型的i2c设备,克服现有技术中主机软件对多种i2c接口传感器无法兼容的技术问题。

另外,本发明还通过设置直连i2c设备,提供另一种i2c设备与主机的连接方式;并且利用数据长度校验可判断直连i2c设备是否在位,根据在位的直连i2c设备的类型设置数据读取参数以实现对直连i2c设备进行数据读取。

附图说明

图1是现有技术中a类i2c接口传感器单独组网的数据读取流程图;

图2是现有技术中b类i2c接口传感器单独组网的数据读取流程图;

图3是本发明中一种i2c设备数据采集系统的一具体实施例示意图;

图4是本发明中一种i2c设备数据采集方法的一具体实施例流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

实施例1

一种i2c设备数据采集系统,包括用于读取i2c设备的数据的主机、多路选择器和至少两种i2c地址类型的i2c设备,i2c设备以温湿度传感器为例,温湿度传感器有a类传感器和b类传感器,则温湿度传感器的i2c地址有两种,a类传感器的i2c起始地址为x,b类传感器的i2c起始地址为y。一个多路选择器与一个i2c设备连接,主机的一个i2c接口与多路选择器连接,主机为每个多路选择器分配一个分配地址。另外,i2c设备数据采集系统还包括与上述i2c接口连接的直连i2c设备,每一个直连i2c设备对应有一个i2c地址。其中,i2c设备和/或直连i2c设备可以是i2c接口传感器,本实施例中,i2c接口传感器为温湿度传感器。

因此,i2c设备数据采集系统通过采用一个多路选择器连接一个i2c设备,主机的一个i2c接口与多路选择器连接,实现地址空间扩展,在同一i2c接口接入多个i2c设备,接入数量不受i2c设备的地址空间的限制,使得主机接入的i2c设备的数量不受限制,克服现有技术中存在i2c接口传感器的地址空间有限的技术问题;其中,每个多路选择器只使用一路,则由一个多路选择器和一个i2c设备组成的单元可以方便地安装在不同的位置,增强数据采集系统的灵活性。另外,本发明还通过设置直连i2c设备,提供另一种i2c设备与主机的连接方式。

参考图3,图3是本发明中一种i2c设备数据采集系统的一具体实施例示意图,图3中i2c设备以i2c接口温湿度传感器为例,设温湿度传感器芯片分a类传感器,b类传感器两类,它们的i2c起始地址分别是x,y,地址空间大小为i,j,多路选择器的i2c起始地址为z,地址空间大小为k,k远大于i和j。可以通过图3的结构实现主机设备与i2c接口温湿度传感器的组网,其中,a类传感器_1、a类传感器_2、……a类传感器_i、b类传感器_1、b类传感器_2、……b类传感器_j为直连温湿度传感器,它们直接与主机的i2c接口连接,直连温湿度传感器的i2c地址为x、x+1、……x+i、y、y+1、……y+j。而与多路选择器连接的传感器为a类传感器_1和b类传感器_1,共有a个多路选择器连接a类传感器_1,b个多路选择器连接b类传感器_1。主机为与多路选择器连接的a类传感器、b类传感器分配的分配地址为多路选择器的i2c地址,即z、z+1、……z+a、z+a+1、z+a+2、……z+a+b,a+b=k。图3中,当接入a类传感器_1,且拨码地址为1时,不可再接入与多路选择器连接的a类传感器_1;当接入b类传感器_1,且拨码地址为1时,不可再接入与多路选择器连接的b类传感器_1。

实施例2

一种i2c设备数据采集方法,应用于实施例1所述的i2c设备数据采集系统,其中,主机为多路选择器分配地址,而且每个分配地址所连接的i2c设备的类型已知,则每个分配地址对应的i2c设备的数据读取参数和数据长度、i2c地址已知,分配地址、分配地址对应的i2c设备的i2c地址、分配地址对应的i2c设备的数据读取参数和数据长度(即第一预设数据长度)的对应关系被预先存储在主机中,例如,i2c设备为温湿度传感器,共有a类传感器和b类传感器两类,数据读取参数如温湿度变换参数;而a类传感器的数据长度为m,i2c起始地址为x,b类传感器的数据长度为n,i2c起始地址为y。i2c设备数据采集方法包括与多路选择器连接的i2c设备的数据采集方法,与多路选择器连接的i2c设备的数据采集方法包括以下步骤:

地址选通步骤,选通多路选择器的分配地址。

i2c地址选通步骤,根据多路选择器的分配地址对应的i2c设备的类型选通i2c设备的i2c地址;参考图3,i2c设备以温湿度传感器为例,温湿度传感器包括a类传感器和b类传感器,与多路选择器连接的a类传感器_1的i2c地址为x,与多路选择器连接的b类传感器_1的i2c地址为y。

参数设置步骤,根据多路选择器的分配地址对应的i2c设备的类型设置数据读取参数;a类传感器和b类传感器的数据读取参数不同。

数据校验步骤,获取i2c数据长度,判断i2c数据长度和第一预设数据长度是否一致以校验i2c设备是否在位,i2c数据长度和第一预设数据长度相同,则判断i2c设备在位,根据i2c设备的类型获取第一预设数据长度,i2c设备以温湿度传感器为例,a类传感器的第一预设数据长度为m,b类传感器的第一预设数据长度为n。

数据读取步骤,根据数据读取参数读取在位的i2c设备的数据。

重复步骤,改变选通的多路选择器的分配地址,并重复执行i2c地址选通步骤、参数设置步骤、数据校验步骤和数据读取步骤,可以读取其他与多路选择器连接的i2c设备的数据。

本实施例的i2c设备数据采集方法通过数据长度校验实现i2c设备在位判断,确认假定的i2c设备是否存在,根据在位的i2c设备的类型设置数据读取参数以实现对i2c设备进行数据读取,使得i2c设备数据采集方法能兼容多种i2c地址类型的i2c设备,克服现有技术中主机软件对多种i2c接口传感器无法兼容的技术问题。并提出了上位机的软件兼容处理方法。

作为i2c设备数据采集方法的进一步改进,参考图3,主机预存有直连i2c设备的i2c地址、对应的直连i2c设备的数据读取参数和数据长度(即第二预设数据长度)的对应关系,以温湿度传感器为例,a类传感器的i2c地址的起始地址为x,数据长度为m,b类传感器的i2c地址的起始地址为y,数据长度为n。i2c设备数据采集方法还包括直连i2c设备数据读取步骤:

选通直连i2c设备的i2c地址;

根据直连i2c设备的i2c地址对应的i2c设备的类型设置数据读取参数;

获取i2c数据长度,判断i2c数据长度和第二预设数据长度是否一致以校验直连i2c设备是否在位,i2c数据长度和第二预设数据长度相同,则判断直连i2c设备在位,根据直连i2c设备的类型获取第二预设数据长度;以温湿度传感器为例,a类传感器的第二预设数据长度为m,b类传感器的第二预设数据长度为n。

根据数据读取参数读取在位的直连i2c设备的数据。

改变选通的直连i2c设备的i2c地址,并重复执行以上的步骤,可以读取其他直连i2c设备的数据。利用数据长度校验可判断直连i2c设备是否在位,根据在位的直连i2c设备的类型设置数据读取参数以实现对直连i2c设备进行数据读取。

另外,当判断选通的直连i2c设备的i2c地址与i2c设备的i2c地址相同,且直连i2c设备在位时,则可以i2c地址为上述的i2c地址且与多路选择器连接的i2c设备不在位,否则,利用与多路选择器连接的i2c设备的数据采集方法判断i2c地址为上述i2c地址且与多路选择器连接的i2c设备是否在位。

参考图3和图4,图4是本发明中一种i2c设备数据采集方法的一具体实施例流程图,图4的流程图对应图3的i2c设备数据采集系统,具体地,a类传感器_1、a类传感器_2、……a类传感器_i、b类传感器_1、b类传感器_2、……b类传感器_j为直连温湿度传感器,它们直接与主机的i2c接口连接。直连温湿度传感器的i2c地址为x、x+1、……x+i、y、y+1、……y+j,由于每个i2c地址对应的直连温湿度传感器的类型已知,则每个直连温湿度传感器的i2c地址对应的数据读取参数、第二预设数据长度已知。而与多路选择器连接的传感器为a类传感器_1(i2c地址为x)和b类传感器_1(i2c地址为y),共有a个多路选择器连接a类传感器_1,b个多路选择器连接b类传感器_1。主机为与多路选择器连接的a类传感器、b类传感器分配的分配地址为多路选择器的i2c地址,即z、z+1、……z+a、z+a+1、z+a+2、……z+a+b,a+b=k。由于每个分配地址对应的温湿度传感器的类型已知,则每个分配地址对应的数据读取参数、第一预设数据长度已知。则i2c设备数据采集方法的具体流程为:

首先选通地址x,并设置地址x对应的数据读取参数,启动数据转换,

读取地址x对应的i2c数据长度,判断读取的i2c数据长度是否与地址x对应的第二预设数据长度是否相同,相同则代表地址x对应的直连温湿度传感器(a类传感器)在位,读取第二预设数据长度的数据进行数据转换获取温湿度数据,表示i2c地址为x且与多路选择器连接的a类传感器不在位;否则,直连温湿度传感器不在位,则表示i2c地址为x且与多路选择器连接的a类传感器可能在位,记录这一信息;

接着选通下一个地址x+1,处理过程与地址x相同,不过不同的是,当判断直连温湿度传感器在位时,读取第二预设数据长度的数据进行数据转换;当判断直连温湿度传感器不在位时,直接进入下一个地址的判断,直至地址x+i完成处理判断后,实现对直连的a类传感器的全部判断过程,进入对直连的b类传感器的判断,处理过程与直连的a类传感器类似,不再赘述;进入带多路选择器的温湿度传感器是否在位的处理判断;

按照分配地址的顺序,先选通地址z,在选通地址z对应的温湿度传感器的i2c地址,本实施例中,i2c地址为x,再根据地址z对应的温湿度传感器的类型设置数据读取参数,设置完成后启动转换,读取地址z对应的i2c数据长度,将读取的i2c数据长度与第一预设数据长度进行对比,数据长度相同则表示与多路选择器连接的温湿度传感器在位,读取数据并进行数据转换获取具体的温湿度数据;否则,数据长度不一致,表示与多路选择器连接的温湿度传感器不在位,进入下一地址的处理判断,与地址z的处理过程相同,不再赘述,直到地址z+a+b,完成与多路选择器连接的所有温湿度传感器的数据读取过程,循环执行以上流程,通过数据长度判断设备在位则进行数据读取,可实现同一版本软件对不同传感器模块的兼容,只要拨码地址不冲突,可混合使用。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1