999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DS4830的多地址I2C總線從機模塊設計※

2013-09-21 10:44:08
單片機與嵌入式系統應用 2013年1期

潘 冬

(成都歐飛凌通訊科技有限公司,成都 610043)

引 言

經過十幾年不懈努力,我國已經成為光纖、光纜、光器件和光收發模塊的制造大國,特別是在光收發模塊領域取得了長足的發展。目前,光收發模塊正朝著小型化、高速率、低功耗、長距離方向發展。特別是高速率方向,從最初的10Mbps、100Mbps、1 000Mbps,到10Gbps、40Gbps、100Gbps。其對內部使用的微控制器提出越來越高的要求。不僅僅對微處理器的處理速率有要求,而且對微處理器外圍功 能模 塊如 ADC、DAC、TEC(Thermoelectric Cooler)等處理性能的要求也越來越高。針對此,Maxim公司針對光通信行業特殊應用及功能要求,定制設計了一款采用低功耗、16位MAXQ20核的微控制器,其提供了完備的光控、校準及監測方案,主要應用于XFP(10Gbps小型可插撥式模塊)、SFP(小型可插撥式模塊)、SFP+(增強型小型可插撥式模塊)、QSFP(4通道小型可插撥式模塊)、40/100Gbps光收發器、GPON(Gigabit無源光網絡模塊)、10GEPON(10Gbps以太網無源光網絡模塊)、XPON(下一代無源光網絡模塊)等產品上。

DS4830有如下特性:

① 16位MAXQ20核,RISC指令集,標準Harvard結構。無須借助指令流水線即可實現全部指令的單周期指令的執行。

② 36K字Flash程序存儲器,4K字ROM程序存儲器,1K字數據RAM。

③ 10路PWM通道(BOOST/BUCK DC/DC控制,支持4路TECC H-Bridge控制)。

④ 最多26路輸入的ADC,分辨率達13位。

⑤ 8路DAC通道(12位電壓型DAC)。

⑥ 31路GPIO引腳。

⑦ 內置溫度傳感器。

⑧ 可屏蔽的中斷源。

⑨ 內部20MHz的晶振,可支持133MHz外部晶振。

⑩ 支持I2C總線及JTAG BootLoader。

? 低功耗設計,在所有模擬模塊使能情況下,功耗僅為16mA。

在光通信行業中,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在標準模式下最大為400pF,而DS4830這兩個I2C總線接口引腳的電容負載CBIN典型值僅為5pF,兩條總線并在一齊,電容負載也僅為10pF。另外,針對光收發模塊的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 從I 2C總線模塊寄存器

從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中斷部分代碼如下:?isr:

2.4 中斷服務程序

中斷服務程序流程圖如圖1所示。

2.5 偽代碼(Pseudo Code)

初始化函數略——編者注。

(1)Clock stretching機制

作為從I2C總線器件,有一個關鍵的特性就是Clock stretching,即當從器件不及時接收或發送完整的數據時,從器件會將SCL線拉低,強迫I2C總線主機進入等待狀態,直到從器件準備好相應的數據后才釋放SCL總線。由于DS4830內核是20MHz時鐘,但其指令時鐘僅為10 MHz,要達到標準100kHz的I2C總線時鐘速率,必須在軟件控制Clock stretching時,即在初始化時使能Clock stretching使能位I2CSTREN。IAR生成的中斷服務程序的LIST文件部分略——編者注。

圖1 中斷服務程序流程圖

DS4830中斷響應時間分為3部分:

① CPU響應4個指令周期。

② cstartup執行最多10個指令周期。

③ 中斷服務程序執行壓棧部分16個指令周期。

這樣算下來進行中斷程序未對I2C總線寄存器進行處理前已有30個指令周期時間,即30×0.1μs=3.0μs。要達到100kHz的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 I 2 C總線時序圖(讀部分)

(2)SMBus Timeout機制

SMBUS(System Management Bus),是1995年Intel公司提出的,最初設計應用于移動PC和桌面PC系統中的低速率通信。它與I2C總線電氣及協議定義上類似,但在速率、超時錯誤、邏輯電平和總線協議上有所區別。DS4830主機I2C總線模塊是使用兼容I2C總線協議,并引入SMBUS超時錯誤功能,使用一個30ms的定時器,當總線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總線可靠、穩定。

編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。

[1] Maxim Integrated Products.DS4830datasheet[EB/OL].[2012-09].http://datasheets.maximintegrated.com/en/ds/DS4830.pdf.

[2] Maxim Integrated Products.DS4830Optical Microcontroller User's Guide[EB/OL].[2012-09].http://pdfserv.maximintegrated.com/en/an/UG5484.pdf.

[3] Maxim Integrated Products.MAXIM Integrated application Note 3960[EB/OL].[2012-09].http://china.maximintegrated.com/app-notes/index.mvp/id/3960.

[4] NXP Semiconductors.THE I2C-BUS SPECIFICATION VERSION 2.1JANUARY 2000[EB/OL].[2012-09].http://www.classic.nxp.com/acrobat_download2/literature/9398/39340011.pdf.

主站蜘蛛池模板: 国产视频 第一页| 丝袜美女被出水视频一区| 日韩第九页| 成人在线综合| 国产成人精品一区二区三在线观看| 曰韩免费无码AV一区二区| 亚洲综合日韩精品| 九九视频免费在线观看| 亚洲第一极品精品无码| 亚洲精品成人福利在线电影| 亚洲天堂日韩av电影| 亚洲天堂色色人体| 高清无码一本到东京热| 夜精品a一区二区三区| 九色最新网址| 精品无码专区亚洲| 一本久道久综合久久鬼色| 国产成人精彩在线视频50| 色网站免费在线观看| 日本尹人综合香蕉在线观看| 成人精品视频一区二区在线| 五月天天天色| 日本午夜影院| 欧美色亚洲| 婷婷在线网站| 71pao成人国产永久免费视频| 2018日日摸夜夜添狠狠躁| 国产av剧情无码精品色午夜| 久久久91人妻无码精品蜜桃HD| 午夜无码一区二区三区| 中文字幕乱妇无码AV在线| 91精品久久久久久无码人妻| 亚洲永久免费网站| 91精品国产91欠久久久久| 在线精品亚洲国产| 91青青草视频| 国产乱子伦精品视频| 亚洲中文字幕av无码区| 久久国产毛片| 三区在线视频| 国产精品深爱在线| 亚洲美女高潮久久久久久久| 人妻丝袜无码视频| a级高清毛片| 亚洲无码精品在线播放| 国产91无毒不卡在线观看| 国产精品无码在线看| 国产一区二区精品高清在线观看| 久久综合亚洲鲁鲁九月天| 在线播放精品一区二区啪视频| 久久久久人妻一区精品| 欧美a在线| 又爽又大又黄a级毛片在线视频| 黄色网站在线观看无码| 在线a视频免费观看| 亚洲AⅤ永久无码精品毛片| a级毛片免费播放| 911亚洲精品| 国产chinese男男gay视频网| 国产一级在线播放| 久久婷婷人人澡人人爱91| 自拍欧美亚洲| 国产成人h在线观看网站站| 国产熟女一级毛片| 麻豆国产在线不卡一区二区| 制服丝袜一区| 97国产精品视频自在拍| 中文字幕在线日本| 2022国产91精品久久久久久| a级毛片网| 91在线精品免费免费播放| 国产91视频观看| 熟妇丰满人妻| 久久国产精品嫖妓| 国产美女无遮挡免费视频| 国产自产视频一区二区三区| 欧洲av毛片| 播五月综合| 亚洲成网站| 国产JIZzJIzz视频全部免费| 国产偷国产偷在线高清| 好吊色国产欧美日韩免费观看|