nilidownload datasheet ya PT2313 Nkawa naisoma jins ya kuiunda ila nkapotea jinsi ya kuiweka na MCU. Maana upande wa Mcu bado sijawa vizur
Mkuu, hapo inabidi ujifunze jinsi I2C inavyofanya kazi.
I2C ,
IIC au
I[SUP]2[/SUP]C ni kifupi cha
Inter Integrated Circuits, ambayo ni communication protocol inayowezesha IC zaidi ya moja kwenye kifaa cha electronic kuwasiliana kwa kutumia bus ya waya mbili tu. Yaani
Serial Clock (
SCL) na
Serial Data (
SDA).
Mojawapo ya hizo IC lazima iwe
Master na nyingine
Slave.
Kunaweza kuwepo master moja na slave moja au nyingi, wakati mwingine master nyingi ambazo ni moja tu inaruhusiwa kuwa master kwa wakati mmoja na zingine huwa slave.
Master ni lazima iwe MCU/microprocessor na slave iwe IC nyingine tofauti na MCU eg 24C04 etc.
SDA husafirisha data kwenda na kutoka kwenye master au slave.
SCL husafirisha clock pulses kutoka kwenye master kwenda slave kwa ajili ya kuoanisha(synchronize) usafirishaji wa data kwenye I2C bus.
Master ina sifa zifuatazo:
· Inasimamia mawasiliano yote ya I2C
· Inazalisha clock pulses ambazo hutumika kuoanisha(synchronize) usafirishaji wa data kwenye I2C bus.
· Inaanzisha mawasiliano ya I2C kwenda kwenye slave mara tu kifaa kinavyowashwa.
Slave ina sifa zifuatazo:
· Haina uwezo wa kusimamia mawasiliano ya I2C.
· Inapokea clock pulses kutoka kutoka kwa master(haizalishi).
· Inapokea mawasiliano kutoka kwa master mara tu kifaa kinavyowashwa.
I2C INAVYOFANYA KAZI
Kila data inayosafirishwa kwenye SDA inakuwa na bits 8 (1 Byte) na nyingine ya ti1a kwa ajili ya mrejesho(acknowledgement).
MSB LSB
[TABLE="class: MsoTableGrid"]
[TR]
[TD] Bit7[/TD]
[TD] Bit6[/TD]
[TD] Bit5[/TD]
[TD] Bit4[/TD]
[TD] Bit3[/TD]
[TD] Bit2[/TD]
[TD="width: 71"] Bit1[/TD]
[TD="width: 71"] Bit0[/TD]
[TD="width: 71"] Ack[/TD]
[/TR]
[/TABLE]
1 2 3 4 5 6 7 8 9
Figure 1
Kawaida Most Significant Bits(MSB) huanza kusafirishwa na kufuatiwa na Least Significant Bits(LSB) kama ilivyoonyeshwa kwa namba hapo juu.
Uwiano kati ya SDA na SCL ni huu:
Figure 2
DATA VALIDITY
Data inakuwa valid tu pale Clock pulse inapokuwa HIGH
Data inakubalika kubadili state yake kutoka High kwenda Low vice-versa pale tu clock pulse inapokuwa LOW.
HIGH namaanisha 1 au ON kwa state au 5V kwa voltage.
LOW namaanisha 0 au OFF kwa state au 0V kwa voltage
[TABLE="align: left"]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD="width: 138"][/TD]
[TD="width: 2"][/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD="align: left"][/TD]
[TD][/TD]
[TD="align: left"][/TD]
[TD][/TD]
[TD="align: left"][/TD]
[/TR]
[TR]
[TD][/TD]
[/TR]
[/TABLE]
[
SCL
[TABLE="align: left"]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD="align: left"][/TD]
[TD][/TD]
[TD="align: left"][/TD]
[TD][/TD]
[TD="align: left"][/TD]
[/TR]
[/TABLE]
Figure 3
START AND STOP CONDITIONS
START condition inatokea tu iwapo :
· SCL pulse iko HIGH
· SDA inabadilika kutoka HIGH kuwa LOW
STOP condition inatokea tu iwapo:
· SCL pulse iko HIGH
· SDA inabadilika kutoka LOW kuwa HIGH
Rejea mchoro hapo chini jinsi START na STOP conditions zinavyotokea.
Figure 4
Kila bit 8(1Byte) za data zinavyotumwa,kutoka kwenye master kwenda kwenye slave, au kutoka kwenye slave kwenda kwa master, lazima mpokeaji master au slave atoe mrejesho kuwa byte moja imepokelewa(ACK) au acknowledgement kwa kirefu.
Hii hutokea kila pulse ya tisa ya SCL ambayo huwa LOW kwa upande wa SDA. Yaani ili mtumaji wa data ajue kama Byte yote imepokelewa,mpokeaji hujibu kwa kushusha data ya 9 ya SDA kuwa LOW au 0 wakati SCL nayo ikiwa kwenye pulse ya 9.
Rejea Figure 2 kwa ufafanuzi, pia Figure 5 hapa chini kwa ufafanuzi zaidi.
Figure 5
NB: Image iliyoko hapo juu ikiwa na maandishi FIGURE 1, isikuchanganye, kwani nimeipa jina Figure 5 nimeinakili sehemu baada ya kuona kazi ngumu kuichora.
Ili mawasiliano yawepo, lazima kila slave IC iwe na address kwa ajili ya utambulisho ili ikiitwa na master, ijitambue na iitike na kupokea au kutuma data kulingana na commands za master.
IC nyingi za I2C zina address ya bit 7 tu, ya 8 huwa inaiambia slave kama inatakiwa kutuma data kwa master au kupokea data toka kwa master. Kwa address ya bit 7, I2C protocol ina uwezo wa kuunganisha slaves 128.
Kama bit ya 8 ni 0, master inaiambia slave kuwa ipokee data. Na kama ni 1, master inaiambia slave kuwa itume data kwa master.
Mfano, address ya PT2313 ni:
1000100.
Kama master inatuma data kwenda kwa slave, byte ya address na data transfer direction inakuwa:
10001000.
Hiyo bit ya 8 ambayo ina msitari kwa chini, (
0), ni ya data transfer direction inayoiambia slave kuwa master inataka ku-write(W)kwenye slave.
Kama bit ya 8 ni 1 ie
10001001, master inaiambia slave kuwa inataka ku-read (R) kwa slave, yaani slave itume data kwa master.
Table iliyopo hapo chini inaonyesha jinsi unavyoweza ku-set volume ya muziki kupitia PT2313. Nimeinakili toka ukurasa wa 7 wa datasheet ya PT2313 ambayo iko kwenye attachment kwenye huu uzi.
Ili PT2313 ifanye kazi, inabidi uandike commands mbili:
· Command ya kupunguza volume kwa kutumia makumi ya dB
· Command ya kupunguza sauti kwa kutumia mamoja ya dB
Ukiandika za makumi ya dB pekee au mamoja ya dB pekee bila kuziweka pamoja, PT2313 haitafanya kazi.
Mfano, kama unataka kupunguza volume kwa kiwango cha 37.5dB:
· Andika bits za makumi ya dB kwenye 37.5dB ambayo ni 30dB, bits zake zikiwa ni
00011(MSB)
· Fuatia bits za mamoja ya 37.5 dB ambayo ni 7.5dB, bit zake zikiwa
110(LSB)
Hizo
00011 na
110 zinakupa
00011110 kwa binary number na 1EH au 0x1E kwa hexadecimal number.
Unaandika hizo number kutegemeana na syntax ya compiler unayotumia kuzituma kwa PT2313, na sauti inapunguzwa kwa 37.5dB.
[TABLE="class: MsoTableGrid"]
[TR]
[TD]
[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD]0[/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD]
[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]0[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD]
[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD]
[/TD]
[/TR]
[/TABLE]
Sequence ya kuwasiliana kwa master (MCU)na slave(PT2313) kutumia I2C ni huu:
PT2313 Address Data
MSB LSB
[TABLE="class: MsoTableGrid"]
[TR]
[TD] START[/TD]
[TD] 1[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD]0[/TD]
[TD] 1[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 38"] ACK[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 22"] 1[/TD]
[TD="width: 22"] 1[/TD]
[TD="width: 22"] 1[/TD]
[TD="width: 22"] 1[/TD]
[TD="width: 22"]0[/TD]
[TD="width: 41"] ACK[/TD]
[TD="width: 48"] STOP[/TD]
[/TR]
[/TABLE]
Kazi kwako,ila angalia usije ukanyonyoka nywele kichwani ukawa kama refa aliyechezesha kombe la dunia mwaka fulani ambaye hana nywele kabisa kichwani.
DOWNLOAD PDF ATTACHMENT KWA MICHORO NA MAELEZO KAMILI