10
http://codientu.org Tác gi: Nguyn Chí Linh Tóm t ắ t: Gii thiệ u chung vI2C Đặ c đ iể m chung vI2C:  giao thứ c, địa ch Cc chế độ hot độ ng: masterslave, multi master  Module I2C trong Vi đ iề u khiể n PIC Cấ u trc  phầ n cứ ng Chế độ hot độ ng:  Master,  Slave,  Multi master 1. Gii thiu chung v  ề I2C Ngày nay trong các hthố ng đin thin đại, rấ t nhi  ều ICs hay thiế t  bngoi vi c  ần phi giao tiế p vi các ICs hay thiế t  bkhác  giao tiế p vi thế gii  bên ngoài. Vói mc tiêu đạt được hiu qucho ph  ần cng tố t nhấ t vi mch đin đơn gin, Phillips đã phát triể n mt chuẩ n giao tiế p nố i tiế p 2 dây được gi  I2C. I2C là tên viế t tt ca cm tInter ‐ Intergrated Circuit  Bus giao tiế p gia các IC vi nhau. Lch sI2C  Thêm vào đây…(Ph  ần này sthêm sau…) I2C mc  được phát triể n  bi Philips, nhưng  đã được rấ t nhi  ều nhà sn xuấ t IC trên thế gii sdng. I2C trthành mt chuẩ n công nghip cho các giao tiế p đi  ều khiể n,  thkra đây mt vài tên tuổ i ngoài Philips như: Texas Intrument (TI), MaximDallas, analog Device, National Semiconductor  Bus I2C được sdng làm  bus giao tiế p ngoi vi cho rấ t nhi  ều loi IC khác nhau như các loi Vi  đi  ều khiể n 8051, PIC, AVR, ARM, chíp nhnhư RAM t  ĩ nh (Static Ram), EEPROM,  bchuyể n đổ i tương ts(ADC), stương t(DAC), IC điể u khiể n LCD, LED…  Hình 1.1. BUS I2C  các thiế  t  bngoi vi 

giao tiep I2C.pdf

Embed Size (px)

Citation preview

  • http://codientu.org Tc gi: Nguyn Ch Linh Tmtt:GiithiuchungvI2C cimchungvI2C:giaothc,ach Ccchhotng:masterslave,multimasterModuleI2CtrongViiukhinPIC Cutrcphncng Chhotng:Master,Slave,Multimaster

    1. GiithiuchungvI2C

    Ngynaytrongcchthnginthini,rtnhiuICshaythitbngoivicnphigiaotipviccICshaythitbkhcgiaotipvithgiibnngoi.Vimctiutchiuquchophncngttnhtvimchinngin,Phillipsphttrinmtchungiaotipnitip2dycgilI2C.I2CltnvitttcacmtInterIntergratedCircuitBusgiaotipgiaccICvinhau.

    LchsI2CThmvoy(Phnnysthmsau)

    I2CmcdcphttrinbiPhilips,nhngncrtnhiunhsnxutICtrnthgiisdng.I2Ctrthnhmtchuncngnghipchoccgiaotipiukhin,cthkraymtvitntuingoiPhilipsnh:TexasIntrument(TI),MaximDallas,analogDevice,NationalSemiconductorBusI2CcsdnglmbusgiaotipngoivichortnhiuloiICkhcnhaunhccloiViiukhin8051,PIC,AVR,ARM,chpnhnhRAMtnh(StaticRam),EEPROM,bchuynitngts(ADC),stngt(DAC),ICiukhinLCD,LED

    Hnh1.1.BUSI2Cvccthitbngoivi

  • http://codientu.org Tc gi: Nguyn Ch Linh

    1.1. cimgiaotipI2C

    MtgiaotipI2Cgmc2dy:SerialData(SDA)vSerialClock(SCL).SDAlngtruyndliu2hng,cnSCLlngtruynxungnghvchtheomthng.Nhhnhvtrn,khimtthitbngoiviktnivongI2CthchnSDAcansnividySDAcabus,chnSCLsnividySCL.

    Hnh1.2.KtnithitbvobusI2Cchchun(Standardmode)

    vchnhanh(Fastmode)

    MidySDAhaySCLucniviinpdngcanguncpthngquamtintrkoln(pullupresistor).ScnthitcaccintrkonylvchngiaotipI2Ccaccthitbngoivithngldngccmngh(opendrainoropencollector).Gitrcaccintrnykhcnhautyvotngthitbvchungiaotip,thngdaongtrongkhong1Kn4.7K.

    Trlivihnh1.1,tathycrtnhiuthitb(ICs)cngcktnivomtbusI2C,tuynhinskhngxyrachuynnhmlngiaccthitb,bimithitbscnhnrabimtachduynhtvimtquanhch/ttntitrongsutthigianktni.Mithitbcthhotngnhlthitbnhndliuhaycthvatruynvanhn.Hotngtruynhaynhncntythucvovicthitblch(master)hayt(slave).

    MtthitbhaymtICkhiktnivibusI2C,ngoimtach(duynht)phnbit,ncnccuhnhlthitbch(master)hayt(slave).Tisaolicsphnbitny?lvtrnmtbusI2Cthquyniukhinthucvthitbch(master).Thitbchnmvaitrtoxungnghchotonhthng,khigiahaithitbch/tgiaotipththitbchcnhimvtoxungnghvqunlachcathitbttrongsutqutrnhgiaotip.Thitbchgivaitrchng,cnthitbtgivaitrbngtrongvicgiaotip.

  • http://codientu.org Tc gi: Nguyn Ch Linh

    Hnh1.3.Truynnhndliugiach/t

    Nhnhnhtrntathyxungnghchcmthngtchnt,cnlungdliucthitheohaihng,tchnthayngclitnch.

    VdliutruyntrnbusI2C,mtbusI2Cchuntruyn8bitdliuchngtrnngtruynvitcl100Kbits/sChchun(Standardmode).Tctruyncthlnti400Kbits/sChnhanh(Fastmode)vcaonhtl3,4Mbits/sChcaotc(Highspeedmode).

    MtbusI2Ccthhotngnhiuchkhcnhau:

    - Mtchmtt(onemasteroneslave)

    - Mtchnhiut(onemastermultislave)

    - Nhiuchnhiut(Multimastermultislave)

    Dchno,mtgiaotipI2Cudavoquanhch/t.GithitmtthitbAmungidliunthitbB,qutrnhcthchinnhsau:

    ThitbA(Ch)xcnhngachcathitbB(t),cngvivicxcnhach,thitbAsquytnhvicchayghivothitbt

    ThitbAgidliutithitbB

    ThitbAktthcqutrnhtruyndliu

    KhiAmunnhndliutB,qutrnhdinranhtrn,chkhclAsnhndliutB.Tronggiaotipny,AlchcnBvnlt.Chititvicthitlpmtgiaotipgiahaithitbscmtchitittrongccmcdiy.

    1.2. STARTandSTOPconditions

    STARTvSTOPlnhngiukinbtbucphickhimtthitbchmunthitlpgiaotipvimtthitbnotrongmngI2C.STARTliukinkhiu,bohiubtucagiaotip,cnSTOPbohiuktthcmtgiaotip.HnhdiymtiukinSTARTvSTOP.

    Banukhichathchinqutrnhgiaotip,chaingSDAvSCLumccao(SDA=SCL=HIGH).LcnybusI2Cccoildi(busfree),snsngchomtgiaotip.HaiiukinSTARTvSTOPlkhngththiutrongvicgiaotipgiaccthitbI2Cvinhau

  • http://codientu.org Tc gi: Nguyn Ch Linh

    Hnh1.4.iukinSTARTvSTOPcabusI2C

    iukinSTART:mtschuynitrngthitcaoxungthptrnngSDAtrongkhingSCLangmccao(cao=1;thp=0)bohiumtiukinSTART

    iukinSTOP:MtschuynitrngthitmcthplncaotrnngSDAtrongkhingSCLangmccao.

    ChaiiukinSTARTvSTOPuctorabithitbch.SautnhiuSTART,busI2Ccoinhangtrongtrangthilmvic(busy).BusI2Csri,snsngchomtgiaotipmisautnhiuSTOPtphathitbch.

    SaukhicmtiukinSTART,trongquatrnhgiaotip,khicmttnhiuSTARTclplithayvmttnhiuSTOPthbusI2Cvntiptctrongtrngthibn.TnhiuSTARTvlpliSTARTucchcnnggingnhaulkhitomtgiaotip.

    1.3. nhdngdliutruyn

    DliuctruyntrnbusI2Ctheotngbit,bitdliuctruynitimisndngcaxungnghtrndySCL,qutrnhthayibitdliuxyrakhiSCLangmcthp.

    Hnh1.5.Qutrnhtruyn1bitdliu

    Mibytedliuctruyncdil8bits.Slngbytecthtruyntrongmtlnlkhnghnch.MibytectruynitheosaulmtbitACKbohiunhndliu.Bitctrngscaonht(MSB)sctruyniutin,ccbtsctruynilnlt.Sau8xungclocktrndySCL,8bitdliuctruyni.Lcnythitbnhn,saukhinhn8btdliuskoSDAxungmcthptomtxungACKngvixungclockth9trndySDAbohiunhn8bit.ThitbtruynkhinhncbitACKstiptcthchinqutrnhtruynhocktthc.

  • http://lab3i.com Tc gi: Nguyn Ch Linh

    Hnh1.6.DliutruyntrnbusI2C

    Hnh1.7.BitACKtrnbusI2C

    Truyn Nhn

    SDA=data_bit Buffer=databitKimtraxemtruyn8bitcha

    Clock=8? NO

    YES ACK? NO

    BufferFull? NO

    YES

    SendACK

    YES

    Next_byteorSTOP

    STOP

    ReadBuffer

    Hnh1.8.Luthuttonqutrnhtruyngnhndliu

  • hhttp://lab3i.co Tc gi: Nguyn Ch Linh

    MtbytetruynickmtheobitACKliukinbtbuc,nhmmbochoqutrnhtruynnhncdinrachnhxc.Khikhngnhncngachhaykhimunktthcqutrnhgiaotip,thitbnhnsgimtxungNotACK(SDAmccao)bochothitbchbit,thitbchstoxungSTOPktthchaylplimtxungSTARTbtuqutrnhmi.

    1.4. nhdngachthitb

    Mithitbngoivithamgiavobusi2cucmtachduynht,nhmphnbitgiaccthitbvinhau.diachl7bit,iucnghaltrnmtbusI2Ctacthphnbittia128thitb.KhithitbchmungiaotipvingoivinotrnbusI2C,nsgi7bitachcathitbrabusngaysauxungSTART.Byteutincgisbaogm7bitachvmtbtth8iukhinhngtruyn.

    Hnh1.8.Cutrcbytedliuutin

    Mimtthitbngoiviscmtachringdonhsnxutranquynh.achcthlcnhhaythayi.Ringbitiukhinhngsquynhchiutruyndliu.Nubitnybng0cnghalbytedliutiptheosausctruyntchnt,cnngclinubng1thccbytetheosaubyteutinsldliutcontginconch.Victhitlpgitrchobitnydoconchthihnh,contstytheogitrmcsphnhitngngnconch.

    1.5. TruyndliutrnbusI2C,chMasterSlave

    Victruyndliudinragiaconchvcont.Dliutruyncththeo2hng,tchnthayngcli.Hngtruyncquynhbibitth8 trongbyteutinctruyni.

    Hnh1.9.Qutrnhtruyndliu

  • hhttp://lab3i.co Tc gi: Nguyn Ch Linh

    Truyndliutchnt(ghidliu):Thitbchkhimunghidliuncont,qutrnhthchinl:

    ThitbchtoxungSTART

    Thitbchgiachcathitbtmncngiaotipcngvibit

    =0rabusvixungACKphnhitcont

    KhinhncxungACKbonhndinngthitbt,conchbtugidliunconttheotngbytemt.TheosaumibytenyulmtxungACK.Slngbytetruynlkhnghnch.

    Ktthcqutrnhtruyn,conchsaukhitruynbytecuistoxungSTOPbohiuktthc.

    Hnh1.10.Ghidliutchnt

    Truyndliuttnch(cdliu):Thitbchmuncdliutthitbt,qutrnhthchinnhsau:

    Khibusri,thitbchtoxungSTART,bohiubtugiaotip

    Thitbchgiachcathitbtcngiaotipcngvibit =1vixungACKtphathitbt

    SauxungACKdutin,thitbtsgitngbyterabus,thitbchsnhndliuvtrvxungACK.Slngbytekhnghnch

    Khimunktthcqutrnhgiaotip,thitbchgixungNotACKvtoxungSTOPktthc.

    Hnh1.11.cdliutthitbt

    Qutrnhkthpghivcdliu:giahaixungSTARTvSTOP,thitbchcththchinvicchayghinhiuln,vimthaynhiuthitb.thchinvic,saumtqutrnhghihayc,thitbchlplimtxungSTARTvligiliachcathitbtvbtumtqutrnhmi.

  • hhttp://lab3i.co Tc gi: Nguyn Ch Linh

    Hnh1.12.Qutrnhphihpc/ghidliu

    ChgiaotipMasterSlavelchcbntrongmtbusI2C,tonbbuscqunlbimtmasterduynht.Trongchnyskhngxyratnhtrngxungtbushaymtngbxungclockvchcmtmasterduynhtcthtoxungclock.

    1.6. ChMultiMaster

    TrnbusI2Ccthcnhiuhnmtmasteriukhinbus.KhibusI2CshotngchMultiMaster.

    Vnnyscbnthosau.

    2. ModuleI2CtrongViiukhinPIC

    Vinhngtinchemli,khigiaotipI2CctchhpcngtrongkhnhiuloiViiukhinkhcnhau.TrongccloiViiukhinPICdngMidrangephbintiVitNam,cht16F88michtrphncngI2C,cnccloi16F84,16F628thkhngc.VinhngloiViiukhinkhngchtrphncnggiaotipI2C,sdngtacthdngphnmmlptrnh,khitasvitmtchngtrinhdiukhin2chnbtkcaViiukhinnthchingiaotipI2C(cchmSTART,STOP,WRITE,READ).TrongbivitnytacpnvicsdnggiaotipI2CcaccloiPICctchhpkhiI2Csntrongn,mcthlViiukhinPIC16F877A.

    2.1. cimphncng

    HnhdiychracutrcphncngcakhiiukhinGiaotipnitipngb(MSSP)hotngchI2C.KhiI2Ccdychcnng,hotngc2chlMASTER(ch)vSLAVE(t),cngtxyrakhiciukinSTARThaySTOPxyra,nhmnhrngI2Ccdihaykhnng(chcnngMultimaster).Chachcthl7bithay10bit.

    KhiI2Cc6thanhghiiukhinhotng,l:

    SSPCON:Thanhghiiukhin

    SSPCON2:Thanhghiiukhinth2

    SSPSTAT:Thanhghitrngthi

  • hhttp://lab3i.co Tc gi: Nguyn Ch Linh

    SSPBUF:Thanhghibmtruynnhn

    SSPSR:Thanhghidch

    SSPADD:Thanhghiach

    CcthanhghiSSPCON,SSPBUF,SSPADDvSSPSON2cthtruycpc/ghic.ThanhghiSSPSRkhngthtruycptrctip,lthanhghidichdliurahayvo.CcthanhghiSSPCON,SSPCON2vSSPSTATcnhachbit,mibitcchcnngring.nghacatngthanhghivcamibittrongtngthanhghiccpktrongtiliuDatasheetcaPICvtrongtiliuTUT04.02.PVN.MAFDcabnMnh,tikhngcpthmy.TrongtiliunaygtistptrungvovicsdngkhiI2CcaPICccchMastervSlavetrongphnmmbindchCchoPIClCCS

    Hnh2.1.CutrckhiI2CtrongPIC

    2.2. CchthcsdngModuleI2CtrongCCS

    TrongviclptrnhchoPICsdnggiaotipI2Ccantrongccngdng,ngilptrnhcththchinmtcchddngvitrnhdchCCS.Niddngylchvmtcphplnh,takhngcnsdngnhiuculnhkhnhnhtronglptrnhASM.

  • hhttp://lab3i.co Tc gi: Nguyn Ch Linh

    Vickhito,chnchhotngvthchingiaotipcaI2CccchmdngsncaCCSthchin.CchmlitkdiylcaphinbnCCS3.242,l:

    i2c_isr_state():ThngbotrngthigiaotipI2C

    i2c_start():ToiukinSTART

    i2c_stop():ToiukinSTOP

    i2c_read():cgitrtthitbI2C,trvgitr8bit

    i2c_write():Ghigitr8bitnthitbI2C

    sdngkhiI2Ctasdngkhaibosau:

    #usei2c(ch_,tc,sda=PIN_C4,scl=PIN_C3)

    Ch:MasterhaySlave

    Tc:Slow(100KHz)hayFast(400KHz)

    SDAvSCLlccchni2ctngngcaPIC

    Saukhaibotrn,tacthsdngcchmnutrnthchin,xlccgiaotipi2cviccthitbngoivikhc.

    Cntipna

    3. Ktlun