IIC交换系统及其控制方法与流程

文档序号:17536940发布日期:2019-04-29 14:05阅读:461来源:国知局
IIC交换系统及其控制方法与流程

本发明涉及iic控制器领域,特别涉及一种iic交换系统及其控制方法。



背景技术:

目前主流soc(系统级芯片)控制器一般包含2到3个iic(集成电路总线)的控制器,在处理多达32到128个iic外设时一般需要添加总线扩展iic的专用ic(集成电路),这样会影响到通讯速率和效率,并且会导致专用ic的采购数量变多,非常浪费成本。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中soc控制器在处理多个iic外设时需要添加总线扩展iic的专用ic,导致影响通讯速率和效率,浪费成本的缺陷,提供一种iic交换系统及其控制方法。

本发明是通过下述技术方案来解决上述技术问题:

本发明提供了一种iic交换系统,包括:

soc控制器,内部包含至少一个iic控制器;

若干开关,分别连接在所有所述iic控制器的输出端和iic外设的输入端之间;

逻辑控制模块,用于将不同的iic控制器的输出端与不同的开关相连通,并为不同的开关分配不同的iic外设地址,以控制不同的iic控制器与不同的iic外设建立单独通信。

较佳地,所述逻辑控制模块还用于在iic控制器与对应的iic外设完成通信后,重新为每个iic控制器分配对应的iic外设进行单独通信,并且重新分配的iic外设与之前通信的iic外设不相同。

较佳地,所述逻辑控制模块为不同的开关分配的iic外设地址为iic总线地址,以控制不同的开关与不同的iic总线连通,每条iic总线上均连接有多个iic外设。

较佳地,每条iic总线上连接的iic外设的数量为8个。

较佳地,每个开关均包括两个同开同闭的子开关,所述两个子开关用于分别与iic总线的数据线和时钟线进行连通。

较佳地,所述逻辑控制模块用于获取每个iic控制器的当前状态,并判断当前状态是否为忙,并在判断为否时,为当前状态不为忙的iic控制器分配对应的iic外设进行单独通信。

本发明还提供了一种iic交换系统的控制方法,其利用上述的iic交换系统实现,所述控制方法包括以下步骤:

s1、所述逻辑控制模块将不同的iic控制器的输出端与不同的开关相连通;

s2、所述逻辑控制模块为不同的开关分配不同的iic外设地址,并控制不同的iic控制器与不同的iic外设建立单独通信。

较佳地,所述控制方法在步骤s2之后还包括:

s3、所述逻辑控制模块在iic控制器与对应的iic外设完成通信后,重新为每个iic控制器分配对应的iic外设进行单独通信,并且重新分配的iic外设与之前通信的iic外设不相同。

较佳地,步骤s2具体包括:

所述逻辑控制模块获取每个iic控制器的当前状态,并判断当前状态是否为忙,并在判断为否时,为当前状态不为忙的iic控制器分配对应的iic外设进行单独通信。

本发明的积极进步效果在于:本发明以一种交换的方式实现一个或多个iic的控制器与众多iic的设备进行信息交互,既保证了通讯速率和效率又节省了pcb(印刷线路板)面积和产品体积,减少了专用ic的采购数量,大大降低了成本。

附图说明

图1为本发明较佳实施例的iic交换系统的模块示意图。

图2为本发明较佳实施例的iic交换系统的电路结构示意图。

图3为本发明较佳实施例的iic交换系统的控制方法的流程图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

如图1-2所示,本发明的iic交换系统包括soc控制器1、若干开关2以及逻辑控制模块3;

其中,soc控制器1内部包含至少一个iic控制器11;若干开关2则分别连接在所有所述iic控制器11的输出端和iic外设4的输入端之间;

逻辑控制模块3则用于将不同的iic控制器11的输出端与不同的开关2相连通,并为不同的开关2分配不同的iic外设地址,以控制不同的iic控制器11与不同的iic外设4建立单独通信;并且,在iic控制器11与对应的iic外设4完成通信后,所述逻辑控制模块3还重新为每个iic控制器11分配对应的iic外设4进行单独通信,并且重新分配的iic外设与之前通信的iic外设不相同。

在本发明的具体实施过程中,iic外设具体通过iic总线与开关连通,而一条iic总线上可以连接多个iic外设,进而这多个iic外设就可以通过iic总线与同一个iic控制器进行单独通信,具体地,一条iic总线上连接的iic外设的数量为8个;从而,所述逻辑控制模块3为不同的开关分配的iic外设地址就可以为iic总线地址,以控制不同的开关与不同的iic总线连通,进而控制每个iic控制器分别与多个iic外设进行单独通信。

而优选地,每个开关均包括两个同开同闭的子开关,所述两个子开关用于分别与iic总线的数据线(sda线)和时钟线(scl线)进行连通;

具体地,所述逻辑控制模块3用于获取每个iic控制器11的当前状态,并判断当前状态是否为忙,并在判断为否时,为当前状态不为忙的iic控制器分配对应的iic外设进行单独通信。

具体如图2所示,其示出了本发明的一个实施例的iic交换系统的电路结构示意图,其中soc控制器具体包括两个iic控制器,因此其中只示出了两个iic控制器的输出端口(即iic1port0和iic2port1),其分别通过开关swin0和swin1与若干开关相连通,虽然图中仅示出四个开关sw00、sw10……sw0f、sw1f,但利用中间省略号具体表示包括用0-9以及a-f表征的开关;而所述逻辑控制模块(即图2中的cpld,复杂可编程逻辑器件)具体会为不同的开关分配不同的iic总线地址,从而控制不同的开关与不同的iic总线(具体在图2中用sda0、scl0……sdaf、sclf来表示)连通,而每条总线上均连接有8个iic外设(具体在图2中用iicdevice00-iicdevice07……iicdevicef0-iicdevicef7来分别表示各条总线上的8个外设),而本发明的iic交换系统的具体工作原理则如上所述。

本发明通过对所有开关(sw)加上控制逻辑(switchcontrollogic)完成交换功能,并充分利用了时分复用技术;并且通过对所有的sda信号加上控制逻辑(sdasignaldetectandcontrollogic)完成双向数据信号的通信控制。而具体地,控制逻辑(switchcontrollogic)通过接收soc控制器的gpio(通用输入/输出接口)的控制命令给对应的开关接通或关断,后续的通讯将根据分配的通道单独进行数据通讯。

控制逻辑通过接收soc的iic1的控制命令来分配iic1与一个开关单独通信,同时通过接收soc的iic2的控制命令来分配iic2与另一个开关单独通信,通过交换和时分复用提高iic交换系统的吞吐量。

而在具体通讯时,soc的iic1和iic2由控制逻辑根据需要分配到指定的不同的iic总线上,进而实现了不同的iic控制器与不同总线上的外设进行数据的交互,并在通信完成后由控制逻辑再将iic1和iic2分配到新的iic总线上继续进行数据交互。

下面提供本发明的iic交换系统的部分控制代码,具体如下:

一、soc控制代码(驻留在soc控制器)

二、逻辑控制器代码(驻留在cpld)

modulesampling_sensors(reset,iic1_clk,iic1_sda,iic1_cs,iic2_clk,iic2_sda,iic2_cs,devn_clk,devn_sda,devn_cs,gpion);//逻辑端口配置

inputreset;//复位输入信号定义

inputiic1_clk,iic1_cs;//iic1输入信号定义

inoutiic1_sda,iic2_sda;//iic1&iic2数据信号定义

inputiic2_clk,iic2_cs;//iic2输入信号定义

inout[15:0]devn_sda;//16个iic外设的数据信号定义

input[5:0]gpion;//6个地址输入信号

outputiic1_miso;//iic1输出信号定义

outputiic2_miso;//iic2输出信号定义

output[15:0]devn_clk;//16个iic外设时钟从cpld输入信号定义

output[15:0]devn_cs;//16个iic外设片选从cpld输入信号定义

wire[1:0]sw_in;//内部连接控制信号

wire[1:0]sda_in;//内部连接控制信号

wire[15:0]sw0;//内部连接控制信号,sw01到sw0f

wire[15:0]sw1;//内部连接控制信号,sw11到sw1f

iic_devu1(.iic_dev_sda(devn_sda),.iic_dev_cs(devn_cs),.iic_clk(iic1_clk),.iic_sda(iic1_sda),.iic_cs(iic1_cs),.dev(gpion1,gpion2,gpion3,gpion4,gpion5));

//解析信号并设置devn_sda0到devn_sda15和iic1_sda的输入输出关系

iic_devu2(.iic_dev_sda(devn_sda),.iic_dev_cs(devn_cs),.iic_clk(iic2_clk),.iic_sda(iic2_sda),.iic_cs(iic2_cs).dev(gpion1,gpion2,gpion3,gpion4,gpion5));

//解析信号并设置devn_sda0到devn_sda15和iic2_sda的输入输出关系

2to4decodeu3(.a(sw_in),.ctl(gpion0));//切换路径到对应的iic

4to16decodeu5(.a(sw0),.dev(gpion2,gpion3,gpion4,gpion5));//切换路径到对应的devnscl

4to16decodeu6(.a(sw1),.dev(gpion2,gpion3,gpion4,gpion5));//切换路径到对应的devnsda

endmodule

本发明还提供了一种iic交换系统的控制方法,其利用上述的iic交换系统实现,如图3所示,所述控制方法包括以下步骤:

步骤101、所述逻辑控制模块将不同的iic控制器的输出端与不同的开关相连通;

步骤102、所述逻辑控制模块为不同的开关分配不同的iic外设地址,并控制不同的iic控制器与不同的iic外设建立单独通信;

步骤103、所述逻辑控制模块在iic控制器与对应的iic外设完成通信后,重新为每个iic控制器分配对应的iic外设进行单独通信,并且重新分配的iic外设与之前通信的iic外设不相同。

并且优选地,在步骤102中具体包括:所述逻辑控制模块获取每个iic控制器的当前状态,并判断当前状态是否为忙,并在判断为否时,为当前状态不为忙的iic控制器分配对应的iic外设进行单独通信。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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