实现IIC上CPU从机的方法、智能终端和储存介质与流程

文档序号:20487342发布日期:2020-04-21 21:46阅读:540来源:国知局
实现IIC上CPU从机的方法、智能终端和储存介质与流程

本发明涉及嵌入式驱动技术领域,尤其涉及一种实现iic上cpu从机的方法、智能终端和储存介质。



背景技术:

iic,是i2cbus的简称,英文全称inter-integratedcircuit,即集成电路总线。iic是一种串行总线,具有结构简单,连接线少,无需专门的母板和插座而直接用导线连接各个设备,因此,可以大大简化系统的硬件设计。

请参考图1,iic的通信原理和物理连接都很简单,它以主从方式工作,这种模式通常有一个主设备和至少一个从设备,总线只需要两根信号线:一根是双向的数据线(sda);一根是单向的时钟线(scl)。总线在处于空闲状态时,两根线上均为高电平。

现有技术中,大部分主控cpu只能做iic主机功能,非常少量的cpu支持iic从机功能,但是都是通过硬件实现的,扩展性不好。对于不支持iic从机功能的cpu,若必须以该cpu做从机,只能靠外接cpld实现扩展功能,安装、使用过程繁琐,不便用户使用。



技术实现要素:

为了解决现有技术中大部分cpu无法实现iic从机的功能的问题,本发明提出一种通过检测cpu连接线电平,实现cpu根据主机执行数据传输或中断程序的实现iic上cpu从机的方法、智能终端和储存介质。

本发明通过以下技术方案实现的:

一种实现iic上cpu从机的方法,包括:

将所述cpu从机的第一连接线与集成电路总线的数据线连接,将所述cpu从机的第二连接线与集成电路总线的时钟线连接,所述第一连接线的电平值为第一电平值,所述第二连接线的电平值为第二电平值;

判断所述cpu从机当前的状态;

若所述cpu从机当前状态为准备接收终止信号状态,则依次判断所述第二电平值是否为高电平、所述第一电平值是否为低电平;

若所述第二电平值为高电平且所述第一电平值为低电平,则调节所述第一电平值为高电平;

修改所述cpu从机当前状态为未接收起始信号状态,所述cpu从机完成中断处理程序。

所述的实现iic上cpu从机的方法,其中,判断所述cpu从机当前的状态之前包括:设置预设时间;

若所述第一电平值为低电平,则延迟预设时间后,调节所述第一电平值为高电平。

所述的实现iic上cpu从机的方法,其中,判断所述cpu从机当前的状态之后还包括:

若所述cpu从机当前状态为未接收起始信号状态,则依次判断所述第二电平值和所述第一电平值是否均为高电平;

若是,则调节所述第一电平值为低电平;

修改所述cpu从机当前状态为接收/发送信号状态。

所述的实现iic上cpu从机的方法,其中,判断所述cpu从机当前的状态之前包括:设置预设时间;

若所述第一电平值为高电平,则延迟预设时间后,调节所述第一电平值为低电平。

所述的实现iic上cpu从机的方法,其中,判断所述cpu从机当前的状态之后还包括:

若所述cpu从机当前状态为接收/发送信号状态,则判断所述第二电平值是否为高电平;

若是,则依次判断所述cpu从机是否执行读数据操作,已读数据是否为8个bit数据;

若所述cpu从机已读8个bit数据,则所述cpu从机给出应答信号;

修改所述cpu从机当前状态为准备接收终止信号状态。

所述的实现iic上cpu从机的方法,其中,所述若所述cpu从机当前状态为接收/发送信号状态,则判断所述第二电平值是否为高电平之后还包括:

若所述第二电平值为低电平,则依次判断所述cpu从机是否执行写数据操作,以写数据是否为8个bit数据;

若所述cpu已写8个bit数据,则保存已写数据并接收应答信号;

修改所述cpu从机当前状态为准备接收终止信号状态。

所述的实现iic上cpu从机的方法,其中,所述设置第二连接线为信号输入,设置所述第一连接线为信号输入/输出。

所述的实现iic上cpu从机的方法,其中,所述判断所述cpu从机当前状态之前包括:

所述第二电平值由高电平变为低电平,或由低电平变为高电平。

一种智能终端,所述智能终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的实现iic上cpu从机的程序,所述实现iic上cpu从机的程序被所述处理器执行时,实现如上述的实现iic上cpu从机的方法。

一种储存介质,所述存储介质储存实现iic上cpu从机的程序,所述实现iic上cpu从机的程序被处理器执行时,实现如上述的实现iic上cpu从机的方法。

本发明的有益效果在于:

本发明提出的实现iic上cpu从机的方法,判断当前cpu从机的工作状态,并根据cpu从机当前的工作状态,使cpu从机接收终止信号后执行中断操作,停止与集成电路总线的数据交流,使cpu从机停止读写数据的操作,实现了cpu作为集成电路总线上从机使用功能。无需外接cpld等外部硬件即可将cpu作为从机,大大简化了安装结构,方便用户使用。

附图说明

图1是本发明中iic与cpu从机的连接结构示意图;

图2是本发明中实现iic上cpu从机的方法的工作流程示意图;

图3是图2中gpio2_isr函数的工作流程示意图;

图4是本发明中智能终端的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参考图1,图1是应用本发明公开的实现iic上cpu从机的方法中,硬件部分的运行环境示意图,具体结构是在一根集成电路总线(iic,inter-integratedcircuit)上连接有主机和cpu从机,其中所述主机可以为mcu(microcontrollerunit,微控制单元),也可以为cpu。

所述集成电路总线包括数据线1(sda)和时钟线2(scl),集成电路总线上的从机所起到的作用就是根据时钟线2的电平变化开始通过数据线1接收/发送数据,或者根据时钟线2的变化结束数据接收与发送。

在本发明公开的实现iic上cpu从机的方法中,只要实现cpu能够根据时钟线2的电平变化开始或结束数据接收与发送,该cpu就可以作为该集成电路总线上的从机。而由上述可知,从机与数据线1进行接收/发送数据,从机与数据线1的数据交流是双向的;而从机仅需要接收时钟线2的电平变化执行或关闭数据接收与发送即可,从机对时钟线2不起到操控的作用,所以,从机与时钟线2的数据交流是单向的。本发明公开的实现iic上cpu从机的方法中:cpu从机通过第一连接线3与数据线1连接,第一连接线3与数据线1的电平值相等,为第一电平值;通过第二连接线4与时钟线2连接,第二连接线4与时钟线2的电平值相对,为第二电平值,且:

s001:所述设置第二连接线4为信号输入,设置所述第一连接线3为信号输入/输出。

在本发明的一个实施例中,所述第一连接线3和所述第二连接线4均为gpio,gpio(general-purposeinput/output)通用型之输入输出的简称,其接脚可以供使用者由程控自由使用。用户通过设置gpio的接脚,就可以实现所述第一连接线3和所述第二连接线4的信号输入及输出方向。如上所述的,cpu从机仅需要通过第二连接线4接收时钟线2是否发生电平跳变即可,不对时钟线2的电平做出调整,所以,第二连接线4仅作为信号输入线即可。

经过上述设置后,cpu从机可以根据时钟线2的电平跳变开始或结束通过数据线1接收/发送数据。而在cpu从机运行过程中,通常包括下列三种情况;

1.cpu从机接收起始信号,预备读写数据。此时的集成电路总线的电平变化为:时钟线2为高电平,数据线1由高电平变低电平。

2.cpu从机接收/发送信号,与数据线1进行数据交流,读写数据。此时的集成电路总线的电平变化根据读写状态不同而变化。

3.cpu从机完成数据交流,cpu从机接收终止信号,执行中断程序,停止与数据线1进行数据交互。此时的集成电路总线的电平变化为:时钟线2为高电平,数据线1由低电平变为高电平。

无论是cpu从机出于何种状态,在cpu从机接收信号之前,集成电路总线的时钟线2信号都有一个电平跳变,即时钟线2的电平由低电平变为高电平,或由高电平变为低电平。所以,只要时钟线2的电平发生跳变,就可以根据cpu从机所处的状态执行相应的操作,因而,(请参考图2和图3)所述实现iic上cpu从机的方法包括:

s002,所述第二电平值由高电平变为低电平,或由所述低电平变为高电平;

s003,判断所述cpu从机当前的状态。

经过s002和s003步骤后,只要发生一次时钟线2的电平跳变,cpu从机就可以通过第二连接线4接收到时钟线2的电平跳变,进而根据cpu从机当前的状态执行操作。在本发明所述的实现iic上cpu从机的方法中,通过函数gpio2_isr执行判断cpu从机当前状态和执行后续操作的功能。

请参考图3,cpu从机接收到时钟线2的电平跳变时,需要根据cpu从机当前所处的状态执行相应的操作,以下将进行具体说明。

在步骤s003后,cpu从机分别对应三种状态,以下将依次进行说明。

情况一:

s003,判断所述cpu从机当前的状态。

s100,若所述cpu从机处于未接收起始信号状态,则依次判断所述第二电平值和所述第一电平值是否均为高电平;

s101,若所述第二电平值和所述第一电平值均为高电平,则调节所述第一电平值为低电平。

s102,修改所述cpu从机状态为接收/发送信号状态。

在本实施例中,cpu从机处于未接收起始信号状态时,cpu从机和主机、集成电路总线之间没有数据交流,此时数据线1和时钟线2的电平均为高电平。标记cpu从机处于空闲状态方式是在函数gpio2_isr中定义state_machine参数,该参数值为0时,表示cpu从机为未接收起始信号状态。当集成电路总线处于空闲状态时,第二电平值发生改变则表示主机要向cpu从机发送数据,需要cpu从机准备接收开始信号以进行数据的接收/输出。

因而在发生第二电平值改变后,主机调节第一电平值为低电平,这就构成了时钟线2为高电平,数据线1由高电平至低电平的切换,构成起始信号。cpu从机接收起始信号后,即开始与数据线1进行数据交流,接收/发送信号。此时,cpu从机所处的状态发生改变,由未接收起始信号状态转换为接收/发送信号状态,定义此状态时的state_machine参数的值为1。

在所述流程s101中,预先设置一个预设时间,判断所述第二电平值和所述第一电平值均为高电平后,延迟预设时间后,再使主机拉低第一电平值,目的是给主机有足够的反馈时间以更改时钟线2的电平。优选地,所述预设时间为1至5微秒。

情况二:

s003,判断所述cpu从机当前的状态。

s200,若所述cpu从机处于接收/发送信号状态,则判断所述第二电平值是否为高电平。

s210,若所述第二电平值为高电平,则依次判断所述cpu从机是否执行读数据操作,已读数据是否为8个bit数据。

s211,若所述cpu从机已读8个bit数据,则所述cpu从机给出应答信号。

s212,修改所述cpu从机当前的状态为准备接收终止信号状态。

在本实施例中,若在数据传输过程中,需要根据第二电平值的高低判断cpu从机是处于读写数据中的哪一种。若第二电平值为高电平,则cpu从机处于读取数据状态。

在集成电路总线上,数据是每8个bit作为一个基本传输单位进行传输的,若未读取8位时不作处理,若读取了8个bit的数据,则给出应答信号继续读取信号。

该次第二电平值跳变说明cpu从机正在数据处理过程中,在给出应答信号后,修改接收/发送信号状态为准备接收终止信号状态,定义此时cpu从机的状态state_machine参数值为2。

在上述步骤s200后还包括:

s220,若所述第二电平值为低电平,则依次判断所述cpu从机是否执行写数据操作,已写数据是否为8个bit数据。

s221,若所述cpu从机已写8个bit数据,则所述cpu从机保存已写数据并接收应答信号。

s222,修改所述cpu从机当前的状态为准备接收终止信号状态。

与s200至s212步骤流程相似的,s221中接收应答信号表示继续接收数据以写入数据。

情况三;

s003,判断所述cpu从机当前的状态。

s300,若所述cpu从机处于准备接受终止信号状态,则依次判断所述第二电平值是否为高电平、所述第一电平值是否为低电平。

s301,若所述第二电平值为高电平且所述第一电平值为低电平,则调节所述第一电平值为高电平。

s302,修改所述cpu从机当前状态为未接收起始信号状态,所述cpu从机完成中断处理程序。

与步骤s100至s102相似的,在步骤s301中,预先设置一个预设时间,判断所述第二电平值为高电平且所述第一电平值为低电平后,延迟预设时间后,再使主机调高第一电平值,目的是给主机有足够的反馈时间以更改时钟线2的电平。优选地,所述预设时间为1至5微秒。

当数据传输结束后,集成电路总线的时钟线2发生电平跳变,即对cpu从机当前的状态进行判断,数据传输结束后,数据线1应处于低电平,时钟线2应处于高电平,此时,若调高数据线1的电平,则数据线1和时钟线2均为高电平,即为集成电路总线的空闲状态。所以时钟线2处于高电平,数据线1电平由低电平至高电平即为终止信号,cpu从机接收终止信号执行中断程序,即停止与集成电路总线之间的数据交流。

在时钟线2和数据线1均跳转至高电平后,集成电路总线与cpu从机之间没有数据交流,直至下次时钟线2跳变后准备开始接收起始信号,进行下次的读写进程。

请参考图3,在实际判断过程中,可能会出现时钟线2跳变有误的情况,如数据传输过程中发生时钟线2跳变,而当前数据已读并非8个bit的数据,或是数据传输过程中为获取应答信号等情况,图3中展示了,若时钟线2跳变后,若判断cpu从机当前的状态与预设状态之间出现差异时,则直接结束判断,不对当前cpu从机的状态做出修改。

请参考图1和图4,在上述方法的基础上,本发明还提出一种智能终端10,所述智能终端10基于所述实现iic上cpu从机的方法。所述智能终端包括存储器11、处理器12和连接所述存储器11和所述处理器12的集成电路总线13。所述存储器11存储有可在所述处理器12上运行的实现iic上cpu从机的程序;所述处理器12包括主机12a和cpu从机12b,图4中仅简单显示智能终端10内的结构连接视图,所述处理器12与所述集成电路总线13的具体连接方式如图1所示,所述实现iic上cpu从机的程序被所述处理器12执行时,实现下述步骤:

s001:所述设置第二连接线4为信号输入,设置所述第一连接线3为信号输入/输出。

s002,所述第二电平值由高电平变为低电平,或由所述低电平变为高电平;

s003,判断所述cpu从机12b当前的状态。

s100,若所述cpu从机12b处于未接收起始信号状态,则依次判断所述第二电平值和所述第一电平值是否均为高电平;

s101,若所述第二电平值和所述第一电平值均为高电平,则调节所述第一电平值为低电平。

s102,修改所述cpu从机12b状态为接收/发送信号状态。

s200,若所述cpu从机12b处于接收/发送信号状态,则判断所述第二电平值是否为高电平。

s210,若所述第二电平值为高电平,则依次判断所述cpu从机12b是否执行读数据操作,已读数据是否为8个bit数据。

s211,若所述cpu从机12b已读8个bit数据,则所述cpu从机12b给出应答信号。

s212,修改所述cpu从机12b当前的状态为准备接收终止信号状态。

s220,若所述第二电平值为低电平,则依次判断所述cpu从机12b是否执行写数据操作,已写数据是否为8个bit数据。

s221,若所述cpu从机12b已写8个bit数据,则所述cpu从机12b保存已写数据并接收应答信号。

s222,修改所述cpu从机12b当前的状态为准备接收终止信号状态。

s300,若所述cpu从机12b处于准备接受终止信号状态,则依次判断所述第二电平值是否为高电平、所述第一电平值是否为低电平。

s301,若所述第二电平值为高电平且所述第一电平值为低电平,则调节所述第一电平值为高电平。

s302,修改所述cpu从机12b当前状态为未接收起始信号状态,所述cpu从机12b完成中断处理程序。

实现智能终端根据时钟线2的跳变并结合cpu从机12b当前的状态执行接收起始信号进行数据传输或接收终止信号结束数据传输的功能。

本发明在上述基础上还提出一种储存介质,所述存储介质储存实现iic上cpu从机的程序,所述实现iic上cpu从机的程序被处理器执行时,实现如上述的实现iic上cpu从机的方法。

本发明提出的实现iic上cpu从机的方法,提出的实现iic上cpu从机的方法,判断当前cpu从机的工作状态,并根据cpu从机当前的工作状态,使cpu从机接收起始信号后执行读写数据的操作,或接收终止信号后执行中断操作,具体为:

1.根据数据线1电平变化接收起始信号,cpu从机开始与集成电路总线进行数据交流,读写数据。

2.根据数据线1电平变化接收终止信号,cpu从机结束与集成电路总线的数据交流,停止读写数据。

主机通过向cpu从机发送起始信号和终止信号调节cpu从机在集成电路总线上的工作状态,实现了cpu执行集成电路总线上的从机功能。且根据所述实现iic上cpu从机的方法,无需在cpu上额外外接cpld就可以实现cpu作为从机的功能,大大简化了安装结构,提高了用户使用的便捷性。主要的,cpu从机可以根据主机发送的终止信号执行中断程序,是cpu实现从机功能的主要功能。

同时,一旦发生时钟线2的电平跳变,即开始对cpu从机当前的工作状态进行判断,且根据当前cpu从机的工作状态执行不同的操作,保证cpu从机工作的稳定性。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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