存取数据的方法及系统的制作方法

文档序号:6513193阅读:189来源:国知局
存取数据的方法及系统的制作方法
【专利摘要】本发明提供了一种存取数据的方法及系统。该方法包括:利用一管理模块分别自多个应用程序接收多笔传输数据与多个识别码,并依据接收顺序将传输数据储存至伫列。此管理模块依据一传送顺序,自伫列中取出其中一传输数据并通过内部整合电路驱动模块传送至对应的元件。并且,利用此管理模块经由内部整合电路驱动模块而自元件接收对应的回应数据,再将回应数据传送至对应的应用程序。通过本发明,可避免多个应用程序同时存取I2C汇流排,进而避免数据存取错误的状况发生,而让系统更稳定、更易除错,缩短开发所需花费的时间。
【专利说明】存取数据的方法及系统

【技术领域】
[0001]本发明是有关于一种数据传输技术,且特别是有关于一种用于内部整合电路(Inter-1ntegrated Circuit, I2C)汇流排的存取数据的方法及系统。

【背景技术】
[0002]I2C汇流排是一种串列通信汇流排,使用多主从架构,其是为了让主机板、嵌入式系统或手机用以连接低速周边装置而发展。目前I2C汇流排是电子产品常见的数据传输接口,而I2C汇流排通常用来传送一些慢速的数据,如:温度感测器、速度感测器、数字陀螺仪坐寸O
[0003]然而,由于I2C汇流排在硬件设计上有其数量限制,通常会将多个I2C元件全数接在同一条I2C汇流排上,因此经常会发生同时存取I2C汇流排的情形。此时,倘若控制软件处理不当,势必会造成数据存取不正确,进而影响系统不稳定。并且造成单一元件驱动程序在开发中不易除错,导致延长了开发时间。


【发明内容】

[0004]本发明提供一种存取数据的方法及系统,可让多个内部整合电路(Inter-1ntegrated Circuit, I2C)元件共用同一个I2C汇流排,而不会造成同时存取的错误。
[0005]本发明的存取数据的方法,用于一电子装置。本方法包括:由管理模块分别自多个应用程序接收多笔传输数据与多个识别码,并依据接收顺序将传输数据储存至伫列(Queue);管理模块依据伫列的传送顺序,自上述传输数据中取出其中之一;管理模块将上述所取出的传输数据通过I2C驱动模块传送至对应的元件;管理模块通过I2C驱动模块而自元件接收对应的回应数据;以及管理模块依据上述所取出的传输数据对应的一识别码,将回应数据传送至对应的应用程序。
[0006]在本发明的一实施例中,上述在由管理模块分别自上述应用程序接收传输数据之前,还可由管理模块自各应用程序接收注册请求,藉以依据注册请求产生对应的一识别码。并且,管理模块传送对应注册请求的识别码至各应用程序。
[0007]在本发明的一实施例中,上述方法中,管理模块还可自各应用程序接一取消注册请求,以取消取消注册请求对应的识别码。
[0008]在本发明的一实施例中,上述各应用程序的传输数据格式包括识别码、I2C地址、传输数据的数据长度以及其数据本文。
[0009]在本发明的一实施例中,上述方法中,还可由管理模块检查伫列中是否存在有传输数据,以在检查到存在传输数据时,依据传送顺序,取出其中一传输数据。
[0010]本发明的存取数据的系统,包括:元件;i2c汇流排,耦接至上述元件;处理单元,耦接至I2C汇流排,并经由I2C汇流排存取上述元件;以及存储单元,耦接至处理单元,且储存有供处理单元执行的多个模块。上述模块包括:管理模块,自多个应用程序接收多笔传输数据与多个识别码,并依据接收顺序将上述传输数据储存至伫列,且依据传送顺序来传送传输数据;及I2C驱动模块,通过管理模块与应用程序沟通,并且经由I2C汇流排取存上述元件。上述管理模块依据传送顺序,取出其中一传输数据并传送至I2C驱动模块。而I2C驱动模块经由I2C汇流排将上述所取出的传输数据传送至上述元件,并且,I2C驱动模块将经由I2C汇流排而自上述元件所接收的回应数据,传送至管理模块,使得管理模块依据上述所取出的传输数据对应的识别码,将回应数据传送至对应的应用程序。
[0011]基于上述,利用管理模块来管理I2C汇流排的存取,可在多个I2C元件共用同一个I2C汇流排的情况下,避免同时存取I2C汇流排。
[0012]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。

【专利附图】

【附图说明】
[0013]图1是依照本发明一实施例的存取数据的系统方块图;
[0014]图2是依照本发明一实施例的存取数据的系统架构图;
[0015]图3是依照本发明一实施例的存取数据的方法流程图;
[0016]图4是依照本发明一实施例的传输数据格式的示意图;
[0017]图5是依照本发明一实施例的单一应用程序存取数据的方法流程的示意图;
[0018]图6是依照本发明一实施例的两个应用程序存取数据的方法流程的示意图。
[0019]附图标记
[0020]110:处理单元
[0021]120:存储单元
[0022]130:12C 汇流排
[0023]140、140_1、140_2:元件
[0024]210_1、210_2:元件
[0025]230:管理模块
[0026]240:12C 驱动模块
[0027]410 ?440:栏位
[0028]S305?S325:存取数据的方法各步骤
[0029]S501?S531:单一应用程序存取数据的方法各步骤
[0030]S601?S639:两个应用程序存取数据的方法各步骤

【具体实施方式】
[0031]计算机系统通常提供内部整合电路(Inter-1ntegrated Circuit, I2C)汇流排与周边元件连接,通过软件或固件的驱动,来达成控制周边元件。由于多个I2C元件共用同一个I2C汇流排,因此容易造成同时存取的错误状况发生。为此,本发明提出一种存取数据的方法及系统,可以非同步方式来存取I2C汇流排,藉此可避免同时存取I2C汇流排的情况发生。
[0032]图1是依照本发明一实施例的存取数据的系统方块图。请参照图1,该系统例如为手机、笔记本电脑、桌上型计算机等电子装置,其包括处理单元110、存储单元120、I2C汇流排130以及元件140。处理单元110耦接至存储单元120及I2C汇流排130。处理单元110经由I2C汇流排130来存取元件140。
[0033]处理单兀110例如为中央处理单兀(Central Processing Unit,CPU)或是其他可程序化的微处理器(Microprocessor)等。存储单元120例如为随机存取存储器(RandomAccess Memory, RAM)、只读存储器(Read-Only Memory, ROM)、快闪存储器(Flash memory)或磁盘存储装置(Magnetic disk storage device)等。元件140例如为具有I2C接口的温度感测器、速度感测器、数字陀螺仪等。
[0034]在本实施例中,存储单元120中储存有多个程序码片段。上述程序码片段在被安装后,会由处理单元110来执行。这些程序码片段包括多个指令,处理单元110通过这些指令来存取数据方法的多个步骤。在本实施例中,存取数据的系统仅包括一个处理单元110,而在其他实施例中,存取数据的系统亦可包括多个处理单元110,而由这些处理单元来执行被安装的程序码片段。
[0035]图2是依照本发明一实施例的存取数据的系统架构图。请同时参照图1及图2,管理模块230与I2C驱动模块240例如为存在于存储单元120中,以供处理单元110执行。而为了方便说明,本实施例列举了两个应用程序210_1、210_2,以及两个具有I2C接口的元件140_1、140_2。而在其他实施例中并不限制应用程序与元件的数量。
[0036]在此,于作业系统中设置一管理模块230,藉以专门负责控管I2C汇流排130的软件或固件,所有I2C汇流排130的存取都通过此管理模块230,可避免多个应用程序同时存取I2C汇流排130。另外,管理模块230还配置了一块存储器空间足以存放待处理的I2C指令和数据。此存储器空间例如为先进先出(First In First Out,FIFO)的伫列(Queue)。上述伫列可以提供应用程序210_1、210_2要求存取I2C汇流排130的指令和数据的暂存。管理模块230按照伫列的传送顺序来处理所接收到的传输数据,并将处理后所得到的回应数据传回给要求存取元件的应用程序。而上述管理模块230可以是一般应用软件,也可以是驱动程序。
[0037]I2C驱动模块240也就是I2C汇流排130的驱动程序(driver),其通过管理模块230与应用程序210_1、210_2沟通,并且经由I2C汇流排130取存元件140_1、140_2。
[0038]底下即搭配上述系统来说明存取数据的详细流程。图3是依照本发明一实施例的存取数据的方法流程图。在本实施例中,以应用程序210_1、210_2为例,并假设应用程序210_1、210_2欲同时通过I2C汇流排130来存取元件140_1、140_2。S卩,应用程序210_1欲通过I2C汇流排130来存取元件140_1,且应用程序210_2欲通过I2C汇流排130来存取元件 140_2。
[0039]请同时参照图2及图3,在步骤S305中,管理模块230分别自多个应用程序接收多笔传输数据与多个识别码,并依据接收顺序将上述传输数据储存至伫列。在此,应用程序例如将传输数据与识别码封装为符合传输数据格式的封包,而将封包传送至管理模块230。举例来说,图4是依照本发明一实施例的传输数据格式的示意图。请参照图4,传输数据格式包括四个栏位410?440。栏位410记录识别码,栏位420记录欲存取元件的I2C地址,栏位430记录数据长度,栏位440则是记录数据本文(包括数据或/及指令)。上述识别码用以识别应用程序的身分。
[0040]应用程序210_1、210_2首先以如图4所示的传输数据格式,将其对应的识别码与传输数据封装为封包后,传送至管理模块230。而管理模块230在接收到封包后,则依据接收顺序将上述封包储存至伫列中,以待管理模块230逐一进行处理。
[0041]接着,管理模块230会检查伫列中是否存在有传输数据,以在检查到存在传输数据时,依据传送顺序,取出其中一传输数据。即,在步骤S310中,管理模块230依据伫列的传送顺序,自伫列中取出具有第一传送顺序的传输数据。上述伫列例如为FIFO伫列,则先进入伫列的传输数据将优先被处理,之后进来的传输数据则必须稍候。为方便说明,底下以应用程序210_1的传输数据作为第一笔写入至伫列中的数据为例来进行说明。即,管理模块230自伫列中取出具有第一传送顺序的由应用程序210_1所传送的封包,并将此封包拆解而获得传输数据的数据本文、欲传送的I2C地址及数据长度。
[0042]之后,在步骤S315中,管理模块230将上述所取出的传输数据通过I2C驱动模块240,经由I2C汇流排130而传送至对应的元件140_1。例如,管理模块230将传输数据的数据本文、欲传送的I2C地址及数据长度重新封装后,依据所记录的I2C地址,将重新封装的封包传送至对应的元件140_1。
[0043]而后,在步骤S320中,管理模块230通过I2C驱动模块240而自元件140j接收对应的回应数据。并且,在步骤S325中,管理模块230依据对应的识别码,将回应数据传送至对应的应用程序210_1。例如,管理模块230会将回应数据与识别码重新封装为符合如图4所示的传输数据格式的封包后再传送回应用程序210_1。
[0044]底下再分别列举实施例来说明单一应用程序通过管理模块230来存取元件的时序,以及多个应用程序通过管理模块230来存取元件的时序。
[0045]图5是依照本发明一实施例的单一应用程序存取数据的方法流程的示意图。在图5中,以应用程序210_1通过管理模块230来存取元件140_1、140_2为例进行说明。
[0046]首先,在步骤S501中,应用程序210_1传送注册请求至管理模块230。而管理模块230在接收到注册请求时,其会依据注册请求产生(或查询)对应的一识别码IDl。接着,管理模块230将识别码IDl传送至应用程序210_1,如步骤S503所示。
[0047]在步骤S505中,应用程序210传送传输数据Al至管理模块230。例如,应用程序210_1将识别码ID1、元件140_1的I2C地址、传输数据Al的数据长度及其数据本文封装为一封包而传送至管理模块230。管理模块230接收到上述封包后,便将封包储存至伫列中。
[0048]之后,在步骤S507中,管理模块230自伫列中取出第一个封包,并将其拆解而获得传输数据Al后,再转换为符合I2C格式的封包,进而依照I2C地址将传输数据Al传送至I2C驱动模块240。并且,在步骤S509中,经由I2C汇流排130传送传输数据Al至元件140_1。
[0049]然后,在步骤S511中,元件140_1经由I2C汇流排130传送回应数据BI至I2C驱动模块240。并且,在步骤S513中,I2C驱动模块240将回应数据BI传送至管理模块230。而在步骤S515中,管理模块230将元件140_1的回应数据BI封装为符合传输数据格式(如图4)的封包后,再传回给应用程序210_1。
[0050]接着,应用程序210_1传送另一传输数据A2至元件140_2,如步骤S517所示。应用程序210_1将传输数据A2与识别码IDl封装为符合传输数据格式的封包(包括应用程序210_1的识别码ID1、元件140_2的I2C地址、数据长度及数据本文)后,传送给管理模块230。管理模块230在接收到传过来的封包,便将封包放入伫列中。
[0051]之后,在步骤S519 (如同上述步骤S507)中,管理模块230自伫列中取出上述封包,并将其拆解而获得传输数据A2后,以I2C格式传送至I2C驱动模块240。并且,在步骤S521中,I2C驱动模块240通过I2C汇流排130传送传输数据A2给元件140_2。
[0052]然后,在步骤S523中,元件140_2经由I2C汇流排130传送回应数据B2给I2C驱动模块240。而在步骤S525中,I2C驱动模块240将元件140_2的回应数据B2传回给管理模块230。并且,在步骤S527中,管理模块230将回应数据BI以传输数据格式传回给应用程序210_1。
[0053]当应用程序210_1不再与元件140_1、140_2传送数据,或者应用程序210_1结束时,则可通过管理模块230取消注册步骤,使得管理模块230可以释放资源供其他应用程序使用。如步骤S529所示,应用程序210_1向管理模块230传送取消注册(unregister)请求,藉以取消注册。并且,在步骤S531中,管理模块230通知应用程序210_1已取消成功。例如,管理模块230传送一特定值“-1”给应用程序210_1,表示识别码IDl已经成功取消了。
[0054]在上述步骤S501?步骤S531中,应用程序210_1与具有I2C接口的元件140_1及元件140_1之间的数据传送是先通过向管理模块230的注册步骤(步骤S501),而由管理模块230传回应用程序210_1对应的识别码。应用程序210_1向管理模块230注册,便可取得对应的识别码,接下来就可以与元件140_1、140_2来沟通了。上述识别码是用于应用程序210_1通过管理模块230存取元件140_1、140_2时会使用于传输数据格式中(如图4的栏位410)。
[0055]接着,举例说明多个应用程序通过管理模块230来存取元件的时序的详细流程。图6是依照本发明一实施例的两个应用程序存取数据的方法流程的示意图。在图6中,以应用程序210_1通过管理模块230来存取元件140_1,同时应用程序210_2亦通过管理模块230来存取元件140_2为例进行说明。
[0056]在步骤S601中,应用程序210_1向管理模块230传送注册请求以进行注册。接着,在步骤S603中,管理模块230传回识别码IDl给应用程序210_1。
[0057]另外,在步骤S605中,应用程序210_2亦同时向管理模块230传送注册请求以进行注册。并且在步骤S607中,管理模块230传回识别码ID2给应用程序210_2。
[0058]接着,步骤S609,应用程序210_1将传输数据A3以传输数据格式传送至管理模块230。例如,应用程序210_1将识别码ID1、元件140_1的I2C地址、传输数据A3的数据长度及其数据本文封装为一封包后传送至管理模块230。
[0059]然后,在步骤S611中,应用程序210_2传输数据A4以传输数据格式传送至管理模块230。例如,应用程序210_2将识别码ID2、元件140_2的I2C地址、传输数据A4的数据长度及其数据本文封装为一封包后传送至管理模块230。
[0060]在此,应用程序210_1及应用程序210_2同时传送了传输数据A3与传输数据A4。由于此时应用程序210_1尚未收到管理模块230所传回的回应数据,且应用程序210_2又传送出传输数据A4,因此若未通过管理模块230来进行管理,则会造成两笔传输数据A3、A4同时存取I2C汇流排130而造数据不正确或其他无法预知的结果。而在本实施例中,在应用程序210_1及应用程序210_2与I2C汇流排130之间,进一步通过管理模块230来进行管理,便可将欲传送的传输数据A3与传输数据A4先放入一伫列(例如为FIFO伫列)中,接下来管理模块230便可根据伫列的传送顺序来逐一进行处理。
[0061]之后,管理模块230自伫列中取出第一笔数据,即具有第一优先传送顺序的数据。在此,假设第一笔数据为传输数据A3。例如,管理模块230自伫列中取出第一个封包,并将其拆解而获得传输数据A3后,再转换为符合I2C格式的封包(包括元件140_1的I2C地址、传输数据A3数据长度及其数据本文),进而依照I2C地址将传输数据A3传送至I2C驱动模块240,如步骤S613所示。并且,在步骤S615中,I2C驱动模块240通过I2C汇流排130传送传输数据A3给元件140_1。
[0062]接着,在步骤S617中,元件140_1经由I2C汇流排130传送回应数据B3至I2C驱动模块240。而在步骤S619中,I2C驱动模块240将回应数据B3传回给管理模块230。并且,在步骤S621中,管理模块230将元件140_1的回应数据B3以传输数据格式(如图4)传回给应用程序210_1。于此时,应用程序210_1才接收到回应的数据(S卩,回应数据B3)。接着,管理模块230会再自伫列中取出下一笔数据(即传输数据A4)以进行处理。
[0063]管理模块230自伫列中取出下一个封包(由于上一个封包已经处理完毕,故,亦为此时的第一个封包),并将其拆解而获得传输数据A4。在步骤S623中,管理模块230以I2C格式将传输数据A4,传送给I2C驱动模块240。而在步骤S625中,I2C驱动模块240通过I2C汇流排130传送传输数据A4给元件140_2。
[0064]而后,在步骤S627中,元件140_2传回回应数据B4给I2C驱动模块240。并在步骤S629中,I2C驱动模块240将元件140_2的回应数据B4传回给管理模块230。之后,在步骤S631中,管理模块230以传输数据格式将回应数据B4传回给应用程序210_2。在此,应用程序210_2也已经收到元件140_2所回应的回应数据B4。
[0065]而在应用程序210_1、210_2不想与元件140_1、140_2进行沟通时或者应用程序210_1、210_2结束时,则亦可通过管理模块230取消注册步骤,使得管理模块230可以释放资源供其他应用程序使用。
[0066]如步骤S633所示,应用程序210_1向管理模块230传送取消注册请求。而在步骤S635中,管理模块230通知应用程序210_1已取消成功。例如,管理模块230传回一值“_1”给应用程序210_1表示识别码IDl已经成功取消了。
[0067]同样地,在步骤S637中,应用程序210_2向管理模块230传送取消注册请求。而在步骤S639中,管理模块230通知应用程序210_2已取消成功。例如,管理模块230传回送一值“-1”给应用程序210_2表示识别码ID2已经成功取消了。
[0068]在上述实施例中,应用程序210_2并不会在传送传输数据A4之后就立即收到元件140_2传回的回应数据B4,其会等到管理模块230已经处理到应用程序210_2所传来的传输数据A4,应用程序210_2才能取得元件140_2回传的回应数据B4。据此,通过管理模块230的控管,可让I2C汇流排130—次只处理一笔数据的传输跟接收,也就是一次只处理一个I2C指令,而且不会造成数据传输与接收互相随机穿插所造成的数据错误或其他不可以预期的结果。
[0069]综上所述,在上述实施例中,在应用程序与I2C汇流排之间设置一管理模块,使得I2C汇流排的存取皆通过此管理模块,据此可避免多个应用程序同时存取I2C汇流排,进而避免数据存取错误的状况发生,而让系统更稳定、更易除错,缩短开发所需花费的时间。并且,可以让每个I2C元件的程序开发更单纯,在系统整合及设计上也会更有效率。
[0070]虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属【技术领域】中普通技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视权利要求书所界定的为准。
【权利要求】
1.一种存取数据的方法,用于一电子装置,其特征在于,所述方法包括: 由一管理模块分别自多个应用程序接收多笔传输数据与多个识别码,并依据一接收顺序将所述多个传输数据储存至一伫列; 所述管理模块依据所述伫列的一传送顺序,自所述多个传输数据中取出其中之一; 所述管理模块将所取出的传输数据通过一内部整合电路驱动模块传送至对应的一元件; 所述管理模块通过所述内部整合电路驱动模块而自所述元件接收对应的一回应数据;以及 所述管理模块依据所取出的传输数据对应的所述多个识别码之一,将所述回应数据传送至对应的所述多个应用程序之一。
2.根据权利要求1所述的方法,其特征在于,在由所述管理模块分别自所述多个应用程序接收所述多个传输数据的步骤之前,所述方法更包括: 由所述管理模块自各所述多个应用程序接收一注册请求,藉以依据所述注册请求产生所述多个识别码之一;以及 所述管理模块传送对应所述注册请求的所述多个识别码之一至各所述多个应用程序。
3.根据权利要求2所述的方法,其特征在于,所述方法更包括: 所述管理模块自各所述多个应用程序接收一取消注册请求;以及 取消所述取消注册请求对应的所述多个识别码之一。
4.根据权利要求1所述的方法,其特征在于,各所述多个应用程序的一传输数据格式包括所述多个识别码之一、一内部整合电路地址、一数据长度以及所述多个传输数据之一。
5.根据权利要求1所述的方法,其特征在于,所述方法更包括: 由所述管理模块检查所述伫列中是否存在有所述多个传输数据其中之一,以在检查到存在所述多个传输数据其中之一时,依据所述传送顺序,自所述多个传输数据中取出其中之一。
6.一种存取数据的系统,其特征在于,所述系统包括: 一元件; 一内部整合电路汇流排,耦接至所述元件; 一处理单元,耦接至所述内部整合电路汇流排,并经由所述内部整合电路汇流排存取所述元件;以及 一存储单元,耦接至所述处理单元,且储存有供所述处理单元执行的多个模块,其中所述多个模块包括; 一管理模块,自多个应用程序接收多笔传输数据与多个识别码,并依据一接收顺序将所述多个传输数据储存至一伫列,且依据一传送顺序来传送所述多个传输数据;以及 一内部整合电路驱动模块,通过所述管理模块与所述多个应用程序沟通,并且经由所述内部整合电路汇流排取存所述元件; 其中,所述管理模块依据所述传送顺序,自所述多个传输数据中取出其中之一并传送至所述内部整合电路驱动模块; 其中,所述内部整合电路驱动模块经由所述内部整合电路汇流排将所取出的传输数据传送至所述元件,并且,所述内部整合电路驱动模块将经由所述内部整合电路汇流排而自所述元件所接收的一回应数据,传送至所述管理模块,使得所述管理模块依据所取出的传输数据对应的所述多个识别码之一,将所述回应数据传送至对应的所述多个应用程序之
ο
7.根据权利要求6所述的系统,其特征在于,所述管理模块自各所述多个应用程序接收一注册请求,藉以依据所述注册请求产生所述多个识别码之一,并传送对应所述注册请求的所述多个识别码之一至各所述多个应用程序。
8.根据权利要求7所述的系统,其特征在于,当所述管理模块自各所述多个应用程序接收一取消注册请求时,取消所述取消注册请求对应的所述多个识别码之一。
9.根据权利要求6所述的系统,其特征在于,各所述多个应用程序的一传输数据格式包括所述多个识别码之一、一内部整合电路地址、一数据长度以及所述多个传输数据之一;而所述仁列为先进先出仁列。
10.根据权利要求6所述的系统,其特征在于,所述管理模块检查所述伫列中是否存在有所述多个传输数据其中之一,以在检查到存在所述多个传输数据其中之一时,依据所述传送顺序,自所述多个传输数据中取出其中之一。
【文档编号】G06F13/40GK104424147SQ201310443546
【公开日】2015年3月18日 申请日期:2013年9月25日 优先权日:2013年9月10日
【发明者】廖文德 申请人:纬创资通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1