基于相同I2C地址的芯片扩展方法、系统及存储介质与流程

文档序号:20683002发布日期:2020-05-08 18:34阅读:466来源:国知局
基于相同I2C地址的芯片扩展方法、系统及存储介质与流程

本发明涉及计算机应用技术领域,尤其涉及一种基于相同i2c地址的芯片扩展方法、系统及存储介质。



背景技术:

常用iic(inter-integratedcircuit,集成电路总线,一种串行通信总线)接口通用器件的器件地址是由种类型号和寻址码组成的,共7位。高4位一般称之为器件类型,是由半导体公司生产时就已决定的,简单来说这高4位是固定不变的;用户可自定义地址码只有后3位,也称之为寻址码;正因为如此,同一iic总线上同一型号的iic芯片只能最多挂8片;甚至还有设备地址都是固定的器件。

如果在某些特殊的情况下,需要访问不低于8个同类型的iic芯片,一般都会通过使用多组iic总线进行扩展,以该方式扩展的话,每需要多扩展8个同类型的iic设备,都需要在主控cpu上增加一组iic总线,对于资源紧张的主控cpu来说,往往不是最好的解决方案,另外iic总线递增的同时,应用层访问这些iic设备也会因此变得复杂,不利于后期维护。

因此,现有技术还有待于改进和发展。



技术实现要素:

本发明的主要目的在于提供一种基于相同i2c地址的芯片扩展方法、系统及存储介质,旨在解决现有技术的上述缺陷。

为实现上述目的,本发明提供一种基于相同i2c地址的芯片扩展方法,所述基于相同i2c地址的芯片扩展方法包括如下步骤:

主控cpu与cpld建立连接,所述cpld为每一组与所述cpld相连的iic从设备各引出一组iic接口;

在进行iic通信之前,所述主控cpu访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;

所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述主控cpu与cpld建立连接,具体为:

所述主控cpu通过localbus总线和所述iic接口连接至所述cpld。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述基于相同i2c地址的芯片扩展方法还包括:

所述主控cpu无访问所述iic从设备时,与所述cpld相连的每一组所述iic从设备的iic总线均存于空闲状态,且两根信号线都处于高电平。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述设置将要通信的所述iic从设备的编号,具体为:

所述主控cpu通过localbus总线向所述cpld指定要通信的所述iic从设备的编号,所述cpld将所述iic从设备的链路与所述主控cpu的iic总线在逻辑上相连。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述基于相同i2c地址的芯片扩展方法还包括:

所述主控cpu发出iic时序的起始信号,所述iic从设备接收到起始信号后开始通信;

当完成通信后,所述主控cpu发出iic时序的终止信号,所述iic从设备将结束当前通信,等待下一次的起始信号。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述基于相同i2c地址的芯片扩展方法还包括:

所述主控cpu与所述iic从设备通过iic协议进行数据的收发。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述基于相同i2c地址的芯片扩展方法还包括:

当所述主控cpu与当前所述iic从设备完成通信后,所述主控cpu继续通过localbus总线向所述cpld指定下一个要通信的iic从设备,直到所有iic从设备完成通信。

可选地,所述的基于相同i2c地址的芯片扩展方法,其中,所述基于相同i2c地址的芯片扩展方法还包括:

所述主控cpu访问所述iic从设备时,所述cpld通过localbus总线制定所述iic从设备的编号;

所述cpld将指定的所述iic从设备连接至所述主控cpu,所述主控cpu与所述iic从设备进行通信。

此外,为实现上述目的,本发明还提供一种基于相同i2c地址的芯片扩展系统,其中,所述基于相同i2c地址的芯片扩展系统包括:主控cpu,与所述主控cpu连接cpld,以及与所述cpld连接多个iic从设备;

所述cpld用于为每一组与所述cpld相连的所述iic从设备各引出一组iic接口;在进行iic通信之前,所述主控cpu用于访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。

此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有基于相同i2c地址的芯片扩展程序,所述基于相同i2c地址的芯片扩展程序被处理器执行时实现如上所述的基于相同i2c地址的芯片扩展方法的步骤。

本发明中,主控cpu与cpld建立连接,所述cpld为每一组与所述cpld相连的iic从设备各引出一组iic接口;在进行iic通信之前,所述主控cpu访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。本发明通过cpld对相同i2c地址芯片扩展,可以在主控cpu的iic总线上任意挂同类型的iic设备,使得主控cpu的访问控制变得简单,增强了驱动能力,提高了整个系统的稳定性和安全性。

附图说明

图1是本发明基于相同i2c地址的芯片扩展方法的较佳实施例的流程图;

图2为本发明基于相同i2c地址的芯片扩展系统的较佳实施例的运行环境示意图。

具体实施方式

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

本发明较佳实施例所述的基于相同i2c地址的芯片扩展方法,如图1和图2所示,所述基于相同i2c地址的芯片扩展方法包括以下步骤:

步骤s10、主控cpu与cpld建立连接,所述cpld为每一组与所述cpld相连的iic从设备各引出一组iic接口;

步骤s20、在进行iic通信之前,所述主控cpu访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;

步骤s30、所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。

具体地,如图2所示,所述主控cpu通过localbus总线(localbus总线又称为cpu总线,根据高低位地址线序的差异,又可分为motorolacpu总线和intelcpu总线,例如cs51单片机就是intelcpu总线的典型代表,而常用的powerpc就是motorolacpu总线架构,它是从60x总线衍变过来的,60x总线支持64、32、16、8四种可选位宽模式,由于localbus总线是直接从60x总线上通过桥片分出来的,所以它和60x总线是同步同频的,进行数据数据读写时与60x总线共享带宽,不需要内核提供额外的处理)和iic接口连接至所述cpld(复杂可编程逻辑器件,cpld采用cmoseprom、eeprom、快闪存储器和sram等编程技术,从而构成了高密度、高速度和低功耗的可编程逻辑器件),所述cpld再为每一组iic设备各引出一组iic接口;所述主控cpu还是通过iic协议访问所述cpld,只是在进行iic通信之前,先通过localbus总线访问所述cpld的寄存器,设置接下来将要通信的iic从设备的编号,所述cpld收到接下来要通信的设备后,直接将所述主控cpu的iic接口与该编号对应的iic从设备的iic接口在逻辑上连接起来,此时相对于所述主控cpu而言,该总线上只有一个iic从设备与其通信,地址的问题便得以解决了。

其中,所述主控cpu无访问所述iic从设备时,与所述cpld相连的每一组所述iic从设备的iic总线均存于空闲状态,且两根信号线都处于高电平。

进一步地,所述主控cpu通过localbus总线向所述cpld指定要通信的所述iic从设备的编号,所述cpld将所述iic从设备的链路与所述主控cpu的iic总线在逻辑上相连。

进一步地,所述主控cpu发出iic时序的起始信号,所述iic从设备接收到起始信号后开始通信;当完成通信后,所述主控cpu发出iic时序的终止信号,所述iic从设备将结束当前通信,等待下一次的起始信号。

进一步地,所述主控cpu与所述iic从设备通过iic协议进行数据的收发。

进一步地,当所述主控cpu与当前所述iic从设备完成通信后,所述主控cpu继续通过localbus总线向所述cpld指定下一个要通信的iic从设备,直到所有iic从设备完成通信。

进一步地,本发明中,所述主控cpu访问所述iic从设备流程为:所述主控cpu访问所述iic从设备时,所述cpld通过localbus总线制定所述iic从设备的编号;所述cpld将指定的所述iic从设备连接至所述主控cpu,所述主控cpu与所述iic从设备进行通信。

假设所述主控cpu需要访问若干个地址相同(0x48)的iic从设备(1、2、3...n),将其编号为0x01、0x02、0x03...,将这些设备都接到所述cpld上,同时所述主控cpu也引出一组iic总线接到所述cpld,所述cpld内的某个8位寄存器0x50,用于设置iic从设备的编号,所述主控cpu需要从编号为0x02的iic从设备的寄存器0x03中读取温度值,假设为50℃(0x32),具体实现步骤如下:

(1)所述主控cpu通过localbus总线访问所述cpld的寄存器0x50,并往寄存器写入值0x02;

(2)所述cpld的寄存器0x50被设置为0x02的时候,将iic从设备2的iic接口与所述主控cpu的接口在逻辑上一一对应相连,如scl与scl,sda与sda;

(3)所述主控cpu按照iic协议向发起起始信号,紧接着发出数据0x90(0x48左移1位后再或上写操作位0),等待iic从设备给出应答信号;

(4)编号为2的iic从设备收到数据的前7位为自己的地址时,获取所述主控cpu的写操作信号再给出应答,继续准备接收数据;

(5)所述主控cpu再发出一个字节0x03,表示要读取该寄存器地址中的值,继续等待应答;

(6)编号为2的iic从设备收到0x03的值时,得知所述主控cpu希望读取该寄存器中的值,给出应答;

(7)所述主控cpu得到应答后,发出重启信号,紧接着发出数据0x91(0x48左移1位后再或上读操作位1),表示下一个字节周期需要读取信号了,再等待iic从设备给出应答信号;

(8)编号为2的iic从设备收到数据的前7位为自己的地址时,获取所述主控cpu的读操作信号再给出应答后,将温度值0x32发给所述主控cpu,然后等待应答;

(9)所述主控cpu收到0x32的值后,不给应答,并给出终止信号;

(10)编号为2的iic从设备收到终止信号,该轮iic通信结束;

(11)所述主控cpu继续通过localbus总线访问所述cpld的寄存器0x50,并往寄存器写入其他需要访问的iic从设备的编号值。

进一步地,如图2所示,基于上述基于相同i2c地址的芯片扩展方法,本发明还相应提供了一种基于相同i2c地址的芯片扩展系统,其中,所述基于相同i2c地址的芯片扩展系统包括:主控cpu,与所述主控cpu连接cpld,以及与所述cpld连接多个iic从设备;所述cpld用于为每一组与所述cpld相连的所述iic从设备各引出一组iic接口;在进行iic通信之前,所述主控cpu用于访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。

本发明还提供一种存储介质,其中,所述存储介质存储有基于相同i2c地址的芯片扩展程序,所述基于相同i2c地址的芯片扩展程序被处理器执行时实现如上所述的基于相同i2c地址的芯片扩展方法的步骤。

综上所述,本发明提供一种基于相同i2c地址的芯片扩展方法、系统及存储介质,所述方法包括:主控cpu与cpld建立连接,所述cpld为每一组与所述cpld相连的iic从设备各引出一组iic接口;在进行iic通信之前,所述主控cpu访问所述cpld的寄存器,并设置将要通信的所述iic从设备的编号;所述cpld接收到要通信设备的请求后,将所述主控cpu的iic接口与其编号对应的iic从设备的iic接口在逻辑上进行连接。本发明通过cpld对相同i2c地址芯片扩展,可以在主控cpu的iic总线上任意挂同类型的iic设备,使得主控cpu的访问控制变得简单,增强了驱动能力,提高了整个系统的稳定性和安全性。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

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

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