I2C બસ — સોંપણી, ઉપકરણ, ડેટા ટ્રાન્સફર, એડ્રેસિંગ
ઇલેક્ટ્રોનિક સર્કિટ બનાવતી વખતે, ઘણા વિકાસકર્તાઓને તેના વ્યક્તિગત બ્લોક્સને મેચ કરવા, નમૂના લેવા અને સંબોધવા માટે મોટી સંખ્યામાં મધ્યવર્તી ચિપ્સનો ઉપયોગ કરવાની જરૂરિયાતનો સામનો કરવો પડે છે. સહાયક ચિપ્સની સંખ્યા ઘટાડવા માટે, ફિલિપ્સે 1980ના દાયકામાં બે-વાયર બાયડાયરેક્શનલ I2C સીરીયલ નેટવર્ક ઈન્ટરફેસનો પ્રસ્તાવ મૂક્યો હતો, જે ખાસ કરીને એક ઉપકરણમાં બહુવિધ ચિપ્સનું સંચાલન કરવા માટે રચાયેલ છે.
આજે, એકલા ફિલિપ્સ વિવિધ હેતુઓ સાથે ઇલેક્ટ્રોનિક સાધનો માટે સો કરતાં વધુ I2C-સુસંગત ઉપકરણોનું ઉત્પાદન કરે છે: મેમરી, વિડિયો પ્રોસેસર સિસ્ટમ્સ, એનાલોગ-ટુ-ડિજિટલ અને ડિજિટલ-ટુ-એનાલોગ કન્વર્ટર, ડિસ્પ્લે ડ્રાઇવર્સ વગેરે.
I2C બસ એ 100 થી 400 kbps ના દરે સામાન્ય "ફાસ્ટ" મોડમાં સીરીયલ 8-બીટ ડેટા ટ્રાન્સમિટ કરવા સક્ષમ સીરીયલ ડેટા એક્સચેન્જ પ્રોટોકોલનું એક ફેરફાર છે. ડેટા એક્સચેન્જની પ્રક્રિયા અહીં માત્ર બે વાયર પર લાગુ કરવામાં આવી છે (સામાન્ય વાયરની ગણતરી નહીં): ડેટા માટે SDA લાઇન અને સિંક્રોનાઇઝેશન માટે SCL લાઇન.
બસ એ હકીકતને કારણે દ્વિ-દિશાવાળી બને છે કે બસ સાથે જોડાયેલા ઉપકરણોના આઉટપુટના કાસ્કેડમાં ખુલ્લા કલેક્ટર્સ અથવા ચેનલો હોય છે, આમ AND વાયરિંગની નકલ કરે છે. પરિણામે, બસ ચિપ્સ વચ્ચેના જોડાણોની સંખ્યાને ઘટાડે છે, જેનાથી બોર્ડ પર ઓછા જરૂરી પિન અને નિશાનો રહે છે. પરિણામે, બોર્ડ પોતે ઉત્પાદનમાં સરળ, વધુ કોમ્પેક્ટ અને તકનીકી રીતે વધુ અદ્યતન હોવાનું બહાર આવ્યું છે.
આ પ્રોટોકોલ તમને સરનામાં ડીકોડર્સ અને અન્ય બાહ્ય વાટાઘાટોના તર્કને અક્ષમ કરવાની મંજૂરી આપે છે. I2C બસ પર એકસાથે કામ કરી શકે તેવી ચિપ્સની સંખ્યા તેની ક્ષમતા દ્વારા મર્યાદિત છે - મહત્તમ 400 pF.
I2C-સુસંગત ICs પાસે મજબૂત દખલગીરીની હાજરીમાં પણ ડેટાની અખંડિતતાને સુનિશ્ચિત કરવા માટે હાર્ડવેર નોઈઝ સપ્રેશન એલ્ગોરિધમ હોય છે. આવા ઉપકરણોમાં એક ઇન્ટરફેસ હોય છે જે તેમના સપ્લાય વોલ્ટેજ અલગ હોવા છતાં પણ માઇક્રોસિર્કિટ્સને એકબીજા સાથે વાતચીત કરવાની મંજૂરી આપે છે. નીચેની આકૃતિમાં, તમે તમારી જાતને એક સામાન્ય બસ દ્વારા ઘણા માઇક્રોસિર્કિટ્સને કનેક્ટ કરવાના સિદ્ધાંતથી પરિચિત કરી શકો છો.
બસ સાથે જોડાયેલા દરેક ઉપકરણોનું પોતાનું વિશિષ્ટ સરનામું હોય છે, તે તેના દ્વારા નક્કી કરવામાં આવે છે અને, ઉપકરણના હેતુ અનુસાર, તે રીસીવર તરીકે અથવા ટ્રાન્સમીટર તરીકે કામ કરી શકે છે. ડેટા ટ્રાન્સમિટ કરતી વખતે, આ ઉપકરણો માસ્ટર (માસ્ટર) અથવા ગુલામ (ગુલામ) હોઈ શકે છે. માસ્ટર એ ઉપકરણ છે જે ડેટા ટ્રાન્સફર શરૂ કરે છે અને SCL લાઇન પર ઘડિયાળના સંકેતો બનાવે છે. ગુલામ, માસ્ટરના સંબંધમાં, ગંતવ્ય ઉપકરણ છે.
I2C બસ પર ઓપરેશનની કોઈપણ ક્ષણે, માત્ર એક ઉપકરણ માસ્ટર તરીકે કાર્ય કરી શકે છે; તે SCL લાઇન પર સિગ્નલ જનરેટ કરે છે.માસ્ટર ક્યાં તો માસ્ટર રીસીવર અથવા માસ્ટર ટ્રાન્સમીટર હોઈ શકે છે.
સૈદ્ધાંતિક રીતે, બસ વિવિધ માસ્ટર્સને મંજૂરી આપે છે, પરંતુ નિયંત્રણ સંકેતો બનાવવા અને બસની સ્થિતિનું નિરીક્ષણ કરવાની લાક્ષણિકતાઓ પર નિયંત્રણો લાદે છે; આનો અર્થ એ છે કે એક જ સમયે ઘણા માસ્ટર્સ ટ્રાન્સમિટ કરવાનું શરૂ કરી શકે છે, પરંતુ આ પ્રકારની તકરારને આર્બિટ્રેશનને કારણે દૂર કરવામાં આવે છે, એટલે કે, જ્યારે માસ્ટરને ખબર પડે છે કે બસ અન્ય માસ્ટર દ્વારા કબજે કરવામાં આવી છે ત્યારે માસ્ટર જે રીતે વર્તે છે.
ઉપકરણોની જોડીનું સુમેળ એ હકીકત દ્વારા સુનિશ્ચિત થાય છે કે બધા ઉપકરણો બસ સાથે જોડાયેલા છે, "AND" વાયરિંગ બનાવે છે. શરૂઆતમાં, SDA અને SCL સિગ્નલ વધારે છે.
સ્ટાર્ટ અને સ્ટોપ
એક્સચેન્જની શરૂઆત માસ્ટર દ્વારા «સ્ટાર્ટ» સ્ટેટ જનરેટ કરવામાં આવે છે: SDA લાઇન પર, સિગ્નલ ઉચ્ચથી નીચી સ્થિતિમાં જાય છે, જ્યારે SCL લાઇન સ્થિર ઉચ્ચ સ્તર ધરાવે છે. બસ સાથે જોડાયેલા તમામ ઉપકરણો આ પરિસ્થિતિને એક્સચેન્જ શરૂ કરવાના આદેશ તરીકે માને છે.
બસ પર ડેટા ટ્રાન્સમિટ કરતી વખતે દરેક માસ્ટર SCL લાઇન પર વ્યક્તિગત ઘડિયાળ સિગ્નલ જનરેટ કરે છે.
એક્સચેન્જ માસ્ટર દ્વારા STOP રાજ્યની રચના સાથે સમાપ્ત થાય છે: SDA લાઇન પર સિગ્નલ નીચાથી ઉચ્ચમાં બદલાય છે, જ્યારે SCL લાઇનમાં સ્થિર ઉચ્ચ સ્તર હોય છે.
ડ્રાઇવર હંમેશા START અને STOP સિગ્નલોના સ્ત્રોત તરીકે કાર્ય કરે છે. જલદી «START» સિગ્નલ ફિક્સ થાય છે, તેનો અર્થ એ થાય છે કે લાઇન વ્યસ્ત છે. જ્યારે STOP સિગ્નલ મળી આવે ત્યારે લાઇન મફત છે.
START સ્થિતિ જાહેર કર્યા પછી તરત જ, માસ્ટર SCL લાઇનને નીચી સ્વિચ કરે છે અને SDA લાઇનને પ્રથમ મેસેજ બાઇટનો સૌથી નોંધપાત્ર ભાગ મોકલે છે. સંદેશમાં બાઈટની સંખ્યા મર્યાદિત નથી.SDA લાઇન પરના ફેરફારો ત્યારે જ સક્ષમ થાય છે જ્યારે SCL લાઇન પર સિગ્નલનું સ્તર ઓછું હોય. ડેટા માન્ય છે અને જ્યારે સિંક પલ્સ વધારે હોય ત્યારે જ તેને બદલવો જોઈએ નહીં.
સ્લેવ રીસીવર દ્વારા માસ્ટર ટ્રાન્સમીટરમાંથી બાઈટ પ્રાપ્ત થઈ હોવાની સ્વીકૃતિ આઠમી ડેટા બીટ પ્રાપ્ત થયા પછી એસડીએ લાઇન પર વિશિષ્ટ એક્નોલેજ બીટ સેટ કરીને કરવામાં આવે છે.
પુષ્ટિ
તેથી, ટ્રાન્સમીટરથી રીસીવરને ડેટાના 8 બિટ્સ મોકલવાથી SCL લાઇન પર વધારાની પલ્સ થાય છે જ્યારે પ્રાપ્તકર્તા ઉપકરણ SDA લાઇન પર નીચું જાય છે, જે દર્શાવે છે કે તેને સંપૂર્ણ બાઇટ પ્રાપ્ત થઈ છે.
પુષ્ટિકરણ એ ડેટા ટ્રાન્સફર પ્રક્રિયાનો એક અભિન્ન ભાગ છે. માસ્ટર સિંક પલ્સ જનરેટ કરે છે. સ્વીકૃતિ ઘડિયાળ સક્રિય હોય ત્યારે ટ્રાન્સમીટર એસડીએને નીચી સ્થિતિ મોકલે છે. જ્યારે સિંક પલ્સ વધારે હોય, ત્યારે રીસીવરે SDA નીચો રાખવો જોઈએ.
જો ગંતવ્ય સ્લેવ તેનું સરનામું સ્વીકારતો નથી, ઉદાહરણ તરીકે કારણ કે તે હાલમાં વ્યસ્ત છે, તો ડેટા લાઇન ઊંચી હોવી આવશ્યક છે. માસ્ટર પછી રવાનગીને અટકાવવા માટે STOP સિગ્નલ આપી શકે છે.
જો રીસેપ્શન માસ્ટર રીસીવર દ્વારા હાથ ધરવામાં આવે છે, તો તે ટ્રાન્સમિશન પૂર્ણ થયા પછી સ્લેવ ટ્રાન્સમીટરને જાણ કરવા માટે બંધાયેલ છે - છેલ્લા બાઈટની પુષ્ટિ કરીને નહીં. સ્લેવ ટ્રાન્સમીટર ડેટા લાઇનને રિલીઝ કરે છે જેથી માસ્ટર STOP સિગ્નલ અથવા પુનરાવર્તિત START સિગ્નલ ઇશ્યૂ કરી શકે.
ઉપકરણોનું સિંક્રનાઇઝેશન એ હકીકત દ્વારા સુનિશ્ચિત કરવામાં આવે છે કે SCL લાઇન સાથેના જોડાણો "AND" સિદ્ધાંત અનુસાર કરવામાં આવે છે.
માસ્ટર પાસે એસસીએલ લાઇનના નીચાથી ઉચ્ચ સુધીના સંક્રમણને નિયંત્રિત કરવાનો એકમાત્ર અધિકાર નથી.જો સ્લેવને પ્રાપ્ત થયેલ બીટ પર પ્રક્રિયા કરવા માટે વધુ સમયની જરૂર હોય, તો તે સ્વતંત્ર રીતે SCL ને નીચા રાખી શકે છે જ્યાં સુધી તે આગામી બીટ ડેટા પ્રાપ્ત કરવા માટે તૈયાર ન થાય. આવી પરિસ્થિતિમાં SCL લાઇન સૌથી લાંબી નીચા-સ્તરના સમન્વયન પલ્સની અવધિ માટે ઓછી હશે.
સૌથી નીચા ટકાઉ નીચા સાથેના ઉપકરણો લાંબા સમય સુધી સમાપ્ત ન થાય ત્યાં સુધી નિષ્ક્રિય રહેશે. જ્યારે બધા ઉપકરણો નીચા સમન્વયન સમયગાળાને પૂર્ણ કરે છે, ત્યારે SCL ઉચ્ચ જશે.
બધા ઉપકરણો ઉચ્ચ ઘડિયાળ શરૂ કરશે અને તેની અવધિ પૂર્ણ કરનાર પ્રથમ ઉપકરણ SCL લાઇન નીચી સેટ કરનાર પ્રથમ હશે. પરિણામે, SCL ની નીચી સ્થિતિનો સમયગાળો એક ઉપકરણના સિંક્રનાઇઝેશન પલ્સની સૌથી લાંબી નીચી સ્થિતિ દ્વારા નિર્ધારિત કરવામાં આવશે, અને ઉચ્ચ સ્થિતિનો સમયગાળો એક ઉપકરણના સિંક્રનાઇઝેશનના ટૂંકા સમયગાળા દ્વારા નિર્ધારિત કરવામાં આવશે. ઉપકરણો
સિંક્રનાઇઝેશન સિગ્નલોનો ઉપયોગ રીસીવરો દ્વારા બીટ અને બાઇટ સ્તરે ડેટા ટ્રાન્સમિશનને નિયંત્રિત કરવાના સાધન તરીકે કરી શકાય છે.
જો ઉપકરણ ઊંચા દરે બાઈટ પ્રાપ્ત કરવામાં સક્ષમ હોય, પરંતુ તે પ્રાપ્ત બાઈટને સંગ્રહિત કરવામાં અથવા આગામી બાઈટ મેળવવા માટે તૈયાર થવામાં ચોક્કસ સમય લે છે, તો તે બાઈટ પ્રાપ્ત કર્યા પછી અને સ્વીકાર્યા પછી SCL ને નીચું રાખવાનું ચાલુ રાખી શકે છે, દબાણપૂર્વક સ્ટેન્ડબાય સ્થિતિમાં ટ્રાન્સમીટર.
બિલ્ટ-ઇન હાર્ડવેર સર્કિટ વિનાનું માઇક્રોકન્ટ્રોલર, ઉદાહરણ તરીકે, બીટ લેવલ પર, તેમની નીચી સ્થિતિની અવધિ વધારીને ઘડિયાળની ઝડપને ધીમી કરી શકે છે. પરિણામે, મુખ્ય ઉપકરણનો બાઉડ રેટ તેની ઝડપ દ્વારા નક્કી કરવામાં આવશે. ધીમા ઉપકરણ.
એડ્રેસીંગ
I2C બસ સાથે જોડાયેલ દરેક ઉપકરણમાં એક અનન્ય પ્રોગ્રામ સરનામું હોય છે જેના પર માસ્ટર ચોક્કસ આદેશ મોકલીને તેને સંબોધિત કરે છે. સરનામું સિલેક્ટર દ્વારા સમાન પ્રકારના માઇક્રોસિર્કિટની લાક્ષણિકતા હોય છે, જે સિલેક્ટરના ડિજિટલ ઇનપુટ્સના સ્વરૂપમાં અથવા એનાલોગ સ્વરૂપમાં લાગુ કરવામાં આવે છે. સરનામાંઓને બસ સાથે જોડાયેલા ઉપકરણોની સરનામાંની જગ્યામાં વિભાજિત કરવામાં આવે છે.
સામાન્ય મોડ સાત-બીટ એડ્રેસીંગ ધારે છે. સંબોધન નીચે મુજબ કાર્ય કરે છે: «START» આદેશ પછી, માસ્ટર પ્રથમ બાઇટ મોકલે છે, જે નિર્ધારિત કરે છે કે માસ્ટર સાથે વાતચીત કરવા માટે કયા સ્લેવ ઉપકરણની જરૂર છે. ત્યાં એક સામાન્ય કૉલ સરનામું પણ છે જે બસ પરના તમામ ઉપકરણોને વ્યાખ્યાયિત કરે છે, બધા ઉપકરણો (સૈદ્ધાંતિક રીતે) તેને સ્વીકૃતિ સાથે પ્રતિસાદ આપે છે, પરંતુ વ્યવહારમાં આ દુર્લભ છે.
તેથી પ્રથમ બાઈટના પહેલા સાત બિટ્સ સ્લેવ એડ્રેસ છે. ઓછામાં ઓછું નોંધપાત્ર બીટ, આઠમો, ડેટા મોકલવાની દિશા સૂચવે છે. જો ત્યાં «0» છે, તો પછી માસ્ટર પાસેથી આ ગુલામને માહિતી લખવામાં આવશે. જો «1», માહિતી આ સ્લેવ પાસેથી માસ્ટર દ્વારા વાંચવામાં આવશે.
માસ્ટર સરનામું બાઈટ મોકલવાનું સમાપ્ત કરે પછી, દરેક સ્લેવ તેના સરનામાની તેની સાથે તુલના કરે છે. સમાન સરનામું ધરાવનાર કોઈપણ ગુલામ છે અને સરનામા બાઈટના ઓછામાં ઓછા નોંધપાત્ર બીટના મૂલ્યના આધારે તેને સ્લેવ ટ્રાન્સમીટર અથવા સ્લેવ રીસીવર તરીકે વ્યાખ્યાયિત કરવામાં આવે છે.
ગુલામ સરનામામાં નિશ્ચિત અને પ્રોગ્રામેબલ ભાગો શામેલ હોઈ શકે છે. ઘણી વાર એક જ સિસ્ટમમાં મોટી સંખ્યામાં સમાન પ્રકારનાં ઉપકરણો કામ કરે છે, પછી સરનામાંનો પ્રોગ્રામેબલ ભાગ બસમાં મહત્તમ સમાન પ્રકારનાં ઉપકરણોનો ઉપયોગ કરવાની મંજૂરી આપે છે. એડ્રેસ બાઈટમાં કેટલા બિટ્સ પ્રોગ્રામેબલ છે તે ચિપ પર ફ્રી પિનની સંખ્યા પર આધાર રાખે છે.
કેટલીકવાર પ્રોગ્રામેબલ એડ્રેસ રેન્જના એનાલોગ સેટિંગ સાથેનો પિન પૂરતો હોય છે, ઉદાહરણ તરીકે SAA1064 - એક LED સૂચક ડ્રાઇવર કે જે બરાબર આ પ્રકારનું અમલીકરણ ધરાવે છે. ચોક્કસ પિનની સંભવિતતા ચિપની સરનામાંની જગ્યાના ઓફસેટને નિર્ધારિત કરે છે જેથી કરીને સમાન પ્રકારની ચિપ્સ એક જ બસ પર કામ કરતી વખતે વિરોધાભાસી ન બને. I2C બસને ટેકો આપતી તમામ ચિપ્સમાં સરનામાંનો સમૂહ હોય છે જેનો નિર્માતા દસ્તાવેજીકરણમાં ઉલ્લેખ કરે છે.
સંયોજન «11110XX» 10-બીટ એડ્રેસિંગ માટે આરક્ષિત છે. જો આપણે «START» આદેશથી «STOP» આદેશમાં ડેટાના વિનિમયની કલ્પના કરીએ, તો તે આના જેવું દેખાશે:
અહીં સરળ અને સંયુક્ત ડેટા એક્સચેન્જ ફોર્મેટની મંજૂરી છે. સંયુક્ત ફોર્મેટનો અર્થ છે કે "સ્ટાર્ટ" અને "સ્ટોપ" વચ્ચે માસ્ટર અને સ્લેવ રીસીવર અને ટ્રાન્સમીટર તરીકે કામ કરી શકે છે, આ સીરીયલ મેમરી મેનેજમેન્ટમાં ઉદાહરણ તરીકે ઉપયોગી છે.
ડેટાના પ્રથમ બાઈટને મેમરી એડ્રેસ ટ્રાન્સફર કરવા દો. પછી, «START» આદેશનું પુનરાવર્તન કરો અને સ્લેવ સરનામું વાંચો, મેમરી ડેટા કામ કરશે. અગાઉ એક્સેસ કરેલ સરનામાંને આપમેળે વધારવા અથવા ઘટાડવાના નિર્ણયો ઉપકરણ વિકાસકર્તા દ્વારા અગાઉ ચિપ દસ્તાવેજીકરણનો અભ્યાસ કર્યા પછી લેવામાં આવે છે. એક રીતે અથવા બીજી રીતે, START આદેશ પ્રાપ્ત કર્યા પછી, બધા ઉપકરણોએ તેમના તર્કને પુનઃસ્થાપિત કરવું જોઈએ અને એ હકીકત માટે તૈયાર થવું જોઈએ કે સરનામાંને હવે નામ આપવામાં આવશે.