I2c设备的控制方法、装置及终端的制作方法_2

文档序号:9349902阅读:来源:国知局
钟信号开始由低电平上升为高电平,高速时钟从检测到时钟信号上升沿脉冲计数单元开始停止计数,这样可以得到钟信号下降沿到上升沿的计数数值N。
[0034]步骤S204:根据所述计数数值获得所述脉冲的宽度。
[0035]其中,所述脉冲的宽度也即为所述脉冲上升到下降之间的时间,所以根据所述12C设备的时钟频率和所述计数数值N可以轻易获得所述脉冲的宽度T。
[0036]步骤S40:判定所述脉冲信号为时钟信号或指令脉冲信号。
[0037]由于I2C标准时钟频率最大为100KHZ,故时钟信号高低脉宽不低于5us。如果在步骤S204中获得的所述脉冲的宽度T大于或等于5us,则可判定所述脉冲信号为时钟信号;如果在步骤S204中获得的所述脉冲的宽度T小于5us,则可判定所述脉冲信号为指令脉冲信号。这样,就可以通过检测到的所述脉冲信号的宽度简便地判定所述脉冲信号的信号类型。
[0038]步骤S60:当所述脉冲信号判定为指令脉冲信号时,译码所述指令脉冲信号获得对应的通道控制指令;当所述脉冲信号判定为时钟信号时,返回继续检测I2C时钟总线的脉冲信号的脉冲宽度。
[0039]其中,当所述脉冲信号判定为指令脉冲信号时,则认定其实际为在I2C时钟总线生成的用来传输预设控制信息的预设脉宽信号。在本发明实施例中,通过译码模块利用预先配置的译码规则和格式进行译码获得所述对应通道控制指令,所述通道控制指令可包括操作码和地址码,所述操作码包括预设的打开或关闭通道的信息,所述地址码包括预设的I2C从设备通道的地址,对于通道控制指令,每一个I2C从设备通道包括打开和关闭两种操作码以及一个唯一的地址码。这样就获得I2C从设备的通道控制指令,可执行对预设的I2C从设备的通道进行预设的打开或关闭的控制。
[0040]其中,当所述脉冲信号判定为时钟信号时,则认定其并非为在I2C时钟总线生成的用来传输预设控制信息的预设脉宽信号,则返回步骤S20继续检测I2C时钟总线的脉冲信号的脉冲宽度,直到检测到用来传输预设控制信息的指令脉冲信号。
[0041]步骤S80:根据所述通道控制指令打开或关闭相应的I2C从设备通道。
[0042]在本实施例中,采用MOS管打开或关闭相应的I2C从设备通道。所述MOS管的基极(G极)控制关闭时具有隔绝源极(S极)和漏极(D极),基极(G极)控制开启时源极(S极)和漏极(D极)导通具有很小的导通电阻,可很好地实现本发明I2C从设备通道的双向传输信号要求,基极(G)控制为逻辑信号控制,可与译码模块直接通信。
[0043]根据译码得到的所述通道控制指令,可打开或关闭相应的I2C从设备通道。在本发明实施例中,I2C从设备通道的打开或关闭时间只需要不到一个I2C时钟周期,相比于现有技术I2C低速接口至少需要20个时钟周期,提高了 I2C设备的系统效率,降低了对I2C设备CPU资源的占用,可应用于频繁访问I2C从设备的应用场景。此外,本发明对于I2C从设备的通道数量不设限制,具有很大的灵活性和适应性,解决了现有技术中专用I2C多路选择芯片通道接口数量有限的技术问题。
[0044]这样,本发明实施例,通过检测I2C时钟总线的脉冲信号的脉冲宽度并判定其为指令脉冲信号后,对其进行译码获得通道控制指令,最终根据道控制指令打开或关闭相应的I2C从设备通道,实现对多个具有同一设备地址的I2C从设备的控制。
[0045]图4为本发明第二实施例中I2C设备的控制方法的流程示意图。如图所示,所述I2C设备的控制方法包括:
[0046]步骤SlO:检测I2C总线状态。
[0047]步骤S12:当检测到所述I2C总线为空闲状态时发送预设脉宽的脉冲信号,所述预设脉宽的脉冲信号对应的通道控制指令设置为打开或关闭预设I2C从设备通道。
[0048]步骤S20:检测I2C时钟总线的脉冲信号的脉冲宽度。
[0049]步骤S40:判定所述脉冲信号为时钟信号或指令脉冲信号。
[0050]步骤S60:当所述脉冲信号判定为指令脉冲信号时,译码所述指令脉冲信号获得对应的通道控制指令。
[0051]步骤S80:根据所述通道控制指令打开或关闭相应的I2C从设备通道。
[0052]在本发明实施例中,首选检测I2C总线状态是处在空闲状态还是工作状态,当处在工作状态时并不能实施本发明实施例的技术方案。当I2C总线状态处在空闲状态时,时钟总线SCK处于高电平,就可以在时钟总线SCK上发送脉冲信号。
[0053]在步骤S12中,预设脉宽的指令脉冲信号可通过所述I2C设备预先配置编码规则和格式,建立指令脉冲信号与预设通道控制指令的一一对应表,即每一个预设指令脉冲信号对应表示一个特定I2C从设备通道的打开或关闭的指令,所述通道控制指令可包括操作码和地址码,所述操作码包括预设的打开或关闭通道的信息,所述地址码包括预设的I2C从设备通道的地址,对于通道控制指令,每一个I2C从设备通道包括打开和关闭两种操作码以及一个唯一的地址码。相应的,在步骤S60中,通过译码模块利用预先配置的译码规则和格式进行译码获得所述对应通道控制指令。显然,所述I2C设备预先配置的所述编码规则与所述译码规则是对应的,具体的编码规则和格式可根据实际需要进行配置。
[0054]参见图5,在步骤S12中,所述当检测到所述I2C总线为空闲状态时发送预设脉宽的脉冲信号步骤包括:
[0055]步骤S122:在I2C时钟总线上发送第一预设脉宽的脉冲信号,所述第一预设脉宽的脉冲信号对应的通道控制指令设置为打开预设I2C从设备通道。
[0056]步骤S124:在I2C总线上为主设备模拟I2C时序访问I2C从设备。
[0057]步骤S126:在模拟I2C时序访问I2C从设备结束时在I2C时钟总线上发送第二预设脉宽的脉冲信号,所述第二预设脉宽的脉冲信号对应的通道控制指令设置为关闭所述预设I2C从设备通道。
[0058]在本发明实施例中,先后在I2C时钟总线上发送的第一、第二预设脉宽的脉冲信号分别用来传输打开、关闭预设I2C从设备通道的通道控制指令,每次打开预设I2C从设备通道访问完成后都要关闭预设I2C从设备通道。所述预设脉宽的脉冲信号配置为低电平脉冲,脉冲宽度可通过上述编码规则编译得到。优选的,为了译码的简洁和防止误触发,可配置所述预设脉宽的脉冲信号的预设脉宽小于4us。
[0059]基于本发明上述方法实施例,本发明第三实施例提供一种I2C设备的控制装置
10。参见图6,所述I2C设备的控制装置10包括I2C控制器20、译码模块30和通道控制模块40,所述I2C控制器20包括用于发送预设脉宽的脉冲信号的脉冲信号发送模块210,所述译码模块30包括用于检测I2C时钟总线的脉冲信号的检测模块310、用于判定所述脉冲信号为时钟信号或指令脉冲信号的判定模块320和用于当所述脉冲信号判定为指令脉冲信号时译码所述指令脉冲信号获得对应的通道控制指令的指令译码模块330,所述通道控制模块40用于根据所述通道控制指令打开或关闭相应的I2C从设备通道。
[0060]在本发明实施例中,I2C控制器20设置在I2C主设备CPU 50上,首选检测I2C总线状态是处在空闲状态还是工作状态,当I2C总线状态处在空闲状态时,时钟总线SCK处于高电平,就可以通过所述脉冲信号发送模块210在时钟总线SCK上发送预设脉宽的脉冲信号。具体的,预设脉宽的指令脉冲信号可通过所述I2C设备预先配置编码规则和格式,建立指令脉冲信号与预设通道控制指令的一一对应表,即每一个预设指令脉冲信号对应表示一个特定I2C从设备通道的打开或关闭的指令,所述通道控制指令可包括操作码和地址码,所述操作码包括预设的打开或关闭通道的信息,所述地址码包括预设的I2C从设备通道的地址,对于通道控制指令,每一个I2C从设备通道包括打开和关闭两种操作码以及一个唯一的地址码。相应的,所述指令译码模块330利用预先配置的译码规则和格式进行译码获得所述对应通道控制指令。显然,所述I2C设备预先配置的所述编码规则与所述译码规则是对应的,具体的编码规则和格式可根据实际需要进行配置。
[0061]在本发明实施例中,所述译码模块30中的所述检测模块310首选通过可编程器件FGPA使用高速时钟检测I2C时钟总线SCK有无脉冲信号,当检测到所述I2C时钟总线上有脉冲信号时,所述检测模块310开始检测所述脉冲信号的脉冲宽度,此时所述脉冲信号可能为时钟信号,也可能为包括上述控制指令的指令脉冲信号,需要首先判定其是否为用来传输预设通道控制信息的指令脉冲信号。具体的,所述检测模块310在检测I2C时钟总线的脉冲信号的脉冲宽度时,使用高速时钟在检测I2C时钟信号下降沿到上升沿的计数数值,并根据所述计数数值获得所述脉冲的宽度。
[0062]其中,所述I2C总线为空闲状态下,时钟总线SCK处于高电平。当所述检测模块310在时钟总线SCK上检测到脉冲信号时,时钟总线SCK上的时钟信号开始由高电平下降为低电平,高速时钟从检测到时钟信号下降沿脉冲计数单元开始计数。当所述检测模块310检测到脉冲信号消失时,时钟总线SCK上的时钟信号开始由低电平上升为高电平,高速时钟从检测到
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1