新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > I2C總線的驗證及實現(xiàn)

I2C總線的驗證及實現(xiàn)

作者: 時間:2011-07-08 來源:網(wǎng)絡(luò) 收藏

引言   

80年代初期,Philips Semiconductor為減少電子產(chǎn)品內(nèi)部并行數(shù)據(jù)總線的數(shù)量,開發(fā)了Inter IC (I2C)總線。1992年,Philips?發(fā)布I?C總線的1.0版本,該版本定義了一個2線、雙向總線,用于IC之間的互聯(lián)。到1998年為止,已經(jīng)成為低速IC互聯(lián)的標(biāo)準(zhǔn),50家以上的公司使用了該標(biāo)準(zhǔn),I?C接口被集成在1000多種不同的IC內(nèi)。

背景及討論   

能夠工作在標(biāo)準(zhǔn)模式、快速模式或高速模式(Hs)。最大速率分別為100kbps (標(biāo)準(zhǔn)模式)、400kbps (快速模式)、1.7Mbps (Hs模式,Cb = 400pF)和3.4Mbps (Hs模式,Cb = 100pF)。

原標(biāo)準(zhǔn)模式采用7位地址,允許112個從地址。隨著對從設(shè)備數(shù)量需求的增加,引入了10位地址長度。

快速模式下,從設(shè)備增加了很多有用功能。最大數(shù)據(jù)速率提高四倍,增加到400kbps??焖倌J较翴2C總線還向下兼容,支持速率其它類似的常常連接到I2C總線的總線,例如,一些無法支持高速率的總線。為抑制噪聲,快速模式器件的輸入采用了施密特觸發(fā)器結(jié)構(gòu);另外還要求I?C從器件在電源掉電時,其SCL和SDA為高阻態(tài)。

構(gòu)建Hs模式的主要目的是提高數(shù)據(jù)通信速率—數(shù)據(jù)速率是標(biāo)準(zhǔn)模式的36倍。I?C總線工作在Hs模式時,最主要的影響是SCL線上從低電平到高電平的瞬變;因為標(biāo)準(zhǔn)模式和快速模式下,總線的上拉電阻不能產(chǎn)生較快的上升時間,以支持Hs模式的規(guī)格要求。絕大多數(shù)Hs模式系統(tǒng)必須在SCL線上提供有源上拉。其它改變包括:Hs模式的兼容性要求,Hs模式主機在標(biāo)準(zhǔn)、快速模式下使用的是8位代碼。如果非應(yīng)答(I?C幀結(jié)構(gòu)的其中1位)在主機代碼之后立即保持在高電平,那么在停止位出現(xiàn)之前所有通信都將保持在Hs模式。圖1波形演示了如何使用主機代碼進(jìn)入Hs模式。

圖1.從快速、標(biāo)準(zhǔn)I?C模式進(jìn)入Hs模式的波形   

內(nèi)置I2C接口實例   

PIC18F442微控制器(?C)包含I?C外設(shè)接口,此接口支持標(biāo)準(zhǔn)和快速I2C模式。圖2給出一個應(yīng)用電路,通過此接口接收來自ADC (MAX1169)的采樣數(shù)據(jù)。PIC?收到數(shù)據(jù)后會以115k波特率的速率通過UART發(fā)送出去,數(shù)據(jù)經(jīng)過RS-232收發(fā)器(MAX3232E)后由計算機標(biāo)準(zhǔn)串口采集。文件I2C_on_chip_asm.zip包括了所有實現(xiàn)快速模式下PIC片上I2C接口通信的匯編程序。可以使用MPLAB IDE 6.10.00版本開發(fā)圖2電路的匯編程序。

  圖2.PIC18F442 ?C內(nèi)置I?C接口與16位ADC (MAX1169)的連接   

逐位仿真實現(xiàn)I?C通信   

MAXQ2000是低功耗16位RISC ?C,能夠以逐位仿真方式實現(xiàn)標(biāo)準(zhǔn)模式、快速模式甚至1.7MHz Hs模式的I?C通信。圖3給出了MAXQ2000的通用原理圖,可以作為I?C主機支持三種工作模式。為了支持1.7MHz Hs模式,原理圖中I?C總線采用有源上拉。I2C_bit_bang_asm.zip文件包含了使用?C GPIO口仿真標(biāo)準(zhǔn)、快速模式I?C通信所需的所有匯編程序。

圖3.該原理圖(基于MAXQ2000低功耗LCD I2C)提供了一個能夠工作在標(biāo)準(zhǔn)、快速或Hs模式的I?C主機   

MAXQ2000的I2C 固件的默認(rèn)時鐘速率為100kHz,但I(xiàn)2C的16MHz系統(tǒng)時鐘能夠支持逐位仿真的I2C接口工作在400kHz。以下例程演示了捕獲中斷事件并在簡單中斷服務(wù)程序中處理中斷的過程。開發(fā)工具使用MAX-IDE 1.0版(開發(fā)日期:2004年11月18日),該軟件可從Maxim網(wǎng)站免費下載。

I2C_bit_bang_c.zip文件中包含了使用MAXQ2000 GPIO口逐位仿真標(biāo)準(zhǔn)、快速模式I?C通信所需的C程序源文件。圖3對應(yīng)的例程基于maxqi2c庫文件,包括maxqi2c.h和maxqi2c.c.兩個文件。將文件加載到用戶工程后,可以在任何GPIO口支持100kHz或400kHz的I2C通信。但是,使用C程序產(chǎn)生特定速率的I?C通信時,圖3中的Y1必須用20MHz晶體代替15MHz的晶體。本例使用了為MAXQ2000 1.12B版(FAE版)開發(fā)的IAR Embedded Workbench IDE工具,用戶可以在IAR網(wǎng)站注冊后免費下載用于MAXQ2000的IAR Embedded Workbench (4K,初級版)。

HSI2C_bit_bang_asm_c.zip文件包含了使用MAXQ2000 GPIO逐位仿真1.7MHz Hs模式I?C通信所需的匯編程序和C程序。源代碼采用匯編語言和C語言混合代碼,以便充分發(fā)揮這兩種編程語言的優(yōu)勢。匯編程序有助于優(yōu)化速度,C程序能夠使源代碼更簡捷(只需少數(shù)幾行指令)。Hs模式對時序要求非常苛刻,I?C接收函數(shù)(hsi2cRecv)采用了匯編程序,代碼在hsi2c.asm文件內(nèi)。

主程序C代碼對MAXQ2000的UART進(jìn)行初始化,波特率為115.2kbps。為了實現(xiàn)1.7MHz Hs模式I?C通信,圖3中的Y1必須采用20MHz晶體。主程序C代碼在需要時調(diào)用hsi2cRecv函數(shù),并使用printf函數(shù)通過片上UART發(fā)送數(shù)據(jù),數(shù)據(jù)格式為8-N-1。這里使用Rowley CrossWorks IDE 1.0版(Build 2 Licensed copy)開發(fā)工具。要想獲得CrossWorks IDE工具,請聯(lián)系Rowley Associates Limited或訪問其網(wǎng)站。

I2C IP核外設(shè)接口的實現(xiàn)   

DI2CM I?C IP核(由Digital Core Design開發(fā))廣泛用于許多CPLD和FPGA器件。DI2CM I?C IP核將并行接口轉(zhuǎn)換為I2C接口,并可支持主機真正工作在3.4MHz的Hs模式。圖4應(yīng)用電路中,Altera2 EPM3256AQC208-10 CPLD包含DI2CM IP核。此電路需要使用40MHz晶體(U3)以支持1.7MHz和3.4MHz的Hs模式。帶有輸出使能的3態(tài)邏輯緩沖器使DI2CM IP核可以在SCL線上產(chǎn)生有源上拉,以滿足Hs模式下I?C通信的要求。邏輯反相門電路U5、U6和U7用于實現(xiàn)高電平有效和低電平有效的內(nèi)存映射的并行接口。

圖4.按照電路所示配置,Altera EPM3256AQC208-10 CPLD中的DI2CM IP核能夠?qū)崿F(xiàn)Hs模式的I2C主機   

HSI2C_IP_core_asm.zip文件包含了所用用于實現(xiàn)Hs模式I2C通信所需的匯編程序,通過連接68HC16的存儲器映射并行接口和使用DI2CM IP核編程的Altera EPM3256 CPLD實現(xiàn)。本例采用了Motorola? 68HC宏匯編程序,4.1版。

結(jié)論   

由于I2C總線是目前業(yè)內(nèi)使用最為廣泛的串行總線,系統(tǒng)設(shè)計人員能夠得到豐富的經(jīng)過驗證的例程。實施方案有—芯片內(nèi)置、逐位仿真或IP核,具體取決于所使用的系統(tǒng)處理器。使用經(jīng)過驗證的設(shè)計示例進(jìn)行開發(fā)時最簡捷的途徑,本文給出了三種工作模式下I?C接口的設(shè)計參考。

c語言相關(guān)文章:c語言教程


上拉電阻相關(guān)文章:上拉電阻原理
施密特觸發(fā)器相關(guān)文章:施密特觸發(fā)器原理


關(guān)鍵詞: I2C總線

評論


技術(shù)專區(qū)

關(guān)閉