Upload
nguyen-xuan-huynh
View
29
Download
0
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