光通信器件中多路i2c器件的实时监控方法

文档序号:6586382阅读:495来源:国知局
专利名称:光通信器件中多路i2c器件的实时监控方法
技术领域
本发明涉及光通信器件的实时监控,具体涉及光通信器件中多路I2C器件的实时 监控方法。
背景技术
12C总线(INTER IC BUS)是Philips公司开发的一个简单双向两线总线,用于连 接微控制器及其外围器件。12C总线最主要的优点是其简单性和有效性,所有符合I2C总线 的器件都具有一个片上接口 ,使器件之间直接通过I2C总线通讯,因此I2C总线占用的空间 非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。12C总线的另一个优点 是,它支持多主控(multimastering),其中任何能够进行发送和接收的器件都可以成为主 总线,这个设计解决了很多在设计数字控制电路时遇到的接口问题。现在Philips提供了 超过150种CMOS和双极性兼容I2C总线的IC。 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU 与被控IC之间、IC与IC之间进行双向传送,I2C总线在传送数据过程中共有三种类型信 号,它们分别是开始信号、结束信号和应答信号。 开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低
电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答
信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答
信号,由判断为受控单元出现故障。 12C总线在传输数据开始前,主控器件发送起始位,通知从器件做好接收准备;在 传输数据结束时,主控器件发送停止位,通知从器件停止接收。起始位时序当SCL位为高 位时,SDA线由高到低的转换;停止位时序当SCL位为高位时,SDA线由低到高的转换。SDA 上的数据在时钟高电平期间必须保持稳定,在SCL低电平期间才可以改变,输出到SDA线上 的每个字节必须是8位,每次传输的字节不受限制,每个字节必须有一个确认位(又称应答 位ACK),与确认位对应的时钟脉冲由主控器产生,发送器在应答期间必须拉低SDA线。
在光通信器件中,基于I2C总线的器件应用极为广泛,各种光传输模块、时钟模 块、AD采样转换模块、电源管理模块都使用12C总线实现配置的下载和数据的上报。随着通 信技术的发展,传输速率越来越快,对数据采集实时性的要求也越来越高。CPU对所管辖的 各种具有12C总线的器件进行配置和监控的行为,占用了 CPU的大量资源,同时也降低了数 据交互的实时性;而且由于各个厂家的12C器件的时序特性和操作方法各有不同,造成CPU 在和这些器件进行数据交换时容易出现操作超时等很多问题。 另外,由于CPU的I/O 口资源有限,能直接接入到CPU的12C器件数量有限,目前 解决多路I2C器件监控问题时通常是通过FPGA器件或CPLD器件扩展CPU的I/O 口 ,具体 有两种实现方法第一 是所有的12C器件共享一根SCL线或者一根SDA线,另一根连接单独I/O 口,然后通过模拟I2C时序的方法依次对各个器件进行;第二种是所有的12C器件的 SCL线和SDA线连接单独的I/O 口,然后通过模拟I2C时序的方法依次对各个器件进行操 作。随着传输器件复杂性提高,越来越多的12C器件被实际应用,由于上述两种方法的工作 模式为串行模式,造成了以下一些问题 (1)、虽然扩展了 I/O 口,可以监控更多的12C器件,但CPU不能及时处理某个I2C 器件,还是只能采取轮询I2C器件的方法,延时太大。 (2)、在光传输系统中,I2C器件的数据变化往往具有随机性和突发性,而上述方法 的读写操作都需要CPU主动发起,且一次只能操作一个I2C器件,这样容易造成CPU不能及 时获取器件性能的变化信息,从而无法及时做出适当响应,这会对系统的性能造成较大影 响。

发明内容
本发明所要解决的技术问题是解决光通信器件中,CPU不能及时获取12C器件性 能的变化信息,从而无法及时做出适当响应的问题。 为了解决上述技术问题,本发明所采用的技术方案是提供一种光通信器件中多路 I2C器件的实时监控方法,包括以下步骤
A10、选择需要操作的I2C器件; A20、配置FPGA内部与每个12C器件对应的I2C模块中的相关寄存器参数,这些寄 存器包括 时钟预定标寄存器,用于选择时钟频率; 命令寄存器,用于选择操作方式和模块使能; 发送缓存寄存器,用于存储发往12C器件的数据; 状态寄存器,用于获得模块的工作状态、中断标志和告警标志; 接收缓存寄存器,用于缓存I2C器件送来的数据; A30、 FPGA根据每个I2C模块中命令寄存器的操作方式状态与I2C器件进行数据 交换,当操作方式为读操作时,FPGA实时读取I2C器件的数据并存储在对应的I2C模块中 的接收缓存寄存器内;当操作方式为写操作时,FPGA将I2C模块中发送缓存寄存器中的数 据输出至相应的I2C器件; A40、 CPU通过中断或查询方式获取I2C器件更新的数据。
上述方法中,步骤A40包括以下步骤 A401、通过硬件中断方式或者寄存器中断标志位的状态获知I2C器件是否有数据 更新; A402、如果无数据更新,则转步骤301继续判断是否有数据更新;否则,则转403 ;
A403、 CPU进入中断服务程序,先禁止该I2C模块的读操作,然后停止缓存数据的 更新,读取缓存寄存器中的数据,CPU完成对缓存数据的读取后,再使能I2C模块的读操作, 重新启动FPGA对I2C器件的定时数据采集,并清除中断。 命令寄存器和状态寄存器分别通过单字节传输控制器与比特传输控制器进行通 讯,发送缓存寄存器和接收缓存寄存器分别通过数据移位控制器与比特传输控制器进行通 讯,比特传输控制器通过数据线SDA和时钟信号SCL与I2C器件通讯。
4
本发明,CPU只需完成相关配置,并根据中断标志完成与FPGA之间的数据读取和 写入,而不需要参与和I2C器件的数据通信,因此,用较低的成本完成多路I2C器件的监控, 从而极大的简化了系统器件的调试和配置操作,加快研发的速度,保证业务开展的准确性, 取得大幅降低运维成本,提升用户满意度的有益效果。


图1为多路I2C器件的实时监控系统结构示意图;
图2为FPGA内部12C逻辑模块功能框图; 图3为本发明光通信器件中多路12C器件的实时监控方法的流程图。
具体实施例方式
本发明提供的光通信器件中多路12C器件的实时监控方法,由FPGA内部的12C处 理模块独立完成与多路I2C器件的数据交互,在操作完成后向CPU提供中断标志,软件通过 中断或者查询的方式获得中断标志后进入相应的服务程序,完成数据的读取或写入,用较 低的成本完成多路I2C器件的监控,从而极大的简化系统器件调配的操作。
下面结合附图和具体实施例对本发明做出详细的说明。 图1为多路I2C器件的实时监控系统结构示意图,图2为FPGA内部I2C逻辑模块 功能框图,如图1、图2所示,CPU与FPGA以本地总线方式连接,每个I2C器件的时钟SCL和 数据SDA两根线都单独和FPGA的I/O 口连接,以达到通过FPGA和多个I2C器件间同时进 行数据通信的目的,FPGA通过CPU本地总线将各个I2C器件的状态上报给CPU,同时CPU也 可通过本地总线完成对各个I2C器件的配置。每个I2C器件的各自SCL、 SDA线分别接入 到FPGA内部的各自I2C逻辑模块,每个I2C逻辑模块具备I2C主机模式的单字节读写操作 和多字节读写操作功能,并提供读写数据缓存,命令寄存器和状态寄存器分别通过单字节 传输控制器与比特传输控制器进行通讯,发送缓存寄存器和接收缓存寄存器分别通过数据 移位控制器与比特传输控制器进行通讯,比特传输控制器通过数据线SDA和时钟信号SCL 与I2C器件通讯。写操作时,先由软件将需要写入I2C器件的数据写入FPGA的发送数据缓 存,使能操作后再由FPGA完成对I2C器件的数据写入;读操作时,使能操作后由FPGA先完 成对I2C器件的数据读取,并将读取的数据存放接收数据缓存中,在操作结束后再由软件 从FPGA的接收数据缓存中完成数据读取。在需要操作12C器件时,软件选择需要操作的一 个或多个器件,访问器件所对应FPGA内部的12C模块,通过对寄存器的配置,控制每个I2C 器件对应的FPGA内部I2C模块的工作,完成对多个I2C器件同时进行读写操作,读操作由 FPGA发起,FPGA在一定周期内完成对I2C器件的读操作,并只在数据发生变化时通知CPU 更新数据;写操作由CPU发起,FPGA根据配置完成对12C器件的写操作。软件通过中断或 查询方式判断操作是否完成,并根据操作的类型进行下一步操作。 图3为本发明光通信器件中多路12C器件的实时监控方法的流程图,如图3所示,
该方法包括以下步骤 A10、选择需要操作的I2C器件; A20、配置FPGA内部与每个12C器件对应的I2C模块中的相关寄存器参数,这些寄 存器包括
时钟预定标寄存器,用于选择时钟频率;
命令寄存器,用于选择操作方式和模块使能;
发送缓存寄存器,用于存储发往I2C器件的数据;
状态寄存器,用于获得模块的工作状态和中断标志;
接收缓存寄存器,用于缓存I2C器件送来的数据; A30、 I2C模块使能,FPGA根据每个I2C模块中命令寄存器的操作方式状态与I2C 器件进行数据交换,当操作方式为读操作时,FPGA实时读取12C器件的数据并存储在对应 的12C模块中的接收缓存寄存器内;当操作方式为写操作时,FPGA将12C模块中发送缓存 寄存器中的数据输出至相应的I2C器件; A40、 CPU通过中断或查询方式获取I2C器件更新的数据。
步骤A40包括以下步骤 A401、 CPU通过中断或查询方式判断是否有数据更新; A402、如果无数据更新,则转步骤401继续判断是否有数据更新;否则,则转403 ;
A403、 CPU进入中断服务程序,先禁止该I2C模块的读操作,然后停止缓存数据的 更新,读取缓存寄存器中的数据,CPU完成对缓存数据的读取后,再使能I2C模块的读操作, 重新启动FPGA对I2C器件的定时数据采集,并清除中断。 下面以CPU通过FPGA对I2C器件的读操作和写操作分别对本发明提供的方法加 以详细说明 ( — )CPU读操作。 第一步选择一个或多个需要操作的12C器件。 第二步配置每个12C器件所对应FPGA内部I2C模块的相关寄存器,选择时钟频 率,器件地址和操作长度。CPU通过操作12C逻辑模块内部的寄存器,完成对相应12C器件 的监控,即通过配置时钟预定标寄存器选择时钟频率,通过配置命令寄存器选择操作方式 和模块使能,通过发送缓存寄存器配置发送数据,通过状态寄存器获得模块工作状态和中 断标志,通过接收缓存获得采集数据。 第三步配置命令寄存器使操作方式为读方式并使能模块,FPGA开始按配置的操
作周期(最小周期10毫秒,最大周期60秒)对I2C器件进行主动的读操作。 第四步FPGA向I2C器件发送起始信号、地址和读写类型信息。 第五步FPGA判断12C器件的应答信号是否为有效的低电平,如果是则执行下一
步;如不是则上报错误报告并发送结束信号,停止该次读操作。经过已配置的操作周期时
间,再次重复该步骤,若握手通信正常继续下一个步骤,否则仍重复该步骤,等待软件的命
令是否关断与该I2C器件的通信。 第六步FPGA开始12C数据接收,在数据接收过程中,每个字节接收结束后FPGA 向I2C器件的发送应答信号,并判断I2C器件是否已接收应答信号,如果是则进行下一个字 节的接收;如不是则上报错误报告并发送结束信号,停止该次读操作,经过已配置的操作周 期时间,再次从第四步开始执行。若握手通信正常继续下一个步骤,否则仍从第四步开始执 行,等待软件的命令是否关断与该I2C器件的通信。 第七步完成最后一个字节接收后,FPGA向12C器件的发送应答信号。并判断I2C 器件是否已接收应答信号,如果是则向12C器件发送结束信号,并在操作周期定时到来时回到第四步重新开始对I2C器件的读操作,此时如果发现读取的数据发生变化则产生中断信号通知CPU ;如不是则上报错误报告并发送结束信号,停止该次读操作,经过已配置的操作周期时间,再次从第四步开始执行。若握手通信正常继续下一个步骤,否则仍从第四步开
始执行,等待软件的命令是否关断与该I2C器件的通信。 第八步FPGA读取的I2C器件所有数据都存储在FPGA的内部缓存中,CPU通过中断或查询方式判断是否有数据更新,数据若更新,软件进入中断服务程序,先禁止该I2C模块的读操作,停止缓存数据的更新,防止CPU在读缓存数据过程中数据被新的采集数据覆盖,CPU完成对缓存数据的读取后,再使能I2C模块的读操作,重新启动FPGA对I2C器件的定时数据采集,最后清除中断,操作完成。
CPU写操作 第一步选择一个或多个需要操作的I2C器件。
第二步配置命令寄存器禁止这些I2C器件的读操作。 第三步配置每个I2C器件所对应FPGA内部I2C模块相关寄存器,包括选择时钟频率、器件地址、操作长度和配置操作数据。 第四步配置操作方式为写方式并使能各模块,FPGA内各I2C模块分别对I2C器件同时开始数据写入。 第五步FPGA向I2C器件发送起始信号、器件地址和读写类型信息。
第六步FPGA判断12C器件的应答信号是否为有效的低电平,如果是则进入下一步;如不是则上报错误报告并发送结束信号,停止操作。CPU可根据各个I2C模块的错误报告通过再次使能模块,重新开始对该路I2C器件的写操作。 第七步在数据发送过程中,每个字节发送结束后FPGA判断12C器件的应答信号是否为有效的低电平,如果是则进行下一个字节的发送;如不是则上报错误报告并发送结束信号,停止操作。CPU可根据各个12C模块的错误报告通过再次使能模块,重新开始对该路I2C器件的写操作。 第八步最后一个字节发送结束后,FPGA判断I2C器件的应答信号是否为有效的低电平,如果是则产生中断信号通知CPU并向12C器件发送结束信号;如不是则上报错误报告并发送结束信号,停止操作。CPU可根据各个12C模块的错误报告通过再次使能模块,重新开始对该路I2C器件的写操作。 第九步软件通过中断或查询方式判断写操作是否完成,进入中断服务程序,清除中断,操作完成。 上述读操作的第四步到第七步,写操作的第五步到第八步由FPGA独立完成,此期
间软件不需要参与,并支持同时多路并行执行。
本发明具有如下有益效果 (1)、能同时操作多个I2C器件,实时监控I2C器件的数据变化,从而大大提高了数据的实时性; (2)FPGA内I2C逻辑模块的实时特性减少了软件参与的频率,提高了CPU的使用效率; (3)、利用FPGA的丰富I/O资源及能支持多种I/O接口电平特性,不同厂家的I2C器件(可以是不同的I2C工作速率,不同供电电源值)可以采用完全通用的I2C逻辑模块
7驱动程序,减小了维护成本和电平转换器件成本。 本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
权利要求
光通信器件中多路I2C器件的实时监控方法,其特征在于包括以下步骤A10、选择需要操作的I2C器件;A20、配置FPGA内部与每个I2C器件对应的I2C模块中的相关寄存器参数,这些寄存器包括时钟预定标寄存器,用于选择时钟频率;命令寄存器,用于选择操作方式和模块使能;发送缓存寄存器,用于存储发往I2C器件的数据;状态寄存器,用于获得模块的工作状态、中断标志和告警标志;接收缓存寄存器,用于缓存I2C器件送来的数据;A30、FPGA根据每个I2C模块中命令寄存器的操作方式状态与I2C器件进行数据交换,当操作方式为读操作时,FPGA实时读取I2C器件的数据并存储在对应的I2C模块中的接收缓存寄存器内;当操作方式为写操作时,FPGA将I2C模块中发送缓存寄存器中的数据输出至相应的I2C器件;A40、CPU通过中断或查询方式获取I2C器件更新的数据。
2. 如权利要求1所述的光通信器件中多路12C器件的实时监控方法,其特征在于,步骤 A40包括以下步骤A401、通过硬件中断方式或者寄存器中断标志位的状态获知12C器件是否有数据更新;A402、如果无数据更新,则转步骤301继续判断是否有数据更新;否则,则转403 ;A403、CPU进入中断服务程序,先禁止该I2C模块的读操作,然后停止缓存数据的更新, 读取缓存寄存器中的数据,CPU完成对缓存数据的读取后,再使能12C模块的读操作,重新 启动FPGA对I2C器件的定时数据采集,并清除中断。
3. 如权利要求1所述的光通信器件中多路I2C器件的实时监控方法,其特征在于命令 寄存器和状态寄存器分别通过单字节传输控制器与比特传输控制器进行通讯,发送缓存寄 存器和接收缓存寄存器分别通过数据移位控制器与比特传输控制器进行通讯,比特传输控 制器通过数据线SDA和时钟信号SCL与I2C器件通讯。
全文摘要
本发明公开了一种光通信器件中多路I2C器件的实时监控方法,包括以下步骤,A10、选择需要操作的I2C器件;A20、配置FPGA内部与每个I2C器件对应的I2C模块中的相关寄存器;A30、FPGA根据每个I2C模块中命令寄存器的操作方式状态与I2C器件进行数据交换,当操作方式为读操作时,FPGA实时读取I2C器件的数据并存储在对应的I2C模块中的接收缓存寄存器内;当操作方式为写操作时,FPGA将I2C模块中发送缓存寄存器中的数据输出至相应的I2C器件;A40、CPU通过中断或查询方式获取I2C器件更新的数据。本发明由FPGA内部的I2C处理模块独立完成与多路I2C器件的数据交互,从而极大的简化了系统器件的调配操作。
文档编号G06F13/24GK101719110SQ200910259519
公开日2010年6月2日 申请日期2009年12月18日 优先权日2009年12月18日
发明者刘超, 尹淇, 陈飞月 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1