<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > DS4830的多地址I2C總線(xiàn)從機模塊設計

DS4830的多地址I2C總線(xiàn)從機模塊設計

作者: 時(shí)間:2016-10-15 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:為了使Maxim公司的光微滿(mǎn)足光收發(fā)模塊SFF-8472協(xié)議(光收發(fā)器件動(dòng)態(tài)診斷監控接口協(xié)議)中的多I2C總線(xiàn)從機地址的要求,根據內部I2C總線(xiàn)主從模塊及集成開(kāi)發(fā)環(huán)境IAR的特點(diǎn),設計了作為I2C總線(xiàn)從機的硬件及軟件。實(shí)驗證明,該設計滿(mǎn)足SFF-8472協(xié)議中關(guān)于I2C總線(xiàn)從機的要求。
關(guān)鍵詞:光微;DS4830;I2C總線(xiàn)從機;SFF-8472

引言
經(jīng)過(guò)十幾年不懈努力,我國已經(jīng)成為光纖、光纜、光器件和光收發(fā)模塊的制造大國,特別是在光收發(fā)模塊領(lǐng)域取得了長(cháng)足的發(fā)展。目前,光收發(fā)模塊正朝著(zhù)小型化、高速率、低功耗、長(cháng)距離方向發(fā)展。特別是高速率方向,從最初的10 Mbps、100 Mbps、1 000 Mbps,到10 Gbps、40 Gbps、100 Gbps。其對內部使用的微提出越來(lái)越高的要求。不僅僅對微處理器的處理速率有要求,而且對微處理器外圍功能模塊如ADC、DAC、TEC(Thermoeleetric Cooler)等處理性能的要求也越來(lái)越高。針對此,Maxim公司針對光通信行業(yè)特殊應用及功能要求,定制設計了一款采用低功耗、16位MAXQ20核的微控制器,其提供了完備的光控、校準及監測方案,主要應用于XFP(10 Gbps小型可插撥式模塊)、SFP(小型可插撥式模塊)、SFP+(增強型小型可插撥式模塊)、QSFP(4通道小型可插撥式模塊)、40/100 Gbps光收發(fā)器、GPON(Gigabit無(wú)源光網(wǎng)絡(luò )模塊)、10GEPON(10 Gbps以太網(wǎng)無(wú)源光網(wǎng)絡(luò )模塊)、XPON(下一代無(wú)源光網(wǎng)絡(luò )模塊)等產(chǎn)品上。
DS4830有如下特性:
①16位MAXQ20核,RISC指令集,標準Harvard結構。無(wú)須借助指令流水線(xiàn)即可實(shí)現全部指令的單周期指令的執行。
②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總線(xiàn)及JTAG BootLoader。
低功耗設計,在所有模擬模塊使能情況下,功耗僅為16 mA。
在光通信行業(yè)中,I2C總線(xiàn)是主要的通信接口,無(wú)論是應用于光收發(fā)還是PON類(lèi)產(chǎn)品,均要求DS4830作為I2C總線(xiàn)的從機時(shí),要滿(mǎn)足SFF-8472協(xié)議。SFF-8472協(xié)議是一個(gè)關(guān)于光學(xué)器件的數字監控方面的多元協(xié)議,主要應用于光收發(fā)模塊行業(yè),定義其基本的A0H和A2H的MEMORY MAP(地址映射表),即DS4830要滿(mǎn)足SFF-8472協(xié)議,其能響應兩個(gè)I2C總線(xiàn)從機地址:0xA0、0xA2。其中,0xA0定義了一個(gè)256字節的EEPROM存儲器,定義了接口形式、速率、生產(chǎn)廠(chǎng)商、生產(chǎn)日期等信息,0xA2同樣定義了一個(gè)256字節的EEPROM,包括了光收發(fā)器的一些實(shí)時(shí)監控參量(如溫度、電壓、發(fā)端BIAS電流、發(fā)端光功率、收端光功率)報警門(mén)限及報警標志。

1 硬件設計
DS4830有兩個(gè)I2C總線(xiàn)接口,主I2C總線(xiàn)接口和從I2C總線(xiàn)接口。其中,主I2C總線(xiàn)接口使用MSDA(PIN24)、MSCL(PIN26)這兩個(gè)引腳。從I2C總線(xiàn)接口使用SDA(PIN3)、SCL(PIN2)這兩引腳。SFF-8472協(xié)議要求光收發(fā)器有兩個(gè)I2C總線(xiàn)從地址,即微控制器要響應兩個(gè)I2C總線(xiàn)從地址,但由于DS4830主從I2C總線(xiàn)模塊接口只能響應一個(gè)I2C總線(xiàn)地址,需要將主I2C總線(xiàn)接口設置為從I2C總線(xiàn)模式,并且在硬件上需要將這兩個(gè)I2C總線(xiàn)接口相連即MSDA與SDA相連作為SDA線(xiàn),MSCL與SCL相連作為SCL線(xiàn)。
同時(shí),根據I2C總線(xiàn)協(xié)議可知,每條總線(xiàn)線(xiàn)路的電容負載Cb在標準模式下最大為400 pF,而DS4830這兩個(gè)I2C總線(xiàn)接口引腳的電容負載CBIN典型值僅為5 pF,兩條總線(xiàn)并在一齊,電容負載也僅為10 pF。另外,針對光收發(fā)模塊的I2C總線(xiàn)上是不會(huì )存在許多I2C總線(xiàn)從器件,故這樣的總線(xiàn)相連,不會(huì )影響其I2C總線(xiàn)的電氣特性。

2 FIRMWARE設計
2.1 開(kāi)發(fā)環(huán)境
在FIRMWARE設計中,開(kāi)發(fā)環(huán)境為IAR公司的Embedded Workbench For MAXQ 2.40版本。
DS4830內部的主I2C總線(xiàn)模塊的寄存器共5個(gè),說(shuō)明如下:
①主I2C總線(xiàn)控制寄存器(I2CCN_M)。寄存器地址為M1[0CH],其功能主要有I2C總線(xiàn)工作模式的主從設置,I2C總線(xiàn)的Clock Stretching和I2C總線(xiàn)的TIMEOUT功能相同,都是使能和關(guān)閉。
②主I2C總線(xiàn)狀態(tài)寄存器(I2CST_M)。寄存器地址為M1[01H],功能是顯示各種I2C總線(xiàn)操作時(shí)序的狀態(tài)位。
③主I2C總線(xiàn)中斷使能寄存器。地址為M1[02H],控制各種I2C總線(xiàn)中斷源的使能。
④主I2C總線(xiàn)數據寄存器(I2CBUF_M)。寄存器地址為M1[00H],它是I2C總線(xiàn)上的數據寄存器,一級緩沖、發(fā)送、接收于一體。
⑤主I2C總線(xiàn)地址寄存器(I2CSLA_M)。寄存器地址為M1[0FH],功能是設置響應的從I2C總線(xiàn)地址。
2.2 從I2C總線(xiàn)模塊寄存器
從I2C總線(xiàn)模塊寄存器如下:
①從I2C總線(xiàn)控制寄存器。寄存器地址為M2[0CH],寄存器名稱(chēng)為I2CCN_S。
②從I2C總線(xiàn)狀態(tài)寄存器。寄存地址為M2[01H],寄存器名稱(chēng)為I2CST_S。
③從I2C總線(xiàn)中斷使能寄存器。寄存地址為M2[02H],寄存器名稱(chēng)為I2CIE_S。
④從I2C總線(xiàn)數據寄存器。寄存器地址為M2[00H],寄存器名稱(chēng)I2CBUF_S。
⑤從I2C總線(xiàn)地址寄存器。寄存器地址為M2[0FH],寄存器名稱(chēng)為I2CSLA_S。
2.3 cstarup.s66文件
DS4830共提供了13個(gè)寄存器的模式,其分為外圍寄存器和系統寄存器兩部分。其中,外圍寄存器包括有6個(gè)模式(模式0~模式5),主I2C總線(xiàn)相應的寄存器在模式1,從I2C總線(xiàn)的相應寄存器在模式2,故在設計中斷服務(wù)程序中,必須訪(fǎng)問(wèn)不同模式下的寄存器。這必須修改cstartup.s66文件,該文件類(lèi)似于Keil C51中的STARTUP文件,但是不同于Keil,在創(chuàng )建項目的時(shí)候,集成編譯器自動(dòng)添加一個(gè)STARTUP啟動(dòng)文件,而且這個(gè)文件直接列在項目表上,讓人一目了然。但IAR IDE中,如果沒(méi)有在項目?jì)热藶榧尤隿startup.s66啟動(dòng)文件,則使用系統默認目錄下的默認cstartup.s66文件。
另外,由于DS4830中斷機制只使用一個(gè)中斷向量,所有中斷的優(yōu)先級別相同。在中斷全局使能的情況下,每當一個(gè)中斷響應后,程序跳轉到cstartup.s66區,根據中斷標志判斷不同的中斷源,并跳轉進(jìn)入其相應的中斷服務(wù)程序。為了加快I2C總線(xiàn)響應速率,需將I2C總線(xiàn)中斷的優(yōu)先級提到最高,通過(guò)將主從I2C總線(xiàn)中斷服務(wù)程序(cstartup.s66文件中的INTERRUPT2)修改到所有中斷程序的第一位,即將I2C總線(xiàn)中斷入口判斷變?yōu)楸4娆F場(chǎng)后的第一個(gè)判斷。
修改cstartup.s66中斷部分代碼如下:
b.JPG
c.JPG
d.JPG
2.4 中斷服務(wù)程序
中斷服務(wù)程序流程圖如圖1所示。

本文引用地址:http://dyxdggzs.com/article/201610/306824.htm

e.JPG


2.5 偽代碼(Pseudo Code)
初始化函數略——編者注。
(1)Clock stretching機制
作為從I2C總線(xiàn)器件,有一個(gè)關(guān)鍵的特性就是Clockstretching,即當從器件不及時(shí)接收或發(fā)送完整的數據時(shí),從器件會(huì )將SCL線(xiàn)拉低,強迫I2C總線(xiàn)主機進(jìn)入等待狀態(tài),直到從器件準備好相應的數據后才釋放SCL總線(xiàn)。由于DS4830內核是20 MHz時(shí)鐘,但其指令時(shí)鐘僅為10MHz,要達到標準100 kHz的I2C總線(xiàn)時(shí)鐘速率,必須在軟件控制Clock stretching時(shí),即在初始化時(shí)使能Clockstretching使能位I2CSTREN。IAR生成的中斷服務(wù)程序的LIST文件部分略——編者注。
DS4830中斷響應時(shí)間分為3部分:
①CPU響應4個(gè)指令周期。
②cstartup執行最多10個(gè)指令周期。
③中斷服務(wù)程序執行壓棧部分16個(gè)指令周期。
這樣算下來(lái)進(jìn)行中斷程序未對I2C總線(xiàn)寄存器進(jìn)行處理前已有30個(gè)指令周期時(shí)間,即30×0.1μs=3.0μs。要達到100 kHz的I2C總線(xiàn)速率,按占空比50%計算,低電平為5μs,故不考慮上升下降沿的時(shí)間,留給中斷服務(wù)程序的時(shí)間僅有2μs去處理I2C總線(xiàn)寄存器和相應SFF-8472協(xié)議EEPROM要求。這是相當困難的,所以盡量提高I2C總線(xiàn)速率,使能Clock stretching。
實(shí)際驗證中,當I2C總線(xiàn)模塊不使能Clock stretching后,上位機(I2C總線(xiàn)主機)對DS4830 0xA0地址的3種I2C總線(xiàn)讀操作為:當前讀、頁(yè)讀、單字節讀,其讀出的結果均為0xA1。原因即是I2C總線(xiàn)主機發(fā)送到從器件的I2C總線(xiàn)地址值為0xA1(讀模式),在SCL時(shí)鐘低電平期,真正要發(fā)送的數據還未送到數據寄存器(I2C_BUF),此時(shí)數據寄存器中仍為接收到的地址值。SCL高電平來(lái)到,直接將這個(gè)值移位出了數據寄存器送到I2C總線(xiàn)上,如圖2所示。

a.JPG


(2)SMBus Timeout機制
SMBUS(System Management Bus),是1995年Intel公司提出的,最初設計應用于移動(dòng)PC和桌面PC系統中的低速率通信。它與I2C總線(xiàn)電氣及協(xié)議定義上類(lèi)似,但在速率、超時(shí)錯誤、邏輯電平和總線(xiàn)協(xié)議上有所區別。DS4830主機I2C總線(xiàn)模塊是使用兼容I2C總線(xiàn)協(xié)議,并引入SMBUS超時(shí)錯誤功能,使用一個(gè)30 ms的定時(shí)器,當總線(xiàn)SCL低電平超過(guò)這個(gè)時(shí)間后,觸發(fā)TIMEOUT中斷,以釋放I2C總線(xiàn),避免I2C總線(xiàn)的鎖死。由于各種公司的I2C總線(xiàn)兼容協(xié)議可能存在一些差異,各種時(shí)序,包括一些非法或錯誤的時(shí)序都有可能在總線(xiàn)上出現,所以使用TIMEOUT機制來(lái)避免I2C總線(xiàn)死鎖是相當有效和實(shí)用的。DS4830使能TIMEOUT功能,通過(guò)I2CCN_S(M)控制寄存器的SMB_MOD置位來(lái)實(shí)現。

結論
本文通過(guò)介紹DS4830相應主從I2C總線(xiàn)模塊接口的寄存器,利用IAR編譯環(huán)境實(shí)現了I2C總線(xiàn)從器件操作,并滿(mǎn)足SFF-8472協(xié)議對多從機地址的要求。系統的上位機發(fā)出各種常規的I2C總線(xiàn)讀操作及寫(xiě)操作均正常。該方法已應用于SFP+ZR、QSFP產(chǎn)品中,并得到客戶(hù)系統驗證,I2C總線(xiàn)可靠、穩定。



關(guān)鍵詞: 控制器 DS4830

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>