一种spi接口转换i2c总线接口的方法及转换器的制造方法

文档序号:9579210阅读:2348来源:国知局
一种spi接口转换i2c总线接口的方法及转换器的制造方法
【技术领域】
[0001]本发明涉及总线通信技术领域,特别是涉及一种SPI接口转换I2C总线接口的方法。
【背景技术】
[0002]I2C(集成电路总线,Inter — Integrated Circuit)总线是一种两线式串行总线,用于连接微控制器及其外围设备。由于其简单、灵活、硬件管脚资源少等优点,在器件与器件之间的通信中有着广泛的应用。在标准的I2C总线协议中,物理链路分别是一条串行数据线(SDA)和一条串行时钟线(SCL)。
[0003]总线中的器件被分为主机和从机。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。每个从机一般均有一个唯一的地址,主机可以通过该地址,配置和管理相应的从机。
[0004]但在实际应用中,有可能会出现多个从机地址相同的情况。例如,现有用于以太网交换机的光模块,其I2C地址都是已经固定的Α0Η。此时如果采用传统的方法,主机是无法对具有相同地址的从机进行管理、配置和通信。这时就需要多组I2C总线对光模块进行操作。
[0005]—般I2C从机芯片都有三个地址线,I2C总线上挂接的I2C从机芯片不能超过8个,比如常用的温度传感器芯片LM75。随着目前以太网交换机的体积越来越大,需要检测的温度点可能会超过8个,这时就需要两个以上的I2C总线,而有的CPU上只有一组I2C总线接口甚至没有I2C接口,这就导致主机无法同时连接多个电子设备进行检测。即使CPU上有SPI (串行外设接口,Serial Peripheral Interface)接口,也无济于事。

【发明内容】

[0006]本发明就是针对上述问题,提供一种SPI接口转换I2C总线接口的方法。为了实现上述目的,本发明采用如下技术方案:
[0007]步骤S10根据SPI接口的时钟频率,接收SPI接口发送的数据;步骤S20将接收到的数据存入数据缓存区内;步骤S30判断接收的数据是否完整;若是,则执行步骤S50 ;若否,则执行步骤S40 ;步骤S40判断数据缓存区是否已满;若是,则执行步骤S50 ;若否,则执行步骤S10 ;步骤S50接收SPI接口发送的指示选择相应的I2C总线通道启动;步骤S60根据I2C接口的时钟频率,将数据缓存区内的数据发送出去。
[0008]本发明还提供另一种SPI接口转换I2C总线接口的方法,包括:步骤S10根据SPI接口的时钟频率,接收SPI接口发送的数据;步骤S20将接收到的数据存入数据缓存区内;步骤S30判断接收的数据是否完整;若是,则执行步骤S50 ;若否,则执行步骤S40 ;步骤S40判断数据缓存区是否已满;若是,则执行步骤S50 ;若否,则执行步骤S10 ;步骤S50接收SPI接口发送的指示选择相应的I2C总线通道启动;步骤S60根据I2C接口的时钟频率,将数据缓存区内的数据发送出去;步骤S70将数据缓存区清零,执行步骤S10。
[0009]优选地,本发明还包括步骤S01设定数据缓存区的大小。
[0010]优选地,本发明还包括步骤S02将SPI接口设为从设备模式;步骤S03将I2C总线接口设为主设备模式。
[0011]优选地,本发明还包括步骤S04设置I2C总线接口的时钟频率。
[0012]本发明还提供一种SPI接口与I2C总线接口的转换器,其中所述转换器包括:SPI接口,与所述发送设备的SPI接口相连;数据缓存模块,与所述转换器上的SPI接口相连,接收SPI接口收到的数据并进行缓存;判断模块,与所述数据缓存模块相连,判断所述数据缓存模块接收的数据是否完整,以及所述数据缓存模块是否已满;I2C通道选择模块,与所述转换器上的SPI接口相连,根据SPI接口收到的指示选择相应的I2C总线通道启动;I2C接口,与所述数据缓存模块、I2C通道选择模块相连,并与所述接收设备的I2C接口相连,根据I2C通道选择模块的选择,按照I2C接口的时钟频率,将数据缓存区内的数据发送出去。
[0013]优选地,所述转换器还包括循环控制模块,与所述数据缓存模块相连,控制数据缓存区在数据发送完毕后清零,并使SPI接口继续接收数据。
[0014]优选地,所述转换器为复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice);所述数据缓存模块是复杂可编程逻辑器件内部开辟出的数据缓存区。
[0015]本发明还提供一种SPI接口与I2C总线接口的转换装置,包括:转换器以及与所述转换器相连的时钟信号发生器,为所述转换器的I2C总线接口的串行时钟线提供时钟信号。
[0016]优选地,所述转换装置还包括具有至少一个SPI接口的发送设备,与所述转换器的SPI接口相连;至少一个具有I2C接口的接收设备,与所述转换器的I2C接口相连。
[0017]与现有技术相比,本发明利用SPI接口通过转换器扩展出I2C总线接口,在主设备I2C总线接口没有或不够的情况下,满足了电子设备对I2C总线数量越来越大的需求,且I2C接口数量可以根据实际情况及转换器的接口数量决定,具有较大的灵活性。
【附图说明】
[0018]下面将以明确易懂的方式,结合【附图说明】优选实施方式,对一种SPI接口转换I2C总线接口的方法及转换器的上述特性、技术特征、优点及其实现方式予以进一步说明。
[0019]图1是本发明一种SPI接口转换I2C总线接口的方法的主要流程图;
[0020]图2是本发明一种SPI接口转换I2C总线接口的方法的完整流程图;
[0021]图3是本发明一种SPI接口与I2C总线接口转换器的完整组成结构示意图;
[0022]图4是本发明一种SPI接口与I2C总线接口的转换装置的电路图。
[0023]附图标号说明:
[0024]1.SPI接口,2.数据缓存模块,3.判断模块,4.12C通道选择模块,5.12C接口,
6.循环控制模块。
【具体实施方式】
[0025]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照【附图说明】本发明的【具体实施方式】。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0026]图1是本发明一种SPI接口转换I2C总线接口的方法的主要流程图。如图1所示,一种SPI接口转换I2C总线接口的方法,包括:步骤S00开始;步骤S10根据SPI接口的时钟频率,接收SPI接口发送的数据;步骤S20将接收到的数据存入数据缓存区内;步骤S30判断接收的数据是否完整;若是,则执行步骤S50 ;若否,则执行步骤S40 ;步骤S40判断数据缓存区是否已满;若是,则执行步骤S50 ;若否,则执行步骤S10 ;步骤S50接收SPI接口发送的指示选择相应的I2C总线通道启动;步骤S60根据I2C接口的时钟频率,将数据缓存区内的数据发送出去。
[0027]优选地,所述步骤S60之后还包括:步骤S70将数据缓存区清零,执行步骤S10。
[0028]具体的,本实施例中从SPI接口接收到的数据先要存入数据缓存区内,如果要接收的数据量大于数据缓存区容量,则需要通过数据缓存区多次缓存,分多次将要发送的数据通过I2C总线通道发送出去。
[0029]图2为本发明一种SPI接口转换I2C总线接口的方法的完整流程图。在本发明另一个改进的实施例中,除与上述实施例相同的部分之外,还包括,如图2所示,步骤S01设定数据缓存区的大小。
[0030]在本发明另一个改进的实施例中,除与上述实施例相同的部分之外,还包括,如图2所示,步骤S02将SPI接口设为从设备模式;步骤S03将I2C总线接口设为主设备模式。
[0031]在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1