掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及复杂电路系统中超大容量及远距离应用的I2C数据采集技术,具体是一种可采集百路I2C数据的装置及方法。

背景技术

I2C总线是Philips公司开发的一个双向两线总线,可实现芯片之间的控制总线,也称为Inter IC总线,该总线可以解决以下电路之间的互联互通问题:

1)微处理器对其它芯片的智能控制;2)各类传感器、液晶驱动器、远程I/O口RAMEEPROM或数模转换器;3)收音机和视频系统的数字调谐和信号处理电路,或者是音频拨号电话的DTMF发生器。I2C总线包括两条线:一条串行数据线SDA(SerialData,简称SDA)和一条串行时钟线 SCL(SerialClock,简称SCL) ,这两条线都通过一个上拉电阻与正电源连接,在总线不忙时保持高电平,总线上的每个器件都有唯一的地址,这些器件可是微处理器、LCD驱动器、存储器、或者是A/D芯片,根据器件的不同功能可以在单路I2C总线上作为主机或从机。I2C总线速率常用0~400kbit/s,高电平高于0.7*VDD,低电平低于0.3*VDD,最大电流3mA,I2C 总线上可能会连接不同工艺的设备包括CMOS、NMOS、双极性等器件,逻辑‘0’和逻辑‘1’的电平并不是固定的,取决于 VDD 的实际电平。

现有技术中单路I2C数据在主机和从机之间的传输过程时序图如图1所示,在每个串行时钟脉冲SCL出现时,串行数据总线SDA传送一个数据位,在时钟信号高电平期串行数据总线SDA上的数据位应保持稳定,如果此时改变串行数据总线SDA数据则被认为是总线的控制信号,串行时钟脉冲SCL为高电平时串行数据总线SDA电平由高至低的变化作为总线的起动条件串行时钟脉冲SCL为高电平时串行数据总线SDA电平由低至高的变化作为总线的停止条件参见下图1在起动条件和停止条件后的一小段时间之间总线将处于忙状态。

起动条件和停止条件由主机产生,在起动和停止条件之间所传送的数据数量不受限制,传送数据的每个字节为8位字节。

高位数据先传送,再依次传送其它位,最后传送一个应答位(从机传完), 应答位的时钟脉冲由主机产生,在出现与应答位对应的时钟脉冲时产生应答位的从机将拉低SDA线,主机则释放SDA线,从机在接收到每一个字节数据之后必须发送一个应答信号,而主机在接收到从机发送的数据后也必须发送一个应答信号,如果从机不能立即接收数据它将拉低SCL线迫使发送器进入等待状态。

目前I2C数据信号采集技术基本都是单路或几路,且从机的I2C地址都是同一个固定值,或者几个值。然而随着现在设备的智能化要求越来越高,各设备对于内部的各种信息状态的采集与控制要求越来越多,动辄几十路,上百路的I2C数据都要求进行实时的数据采集上报及控制,那么之前的这种单路或几路I2C数据采集技术首先无法满足采集数量上的需求,其次在的复杂电路系统中往往有着各种不同速率的数据同时在传输,内部连接传输线较多,线与线之间常常是密集且以非平行结构分布排列的,这样就导致导线之间容易产生串扰,低速的I2C数据在并行采集的数量超过3路后容易对旁边的高速数据传输产生电磁干扰,从而会导致其他高速数据的传输误码出错,传输失败。

复杂电路系统是指一个系统中存在着各种各样的电信号需要处理,涉及到数字电路及模拟电路,这里面有高中低速的各种数字信号,既有5Gbps级别的高速串行信号或者几十khz的低速数据信号,又有并行的数字存储信号、高精度的时钟信号等等。由于系统的复杂性及需要实现的技术指标较多,上述的各种信号需要同时在同一个系统中,甚至同一块电路板上一起处理和工作。

发明内容

本发明的目的是针对现有技术的不足,而提供一种可采集百路I2C数据的装置及方法。这种装置结构简单、成本低。这种方法操作方便、可避免多路I2C数据采集给复杂电路系统的中其它信号带来的电磁干扰,能提高数据采集的效率及数量。

实现本发明目的的技术方案是:

一种可采集百路I2C数据的装置, 包括主控板CPU和与主控板CPU连接的24块结构一致的分控板,所述主控板CPU主芯片为GD32F450,GD32F450芯片是基于Arm®Cortex®-M4处理器的32位通用微控制器,最高处理频率为200Mhz,主控板CPU还设有晶振、FLASH芯片、SDRAM芯片、网络接口单元、远端上报单元,主控板CPU与本地上位机及远端上位机连接,24块结构一致的分控板中每个分控板均设有1个PCA9548A芯片,PCA9548A芯片为恩智浦公司生产的,8通道带复位的I2C总线开关芯片,每个芯片连接5路不同的待采集I2C数据端,主控板CPU 设定3组即A组、B组和C组对120路I2C数据进行采集、每组采集8个分控板共计40路,其中A组对应SCL1,SDA1,GD32F450对应管脚为B6,B5;B组对应SCL2、SDA2,GD32F450对应管脚J4,H4;C组对应SCL3,SDA3,GD32F450对应管脚F15,F14,24块分控板采用插头JL24-20TKH连接至主控板CPU上的插座JL24-20ZJW上 ,连接器上的信号线定义为电源、地、串行数据SDA、串行时钟SCL、地址码A0,A1,A2。

所述主控板CPU在PCB制作时共分为由上至下依次叠接的10层,其中,I2C信号线即串行数据线SDA、串行时钟SCL线单独置于第10层,5Gbps的高速差分信号线置于顶层即第1层,其它信号线置于PCB的中间层即第3、5、6、8层,且主控板的I2C信号线跟其它信号线保持3倍以上I2C信号线线径宽距离,主制板叠层阻抗设计为:第1层即顶层,参考面为第2层,高速差分信号走线优先放置于顶层、保持差分阻抗100欧、线宽为4.5mil、间距5.5mil、单端的电信号阻抗为50欧、线宽为7.5mil;第3层参考面为第2、4两层、差分信号保持差分阻抗100欧、线宽为5.1mil,间距6.0mil、单端的电信号阻抗为50欧、线宽为6.3mil;第5、6层,参考面为第4、7层,差分信号保持差分阻抗100欧、线宽为5.2mil、间距6.0mil、单端的电信号阻抗为50欧、线宽为6.5mil;第8层参考面为第7、9层、差分信号保持差分阻抗100欧、线宽为5.1mil、间距6.0mil、单端的电信号阻抗为50欧、线宽为6.3mil;第10层参考面为第9层、差分信号保持差分阻抗100欧、线宽为4.5mil、间距5.5mil、单端的电信号阻抗为50欧、线宽为7.5mil;第1、3、5、6、8、10层为信号布线层,第2、4、7、9层设计为地及电源层。

所述分控板在PCB制作时共分4层,其中,高速信号线置于第1层即顶层,顶层参考面为第2层,高速差分电信号线差分阻抗100欧、线宽为7mil、间距8mil、单端电信号阻抗为50欧、线宽为7mil;第2层为地层;第3层为电源层;第4层即底层,将I2C信号线置于底层、单端的电信号线阻抗为50欧、线宽为7mil。

所述SDRAM芯片为SM48LC16M16M芯片,SM48LC16M16M芯片为容量256Mb的SDRAM同步动态随机存储器,具有4个bank,每个bank大小为4Mbit*16,电路所有控制信号、地址信号、数据信号与电路外部提供的时钟CLK同步。

所述FLASH芯片为GD25Q127C,GD25Q127C为最小可以读写10万次,3.3V供电的8Mbit的串行闪存芯片,数据可保存20年,支持SPI口,软硬件写保护,低功耗。

所述晶振为高精度有源晶振,工作电压为3.3V、频率为25MHz、精度为±50ppm。

所述远端上报单元设有电平转换和E/O、O/E电路模块。

一种可采集百路I2C数据的方法,包括上述装置,所述方法包括如下步骤:

1)主控板完成分控板地址编码:系统上电后,主控板的晶振开始工作,晶振的第3脚输出11.0592Mhz方波系统时钟, 主控板CPU先从FLASH芯片GD25Q127C调用预先存储的软件,一开始对输入的11.0592Mhz时钟进行96次分频操作后,得到115.2Khz的方波作为I2C总线的串行时钟线SCL,根据之前的分组设计,分控板的地址为7位,前4位固定设置为芯片PCA9548A的默认地址1110,后3位A0A1A2由主控板根据不同分控板顺序,编码为000~111即8个2进制地址,主控板将不同分控板的A0A1A2位分别上拉到电源、用1表示,或者下拉到地,用0表示;

2)主控板检测上位机指令: 主控板CPU芯片接收来自上位机的以太网命令,检测上位机发送的命令,在接收到 “检测第X块分控板的第Y路I2C数据的功率”指令,则计算出对应地址为1110XXX,准备读取第X块分控板第Y路I2C数据的功率,反之如上位机无任何指令,则CPU的A组按默认第1块分控板第1路~第1块分控板第5路;第2块分控板……第8块分控板的固定顺序依次读取第1路~第40路I2C数据的功率,完成A组轮询采集,B组、C组同理;

3)主控板读取第X块分控板第Y路待采集I2C数据的功率信息:主控板产生起始位S即将串行时钟线SCL拉高电平,串行数据线SDA拉低电平,分控板检测到主控板的起始位之后,就开始从主控板接收地址,之后会把从主控板接收到的地址和自身的编码后地址进行比较,一旦两个地址相同,分控板将发送一个确认应答ACK,主控板下发第1条指令,打开第X块分控板,第2条指令打开分第X块控板的第Y路I2C数据,第3条指令读取第X块分控板上第Y路I2C数据的功率数据,主控板在接收完分控板发送的功率数据后也必须回复一个应答信号,第4条指令关闭第X块分控板的第2路I2C数据,主控板下发关闭指令,分控板产生应答位后,主控板产生停止位P即将串行时钟SCL拉高电平,串行数据SDA拉高电平,完成第三步,在本步骤中的第4个指令必须执行,否则会导致总线上出现多个I2C数据通道同时响应从而导致后续数据读写失败,执行过程如下表所示:

4)主控板信息上报: 控制主机将采集到的第X块分控板的第Y路I2C数据功率数据编码为以太网数据格式,向上位机上报,从而完成一次指定地址I2C数据采集。

上电后主控板的CPU处理芯片,首先从FLASH芯片GD25Q127C中调用对应的程序,同时操作系统工作时需要SDRAM芯片SM48LC16M16M及高精度晶振的支撑,然后GD32F450根据上位机的以太网采集指令,对以太网指令进行解码后,通过模拟的I2C接口访问分控板上特定通道的I2C开关芯片,采集特定对象的数据,总计可完成120路的I2C数据采集。然后CPU将采集对象的数据通过以太网上报给上位机。

系统需要同时采集的I2C数据数量较多,信息量较大,且为了保证数据采集的过程中不出错且采集工作过程中不能对系统中其他高速数据传输产生电磁干扰, 每片PCA9548A芯片负责完成5路不同的I2C数据访问, CPU处理器负责对24片PCA9548A进行地址编码、复位,同时分析所接收到上位机的I2C采集要求,根据要求对120路的I2C数据采集进行指定地址数据采集,或者系统默认对数据进行分组分时的轮询采集处理,在完成120个I2C数据被采集对象的电压,温度,功率等信息的访问与上报功能的同时不影响控制板上其他高速信号的传输。

120路I2C数据采集完成后,CPU处理器对采集到的数据进行编码处理,加上CRC校验转化为网络数据后通过本地网口上传至本地上位机,同时也可将数据采集后,经电平变化处理,经过E/O,O/E的光强度调制变为光信号后传输给距离百公里外的远端上位机,上位机在接收到网络数据后,对数据进行CRC校验,确认所接收数据无误后将采集到的信息显示出来。

所述的CPU中央处理器芯片采用GD32F450I,是基于Arm®Cortex®-M4处理器的32位通用微控制器、最高处理频率为200Mhz,Cortex®-M4处理器是一个具有浮点运算功能、低中断延迟时间和低成本调试特性的32位处理器。

所述开关芯片PCA9548A生产于恩智浦公司,是一个8通道带复位的I2C总线开关芯片,是一个可通过I2C总线控制双向八进制开关芯片、SDL/SDA口可向下支持八路SDLx/SDAx。

本技术方案对总线上120路的I2C数据进行数据实时采集,既可完成指定地址的I2C数据采集,也可进行轮询数据采集。通过对上百路的I2C数据采集来读取上百路的被采集对象的电压,温度,功率等有用数据信息的采集,在不影响板上其他的高速5Gbps信号、10MHz模拟时钟信号以及2Mbps的RS422数据等信号的正常传输的情况下,120路I2C数据采集完成后的数据可通过网口上报至本地的电脑终端进行显示。

如果采集到的I2C数据需要传输给较远的电脑终端,可将采集后的数据,经电平变化处理,经过E/O,O/E的光强度调制变为光信号后传输给距离百公里外的远端上位机,上位机在接收到网络数据后,对数据进行CRC校验,确认所接收数据无误后将采集到的信息显示出来。采集的命令的下发则是相反的过程。

这种装置结构简单、成本低。这种方法操作方便、可避免多路I2C数据同时采集给复杂电路系统的中其它信号带来的电磁干扰,能提高数据采集的效率及数量。

附图说明

图1为现有技术中单路I2C数据在主机和从机之间的传输过程时序图;

图2为实施例中装置的结构示意图;

图3为实施例中方法的流程示意图。

具体实施方式

下面结合附图和实施例对本发明的内容做进一步的阐述,但不是对本发明的限定。

实施例:

参照图2,一种可采集百路I2C数据的装置, 包括主控板CPU和与主控板CPU连接的24块结构一致的分控板,所述主控板CPU主芯片为GD32F450,GD32F450芯片是基于Arm®Cortex®-M4处理器的32位通用微控制器,最高处理频率为200Mhz,主控板CPU还设有晶振、FLASH芯片、SDRAM芯片、网络接口单元、远端上报单元,主控板CPU与本地上位机及远端上位机连接,24块结构一致的分控板中每个分控板均设有1个PCA9548A芯片,PCA9548A芯片为恩智浦公司生产的,8通道带复位的I2C总线开关芯片,每个芯片连接5路不同的待采集I2C数据端,主控板CPU 设定3组即A组、B组和C组对120路I2C数据进行采集、每组采集8个分控板共计40路,其中A组对应SCL1,SDA1,GD32F450对应管脚为B6,B5;B组对应SCL2、SDA2,GD32F450对应管脚J4,H4;C组对应SCL3,SDA3,GD32F450对应管脚F15,F14,24块分控板采用插头JL24-20TKH连接至主控板CPU上的插座JL24-20ZJW上 ,连接器上的信号线为电源、地、串行数据SDA、串行时钟SCL、地址码A0,A1,A2。

本例主控板CPU在PCB设计时共分为由上至下依次叠接的10层,其中,I2C信号线即串行数据线SDA、串行时钟SCL线单独置于第10层,5Gbps的高速差分信号线置于顶层即第1层,其它信号线置于PCB的中间层即第3、5、6、8层,且主控板的I2C信号线跟其它信号线保持3倍以上I2C信号线线径宽距离,主制板叠层阻抗设计为:第1层即顶层,参考面为第2层,高速差分信号走线优先放置于顶层、保持差分阻抗100欧、线宽为4.5mil、间距5.5mil、单端的电信号阻抗为50欧、线宽为7.5mil;第3层参考面为第2、4两层、差分信号保持差分阻抗100欧、线宽为5.1mil,间距6.0mil、单端的电信号阻抗为50欧、线宽为6.3mil;第5、6层,参考面为第4、7层,差分信号保持差分阻抗100欧、线宽为5.2mil、间距6.0mil、单端的电信号阻抗为50欧、线宽为6.5mil;第8层参考面为第7、9层、差分信号保持差分阻抗100欧、线宽为5.1mil、间距6.0mil、单端的电信号阻抗为50欧、线宽为6.3mil;第10层参考面为第9层、差分信号保持差分阻抗100欧、线宽为4.5mil、间距5.5mil、单端的电信号阻抗为50欧、线宽为7.5mil;第1、3、5、6、8、10层为信号布线层,第2、4、7、9层设计为地及电源层。

本例分控板在PCB制作时共分4层,其中,高速差分信号线置于第1层即顶层,顶层参考面为第2层,高速差分信号线差分阻抗100欧、线宽为7mil、间距8mil、单端电信号阻抗为50欧、线宽为7mil;第2层为地层;第3层为电源层;第4层即底层,将I2C信号线置于底层、单端的电信号线阻抗为50欧、线宽为7mil。

本例SDRAM芯片为SM48LC16M16M芯片,SM48LC16M16M芯片为容量256Mb的SDRAM同步动态随机存储器。

本例FLASH芯片为GD25Q127C,GD25Q127C为最小可以读写10万次,3.3V供电的8Mbit的串行闪存芯片。

所述晶振为高精度有源晶振,工作电压为3.3V、频率为25MHz、精度为±50ppm。

本例远端上报单元包含电平转换芯片, 电光变换(E/O)及光电变换(O/E)单元。

如图3所示,一种可采集百路I2C数据的方法,包括上述装置,所述方法包括如下步骤:

1)主控板完成分控板地址编码:系统上电后,主控板的晶振开始工作,晶振的第3脚输出11.0592Mhz方波系统时钟, 主控板CPU先从FLASH芯片GD25Q127C调用预先存储的软件,一开始对输入的11.0592Mhz时钟进行96次分频操作后,得到115.2Khz的方波作为I2C总线的串行时钟线SCL,根据之前的分组设计,分控板的地址为7位,前4位固定设置为芯片PCA9548A的默认地址1110,后3位A0A1A2由主控板根据不同分控板顺序,编码为000~111即8个2进制地址,主控板将不同分控板的A0A1A2位分别上拉到电源、用1表示,或者下拉到地,用0表示;

2)主控板检测上位机指令:主控板CPU芯片接收来自上位机的以太网命令,检测上位机发送的命令, “检测分控板8的第2路I2C数据的功率”,则计算出对应地址(1110111),准备读取分控板8的第2路I2C数据的功率,反之如上位机无任何指令,则CPU的A组按默认分控板1第1路~分控板1第5路;分控板2……分控板8的固定顺序依次读取第1路~第40路I2C数据的功率,完成A组的轮询采集,B组,C组同理;

3)主控板读取分控板8第2路待采集I2C数据的功率信息:主控板产生起始位(S)即将串行时钟线SCL拉高电平,串行数据线SDA拉低电平,分控板检测到主控板的起始位之后,就开始从主控板接收地址,之后会把从主控板接收到的地址和自身的地址(编码后地址)进行比较,一旦两个地址相同,分控板将发送一个确认应答(ACK),主控板下发第1条指令,打开分控板8,第2条指令打开分控板8的第2路I2C数据,第3条指令读取分控板8上第2路I2C数据的功率数据(-5dBm):主控板在接收完分控板发送的功率数据后也必须回复一个应答信号,第4条指令关闭分控板8的第2路I2C数据,主控板下发关闭指令,分控板产生应答位后,主控板产生停止位(P),即将串行时钟SCL拉高电平,串行数据SDA拉高电平,完成第三步。在本步骤中的第4个指令一定要执行,否则会导致总线上出现多个I2C数据通道同时响应从而导致数据读写失败。执行过程如下表所示:

4)主控板信息上报: 控制主机将采集到的分控板8的第2路I2C数据功率数据编码为以太网数据格式,向上位机上报,从而完成指定地址I2C数据采集。

如为轮询采集,则按照默认的A组、B组、C组顺序完成全部120路I2C数据采集。

技术分类

06120115630473