摘要:为了使Maxim公司的光微操控器DS4830满意光收发模块SFF-8472协议(光收发器材动态确诊监控接口协议)中的多I2C总线从机地址的要求,依据DS4830内部I2C总线主从模块及集成开发环境IAR的特色,规划了DS4830作为I2C总线从机的硬件及软件。试验证明,该规划满意SFF-8472协议中关于I2C总线从机的要求。
要害词:光微操控器;DS4830;I2C总线从机;SFF-8472
导言
经过十几年不懈努力,我国已经成为光纤、光缆、光器材和光收发模块的制作大国,特别是在光收发模块范畴取得了长足的开展。现在,光收发模块正朝着小型化、高速率、低功耗、长距离方向开展。特别是高速率方向,从开始的10 Mbps、100 Mbps、1 000 Mbps,到10 Gbps、40 Gbps、100 Gbps。其对内部运用的微操控器提出越来越高的要求。不只仅对微处理器的处理速率有要求,并且对微处理器外围功用模块如ADC、DAC、TEC(Thermoeleetric Cooler)等处理功用的要求也越来越高。针对此,Maxim公司针对光通讯职业特别运用及功用要求,定制规划了一款选用低功耗、16位MAXQ20核的微操控器,其供给了齐备的光控、校准及监测计划,首要运用于XFP(10 Gbps小型可插拨式模块)、SFP(小型可插拨式模块)、SFP+(增强型小型可插拨式模块)、QSFP(4通道小型可插拨式模块)、40/100 Gbps光收发器、GPON(Gigabit无源光网络模块)、10GEPON(10 Gbps以太网无源光网络模块)、XPON(下一代无源光网络模块)等产品上。
DS4830有如下特性:
①16位MAXQ20核,RISC指令集,规范Harvard结构。无须凭借指令流水线即可完成悉数指令的单周期指令的履行。
②36 K字Flash程序存储器,4 K字ROM程序存储器,1K字数据RAM。
③10路PWM通道(BOOST/BUCK DC/DC操控,支撑4路TECC H—Bridge操控)。
④最多26路输入的ADC,分辨率达13位。
⑤8路DAC通道(12位电压型DAC)。
⑥31路GPIO引脚。
⑦内置温度传感器。
⑧可屏蔽的中止源。
⑨内部20 MHz的晶振,可支撑133 MHz外部晶振。
⑩支撑I2C总线及JTAG BootLoader。
低功耗规划,在一切模仿模块使能情况下,功耗仅为16 mA。
在光通讯职业中,I2C总线是首要的通讯接口,无论是运用于光收发仍是PON类产品,均要求DS4830作为I2C总线的从机时,要满意SFF-8472协议。SFF-8472协议是一个关于光学器材的数字监控方面的多元协议,首要运用于光收发模块职业,界说其根本的A0H和A2H的MEMORY MAP(地址映射表),即DS4830要满意SFF-8472协议,其能呼应两个I2C总线从机地址:0xA0、0xA2。其间,0xA0界说了一个256字节的EEPROM存储器,界说了接口方式、速率、出产厂商、出产日期等信息,0xA2相同界说了一个256字节的EEPROM,包含了光收发器的一些实时监控参量(如温度、电压、发端BIAS电流、发端光功率、收端光功率)报警门限及报警标志。
1 硬件规划
DS4830有两个I2C总线接口,主I2C总线接口和从I2C总线接口。其间,主I2C总线接口运用MSDA(PIN24)、MSCL(PIN26)这两个引脚。从I2C总线接口运用SDA(PIN3)、SCL(PIN2)这两引脚。SFF-8472协议要求光收发器有两个I2C总线从地址,即微操控器要呼应两个I2C总线从地址,但因为DS4830主从I2C总线模块接口只能呼应一个I2C总线地址,需要将主I2C总线接口设置为从I2C总线形式,并且在硬件上需要将这两个I2C总线接口相连即MSDA与SDA相连作为SDA线,MSCL与SCL相连作为SCL线。
一起,依据I2C总线协议可知,每条总线线路的电容负载Cb在规范形式下最大为400 pF,而DS4830这两个I2C总线接口引脚的电容负载CBIN典型值仅为5 pF,两条总线并在一齐,电容负载也仅为10 pF。别的,针对光收发模块的I2C总线上是不会存在许多I2C总线从器材,故这样的总线相连,不会影响其I2C总线的电气特性。
2 FIRMWARE规划
2.1 开发环境
在FIRMWARE规划中,开发环境为IAR公司的Embedded Workbench For MAXQ 2.40版别。
DS4830内部的主I2C总线模块的存放器共5个,阐明如下:
①主I2C总线操控存放器(I2CCN_M)。存放器地址为M1[0CH],其功用首要有I2C总线作业形式的主从设置,I2C总线的Clock Stretching和I2C总线的TIMEOUT功用相同,都是使能和封闭。
②主I2C总线状况存放器(I2CST_M)。存放器地址为M1[01H],功用是显现各种I2C总线操作时序的状况位。
③主I2C总线中止使能存放器。地址为M1[02H],操控各种I2C总线中止源的使能。
④主I2C总线数据存放器(I2CBUF_M)。存放器地址为M1[00H],它是I2C总线上的数据存放器,一级缓冲、发送、接纳于一体。
⑤主I2C总线地址存放器(I2CSLA_M)。存放器地址为M1[0FH],功用是设置呼应的从I2C总线地址。
2.2 从I2C总线模块存放器
从I2C总线模块存放器如下:
①从I2C总线操控存放器。存放器地址为M2[0CH],存放器称号为I2CCN_S。
②从I2C总线状况存放器。存放地址为M2[01H],存放器称号为I2CST_S。
③从I2C总线中止使能存放器。存放地址为M2[02H],存放器称号为I2CIE_S。
④从I2C总线数据存放器。存放器地址为M2[00H],存放器称号I2CBUF_S。
⑤从I2C总线地址存放器。存放器地址为M2[0FH],存放器称号为I2CSLA_S。
2.3 cstarup.s66文件
DS4830共供给了13个存放器的形式,其分为外围存放器和体系存放器两部分。其间,外围存放器包含有6个形式(形式0~形式5),主I2C总线相应的存放器在形式1,从I2C总线的相应存放器在形式2,故在规划中止服务程序中,有必要拜访不同形式下的存放器。这有必要修正cstartup.s66文件,该文件相似于Keil C51中的STARTUP文件,可是不同于Keil,在创立项目的时分,集成编译器主动增加一个STARTUP发动文件,并且这个文件直接列在项目表上,让人一望而知。但IAR IDE中,假如没有在项目内人为参加cstartup.s66发动文件,则运用体系默许目录下的默许cstartup.s66文件。
别的,因为DS4830中止机制只运用一个中止向量,一切中止的优先等级相同。在中止大局使能的情况下,每逢一个中止呼应后,程序跳转到cstartup.s66区,依据中止标志判别不同的中止源,并跳转进入其相应的中止服务程序。为了加速I2C总线呼应速率,需将I2C总线中止的优先级说到最高,经过将主从I2C总线中止服务程序(cstartup.s66文件中的INTERRUPT2)修正到一切中止程序的第一位,行将I2C总线中止进口判别变为保存现场后的第一个判别。
修正cstartup.s66中止部分代码如下:
2.4 中止服务程序
中止服务程序流程图如图1所示。
2.5 伪代码(Pseudo Code)
初始化函数略——编者注。
(1)Clock stretching机制
作为从I2C总线器材,有一个要害的特性便是Clockstretching,即当从器材不及时接纳或发送完好的数据时,从器材会将SCL线拉低,逼迫I2C总线主机进入等候状况,直到从器材准备好相应的数据后才开释SCL总线。因为DS4830内核是20 MHz时钟,但其指令时钟仅为10MHz,要到达规范100 kHz的I2C总线时钟速率,有必要在软件操控Clock stretching时,即在初始化时使能Clockstretching使能位I2CSTREN。IAR生成的中止服务程序的LIST文件部分略——编者注。
DS4830中止呼应时刻分为3部分:
①CPU呼应4个指令周期。
②cstartup履行最多10个指令周期。
③中止服务程序履行压栈部分16个指令周期。
这样算下来进行中止程序未对I2C总线存放器进行处理前已有30个指令周期时刻,即30×0.1μs=3.0μs。要到达100 kHz的I2C总线速率,按占空比50%核算,低电平为5μs,故不考虑上升下降沿的时刻,留给中止服务程序的时刻仅有2μs去处理I2C总线存放器和相应SFF-8472协议EEPROM要求。这是适当困难的,所以尽量进步I2C总线速率,使能Clock stretching。
实践验证中,当I2C总线模块不使能Clock stretching后,上位机(I2C总线主机)对DS4830 0xA0地址的3种I2C总线读操作为:当时读、页读、单字节读,其读出的成果均为0xA1。原因便是I2C总线主机发送到从器材的I2C总线地址值为0xA1(读形式),在SCL时钟低电平期,真正要发送的数据还未送到数据存放器(I2C_BUF),此刻数据存放器中仍为接纳到的地址值。SCL高电平来到,直接将这个值移位出了数据存放器送到I2C总线上,如图2所示。
(2)SMBus Timeout机制
SMBUS(System Management Bus),是1995年Intel公司提出的,开始规划运用于移动PC和桌面PC体系中的低速率通讯。它与I2C总线电气及协议界说上相似,但在速率、超时过错、逻辑电平缓总线协议上有所区别。DS4830主机I2C总线模块是运用兼容I2C总线协议,并引进SMBUS超时过错功用,运用一个30 ms的定时器,当总线SCL低电平超越这个时刻后,触发TIMEOUT中止,以开释I2C总线,防止I2C总线的锁死。因为各种公司的I2C总线兼容协议或许存在一些差异,各种时序,包含一些不合法或过错的时序都有或许在总线上呈现,所以运用TIMEOUT机制来防止I2C总线死锁是适当有用和有用的。DS4830使能TIMEOUT功用,经过I2CCN_S(M)操控存放器的SMB_MOD置位来完成。
定论
本文经过介绍DS4830相应主从I2C总线模块接口的存放器,使用IAR编译环境完成了I2C总线从器材操作,并满意SFF-8472协议对多从机地址的要求。体系的上位机宣布各种惯例的I2C总线读操作及写操作均正常。该办法已运用于SFP+ZR、QSFP产品中,并得到客户体系验证,I2C总线牢靠、安稳。