0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:ADI ? 2023-06-12 16:16 ? 次閱讀

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

實(shí)驗(yàn)表明,本文提供的I2C總線配置很容易實(shí)現(xiàn)總線上從器件的訪問(wèn)。

背景及討論

I2C總線能夠工作在標(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個(gè)從地址。隨著對(duì)從設(shè)備數(shù)量需求的增加,I2C總線引入了10位地址長(zhǎng)度。

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

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

wKgaomSG1FGAJhPQAAAOIrKq3t8191.gif

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

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

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

wKgZomSG1FKAEiCfAAB87zaKMeg028.gif

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

逐位仿真實(shí)現(xiàn)I2C通信

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

wKgaomSG1FSAFPX1AACAJCcejKc698.gif

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

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

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

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

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

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

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

wKgZomSG1FaAV-bmAADRz74GmVA898.gif

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

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

結(jié)論

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

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50224

    瀏覽量

    421010
  • ADC
    ADC
    +關(guān)注

    關(guān)注

    0

    文章

    108

    瀏覽量

    16845
  • I2C總線
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    2117
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPIO模擬I2C總線的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

    I2C總線簡(jiǎn)單方便,是我們經(jīng)常使用的一種總線。但有時(shí)候我們的MCU沒有足夠多的I2C控制器來(lái)實(shí)現(xiàn)我們的應(yīng)用,所幸我可以使用普通的GPIO引腳
    發(fā)表于 12-14 14:19 ?5307次閱讀
    GPIO模擬<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的驅(qū)動(dòng)設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    i2c總線ppt(I2C總線器件應(yīng)用)

    I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理
    發(fā)表于 08-13 17:34 ?0次下載

    用Verilog HDL實(shí)現(xiàn)I2C總線功能

    簡(jiǎn)述了I2C總線的特點(diǎn);介紹了開發(fā)FPGA時(shí)I2C總線模塊的設(shè)計(jì)思想;給出并解釋了用Verilog HDL實(shí)現(xiàn)部分
    發(fā)表于 10-19 10:49 ?104次下載

    什么是i2c總線

    什么是i2c總線  下載請(qǐng)點(diǎn)擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?2903次閱讀

    總線I2C總線結(jié)合實(shí)現(xiàn)數(shù)字溫度計(jì)實(shí)驗(yàn)

    總線I2C 總線結(jié)合實(shí)現(xiàn)數(shù)字溫度計(jì)實(shí)驗(yàn) 一. 實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)本實(shí)驗(yàn),理解掌握單總線器件和
    發(fā)表于 09-22 17:42 ?3128次閱讀
    單<b class='flag-5'>總線</b>和<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>結(jié)合<b class='flag-5'>實(shí)現(xiàn)</b>數(shù)字溫度計(jì)實(shí)驗(yàn)

    I2C總線驅(qū)動(dòng)程序的實(shí)現(xiàn)

    I2C總線驅(qū)動(dòng)程序的實(shí)現(xiàn) I2C 驅(qū)動(dòng)程序的簡(jiǎn)介本驅(qū)動(dòng)程序?yàn)闃?biāo)準(zhǔn)的51 系列CPU 編寫,讓CPU 模擬成一個(gè)I2C
    發(fā)表于 09-26 17:25 ?5700次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>驅(qū)動(dòng)程序的<b class='flag-5'>實(shí)現(xiàn)</b>

    I²C總線驗(yàn)證實(shí)現(xiàn)--Proven Imple

    I²C總線驗(yàn)證實(shí)現(xiàn)--Proven Implementations of the I
    發(fā)表于 01-22 16:16 ?2099次閱讀
    <b class='flag-5'>I</b>²<b class='flag-5'>C</b><b class='flag-5'>總線</b>的<b class='flag-5'>驗(yàn)證</b>及<b class='flag-5'>實(shí)現(xiàn)</b>--Proven Imple

    IC總線驗(yàn)證實(shí)現(xiàn)

    摘要:本應(yīng)用筆記簡(jiǎn)I²C總線驗(yàn)證實(shí)現(xiàn)單回顧了I²
    發(fā)表于 04-23 15:59 ?1829次閱讀
    IC<b class='flag-5'>總線</b>的<b class='flag-5'>驗(yàn)證</b>及<b class='flag-5'>實(shí)現(xiàn)</b>

    IC總線驗(yàn)證實(shí)現(xiàn)

    摘要:本應(yīng)用筆記簡(jiǎn)I²C總線驗(yàn)證實(shí)現(xiàn)單回顧了I²
    發(fā)表于 04-28 10:09 ?969次閱讀
    IC<b class='flag-5'>總線</b>的<b class='flag-5'>驗(yàn)證</b>及<b class='flag-5'>實(shí)現(xiàn)</b>

    用Verilog HDL實(shí)現(xiàn)I2C總線功能

    摘要: 簡(jiǎn)述了I2C總線的特點(diǎn);介紹了開發(fā)FPGA時(shí)I2C總線模塊的設(shè)計(jì)思想;給出并解釋了用Verilog HDL實(shí)現(xiàn)部分
    發(fā)表于 06-20 13:17 ?6867次閱讀
    用Verilog HDL<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>功能

    I2C總線的單片機(jī)C語(yǔ)言實(shí)現(xiàn)及其應(yīng)用

    I2C總線的單片機(jī)C語(yǔ)言實(shí)現(xiàn)及其應(yīng)用 本文介紹了I2C總線的概念、接口特性和傳輸時(shí)序,提出了一
    發(fā)表于 10-17 08:36 ?2946次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的單片機(jī)<b class='flag-5'>C</b>語(yǔ)言<b class='flag-5'>實(shí)現(xiàn)</b>及其應(yīng)用

    基于CPLD的I2C總線接口設(shè)計(jì)

    在電路設(shè)計(jì)中,I2C總線是比較常用的兩線式串行通信方式,大多數(shù)的CPU都擅長(zhǎng)于并口操作,不具備直接操作I2C總線接口的能力。為了使不具備I2C
    發(fā)表于 02-12 16:11 ?95次下載
    基于CPLD的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>接口設(shè)計(jì)

    NIOS實(shí)現(xiàn)I2C總線

    I2C 總線實(shí)現(xiàn)關(guān)鍵是SDA,他是雙向線,如果對(duì)與一個(gè)芯片只寫而不讀,I2C 實(shí)現(xiàn)起來(lái)很容易.使用NIOS
    發(fā)表于 11-01 14:28 ?37次下載

    基于SystemVerilog的I2C總線模塊驗(yàn)證

    文中分析了基于Systemverilog驗(yàn)證環(huán)境的結(jié)構(gòu),并在介紹I 2 C總線協(xié)議的基礎(chǔ)上,重點(diǎn)論述了驗(yàn)證環(huán)境中事務(wù)產(chǎn)生器及驅(qū)動(dòng)器的設(shè)計(jì)。
    發(fā)表于 12-22 17:20 ?27次下載
    基于SystemVerilog的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>模塊<b class='flag-5'>驗(yàn)證</b>

    軟件模擬I2C總線C51實(shí)現(xiàn)

    軟件模擬I2C總線C51實(shí)現(xiàn)
    發(fā)表于 10-13 11:03 ?8次下載
    軟件模擬<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的<b class='flag-5'>C</b>51<b class='flag-5'>實(shí)現(xiàn)</b>