I2C బస్ - అసైన్మెంట్, పరికరం, డేటా బదిలీ, చిరునామా
ఎలక్ట్రానిక్ సర్క్యూట్ను సృష్టించేటప్పుడు, చాలా మంది డెవలపర్లు దాని వ్యక్తిగత బ్లాక్లను సరిపోల్చడం, నమూనా చేయడం మరియు పరిష్కరించడం కోసం పెద్ద సంఖ్యలో ఇంటర్మీడియట్ చిప్లను ఉపయోగించాల్సిన అవసరాన్ని ఎదుర్కొంటారు. సహాయక చిప్ల సంఖ్యను తగ్గించడానికి, ఫిలిప్స్ 1980లలో రెండు-వైర్ బైడైరెక్షనల్ I2C సీరియల్ నెట్వర్క్ ఇంటర్ఫేస్ను ప్రతిపాదించింది, ఇది ఒకే పరికరంలో బహుళ చిప్లను నిర్వహించడానికి ప్రత్యేకంగా రూపొందించబడింది.
నేడు, ఫిలిప్స్ మాత్రమే అనేక రకాల ప్రయోజనాలతో ఎలక్ట్రానిక్ పరికరాల కోసం వంద కంటే ఎక్కువ I2C- అనుకూల పరికరాలను ఉత్పత్తి చేస్తుంది: మెమరీ, వీడియో ప్రాసెసర్ సిస్టమ్స్, అనలాగ్-టు-డిజిటల్ మరియు డిజిటల్-టు-అనలాగ్ కన్వర్టర్లు, డిస్ప్లే డ్రైవర్లు మొదలైనవి.
I2C బస్ అనేది సీరియల్ డేటా ఎక్స్ఛేంజ్ ప్రోటోకాల్ యొక్క మార్పు, ఇది సీరియల్ 8-బిట్ డేటాను సాధారణ "ఫాస్ట్" మోడ్లో 100 నుండి 400 kbps రేటుతో ప్రసారం చేయగలదు. డేటా మార్పిడి ప్రక్రియ ఇక్కడ రెండు వైర్లలో మాత్రమే అమలు చేయబడుతుంది (సాధారణ వైర్ను లెక్కించడం లేదు): డేటా కోసం SDA లైన్ మరియు సింక్రొనైజేషన్ కోసం SCL లైన్.
బస్సుకు కనెక్ట్ చేయబడిన పరికరాల అవుట్పుట్ల క్యాస్కేడ్లు ఓపెన్ కలెక్టర్లు లేదా ఛానెల్లను కలిగి ఉండటం వల్ల బస్సు ద్వి-దిశాత్మకంగా మారుతుంది, తద్వారా AND వైరింగ్ను ప్రతిరూపం చేస్తుంది. ఫలితంగా, బస్సు చిప్ల మధ్య కనెక్షన్ల సంఖ్యను తగ్గిస్తుంది, బోర్డ్లో తక్కువ అవసరమైన పిన్లు మరియు ట్రేస్లను వదిలివేస్తుంది. ఫలితంగా, బోర్డు కూడా సరళమైనది, మరింత కాంపాక్ట్ మరియు సాంకేతికంగా ఉత్పత్తిలో మరింత అభివృద్ధి చెందుతుంది.
ఈ ప్రోటోకాల్ చిరునామా డీకోడర్లను మరియు ఇతర బాహ్య చర్చల తర్కాన్ని నిలిపివేయడానికి మిమ్మల్ని అనుమతిస్తుంది. I2C బస్సులో ఏకకాలంలో పనిచేయగల చిప్ల సంఖ్య దాని సామర్థ్యంతో పరిమితం చేయబడింది - గరిష్టంగా 400 pF.
I2C-అనుకూలమైన ICలు బలమైన జోక్యాల సమక్షంలో కూడా డేటా సమగ్రతను నిర్ధారించడానికి హార్డ్వేర్ శబ్దాన్ని అణిచివేసే అల్గారిథమ్ను కలిగి ఉంటాయి. ఇటువంటి పరికరాలు ఒక ఇంటర్ఫేస్ను కలిగి ఉంటాయి, ఇవి మైక్రో సర్క్యూట్లు వాటి సరఫరా వోల్టేజ్లు భిన్నంగా ఉన్నప్పటికీ ఒకదానితో ఒకటి సంభాషించడానికి అనుమతిస్తుంది. దిగువ చిత్రంలో, మీరు ఒక సాధారణ బస్సు ద్వారా అనేక మైక్రో సర్క్యూట్లను కనెక్ట్ చేసే సూత్రంతో మిమ్మల్ని మీరు పరిచయం చేసుకోవచ్చు.
బస్సుకు కనెక్ట్ చేయబడిన ప్రతి పరికరం దాని స్వంత ప్రత్యేక చిరునామాను కలిగి ఉంటుంది, ఇది దాని ద్వారా నిర్ణయించబడుతుంది మరియు పరికరం యొక్క ఉద్దేశ్యానికి అనుగుణంగా, ఇది రిసీవర్గా లేదా ట్రాన్స్మిటర్గా పని చేస్తుంది. డేటాను ప్రసారం చేస్తున్నప్పుడు, ఈ పరికరాలు మాస్టర్ (మాస్టర్) లేదా బానిస (బానిస) కావచ్చు. మాస్టర్ అనేది డేటా బదిలీని ప్రారంభించే మరియు SCL లైన్లో క్లాక్ సిగ్నల్లను రూపొందించే పరికరం. బానిస, యజమానికి సంబంధించి, గమ్యం పరికరం.
I2C బస్లో ఏదైనా ఆపరేషన్ సమయంలో, ఒక పరికరం మాత్రమే మాస్టర్గా పని చేస్తుంది; ఇది SCL లైన్లో ఒక సిగ్నల్ను ఉత్పత్తి చేస్తుంది.మాస్టర్ మాస్టర్ రిసీవర్ లేదా మాస్టర్ ట్రాన్స్మిటర్ కావచ్చు.
సూత్రప్రాయంగా, బస్సు అనేక విభిన్న మాస్టర్లను అనుమతిస్తుంది, అయితే నియంత్రణ సంకేతాలను రూపొందించడం మరియు బస్సు స్థితిని పర్యవేక్షించడం వంటి లక్షణాలపై పరిమితులను విధిస్తుంది; దీనర్థం అనేక మంది మాస్టర్లు ఒకే సమయంలో ప్రసారం చేయడం ప్రారంభించవచ్చు, అయితే ఈ రకమైన విభేదాలు మధ్యవర్తిత్వానికి కృతజ్ఞతలు తెలుపుతాయి, అంటే బస్సు మరొక మాస్టర్ ఆక్రమించబడిందని గుర్తించినప్పుడు మాస్టర్ ప్రవర్తించే విధానం.
అన్ని పరికరాలు బస్సుకు కనెక్ట్ చేయబడి, "AND" వైరింగ్ను ఏర్పరుచుకోవడం ద్వారా ఒక జత పరికరాల సమకాలీకరణ నిర్ధారించబడుతుంది. ప్రారంభంలో, SDA మరియు SCL సంకేతాలు ఎక్కువగా ఉంటాయి.
START మరియు STOP
మాస్టర్ «START» స్థితిని రూపొందించడంతో మార్పిడి ప్రారంభమవుతుంది: SDA లైన్లో, సిగ్నల్ అధిక నుండి తక్కువ స్థితికి వెళుతుంది, అయితే SCL లైన్ స్థిరమైన అధిక స్థాయిని కలిగి ఉంటుంది. బస్కు కనెక్ట్ చేయబడిన అన్ని పరికరాలు ఈ పరిస్థితిని మార్పిడిని ప్రారంభించడానికి ఆదేశంగా గ్రహిస్తాయి.
ప్రతి మాస్టర్ బస్సులో డేటాను ప్రసారం చేస్తున్నప్పుడు SCL లైన్లో వ్యక్తిగత క్లాక్ సిగ్నల్ను ఉత్పత్తి చేస్తుంది.
మాస్టర్ ద్వారా STOP స్థితి ఏర్పడటంతో మార్పిడి ముగుస్తుంది: SDA లైన్లో సిగ్నల్ తక్కువ నుండి ఎక్కువ వరకు మారుతుంది, అయితే SCL లైన్ స్థిరమైన అధిక స్థాయిని కలిగి ఉంటుంది.
డ్రైవర్ ఎల్లప్పుడూ START మరియు STOP సిగ్నల్ల మూలంగా పనిచేస్తుంది. «START» సిగ్నల్ పరిష్కరించబడిన వెంటనే, లైన్ బిజీగా ఉందని అర్థం. STOP సిగ్నల్ కనుగొనబడినప్పుడు లైన్ ఉచితం.
START స్థితిని ప్రకటించిన వెంటనే, మాస్టర్ SCL లైన్ను తక్కువగా మారుస్తుంది మరియు SDA లైన్కు మొదటి సందేశ బైట్లోని అత్యంత ముఖ్యమైన బిట్ను పంపుతుంది. సందేశంలోని బైట్ల సంఖ్య పరిమితం కాదు.SCL లైన్లో సిగ్నల్ స్థాయి తక్కువగా ఉన్నప్పుడు మాత్రమే SDA లైన్లో మార్పులు ప్రారంభించబడతాయి. డేటా చెల్లుబాటు అవుతుంది మరియు సమకాలీకరణ పల్స్ ఎక్కువగా ఉన్నప్పుడు మాత్రమే మార్చకూడదు.
మాస్టర్ ట్రాన్స్మిటర్ నుండి బైట్ స్లేవ్ రిసీవర్ ద్వారా స్వీకరించబడిందని ఎనిమిదవ డేటా బిట్ స్వీకరించిన తర్వాత SDA లైన్లో ప్రత్యేక రసీదు బిట్ను సెట్ చేయడం ద్వారా చేయబడుతుంది.
ధృవీకరణ
కాబట్టి, ట్రాన్స్మిటర్ నుండి రిసీవర్కి 8 బిట్ల డేటాను పంపడం అనేది SCL లైన్లో అదనపు పల్స్తో ముగుస్తుంది, స్వీకరించే పరికరం SDA లైన్లో తక్కువగా ఉన్నప్పుడు, ఇది మొత్తం బైట్ను స్వీకరించిందని సూచిస్తుంది.
డేటా బదిలీ ప్రక్రియలో నిర్ధారణ అంతర్భాగం. మాస్టర్ సమకాలీకరణ పల్స్ను రూపొందిస్తుంది. గుర్తింపు గడియారం సక్రియంగా ఉన్నప్పుడు ట్రాన్స్మిటర్ తక్కువ స్థితిని SDAకి పంపుతుంది. సమకాలీకరణ పల్స్ ఎక్కువగా ఉన్నప్పుడు, రిసీవర్ తప్పనిసరిగా SDAని తక్కువగా ఉంచాలి.
డెస్టినేషన్ స్లేవ్ దాని చిరునామాను గుర్తించకపోతే, ఉదాహరణకు అది ప్రస్తుతం బిజీగా ఉన్నందున, డేటా లైన్ తప్పనిసరిగా ఎత్తులో ఉండాలి. మాస్టర్ అప్పుడు డిస్పాచ్ను నిలిపివేయడానికి STOP సిగ్నల్ ఇవ్వవచ్చు.
రిసెప్షన్ను మాస్టర్ రిసీవర్ నిర్వహిస్తే, ట్రాన్స్మిషన్ పూర్తయిన తర్వాత స్లేవ్ ట్రాన్స్మిటర్కు తెలియజేయాల్సిన బాధ్యత ఉంది - చివరి బైట్ని నిర్ధారించడం ద్వారా కాదు. స్లేవ్ ట్రాన్స్మిటర్ డేటా లైన్ను విడుదల చేస్తుంది, తద్వారా మాస్టర్ STOP సిగ్నల్ లేదా పునరావృతమయ్యే START సిగ్నల్ను జారీ చేయవచ్చు.
SCL లైన్కు కనెక్షన్లు "AND" సూత్రం ప్రకారం తయారు చేయబడిన వాస్తవం ద్వారా పరికరాల సమకాలీకరణ నిర్ధారించబడుతుంది.
SCL లైన్ తక్కువ నుండి ఎక్కువకు మారడాన్ని నియంత్రించే ఏకైక హక్కు మాస్టర్కు లేదు.స్వీకరించిన బిట్ను ప్రాసెస్ చేయడానికి స్లేవ్కు ఎక్కువ సమయం అవసరమైతే, తదుపరి బిట్ డేటాను స్వీకరించడానికి సిద్ధంగా ఉండే వరకు అది స్వతంత్రంగా SCLని తక్కువగా ఉంచుతుంది. అటువంటి పరిస్థితిలో SCL లైన్ పొడవైన తక్కువ-స్థాయి సమకాలీకరణ పల్స్ వ్యవధికి తక్కువగా ఉంటుంది.
అత్యల్ప స్థిరమైన కనిష్టాన్ని కలిగి ఉన్న పరికరాలు దీర్ఘకాలం ముగిసే వరకు నిష్క్రియంగా ఉంటాయి. అన్ని పరికరాలు తక్కువ సమకాలీకరణ వ్యవధిని పూర్తి చేసినప్పుడు, SCL ఎక్కువగా ఉంటుంది.
అన్ని పరికరాలు హై క్లాక్ చేయడం ప్రారంభిస్తాయి మరియు దాని వ్యవధిని పూర్తి చేసిన మొదటి పరికరం SCL లైన్ తక్కువగా సెట్ చేయడంలో మొదటిది. ఫలితంగా, SCL యొక్క తక్కువ స్థితి యొక్క వ్యవధి పరికరాలలో ఒకదాని యొక్క సింక్రొనైజేషన్ పల్స్ యొక్క పొడవైన తక్కువ స్థితి ద్వారా నిర్ణయించబడుతుంది మరియు అధిక స్థితి యొక్క వ్యవధి ఒకదానిలో ఒకదాని యొక్క అతి తక్కువ కాలం సమకాలీకరణ ద్వారా నిర్ణయించబడుతుంది. పరికరాలు.
బిట్ మరియు బైట్ స్థాయిలో డేటా ట్రాన్స్మిషన్ను నియంత్రించే సాధనంగా రిసీవర్ల ద్వారా సింక్రొనైజేషన్ సిగ్నల్లను ఉపయోగించవచ్చు.
పరికరం అధిక రేటుతో బైట్లను స్వీకరించగల సామర్థ్యాన్ని కలిగి ఉంటే, కానీ స్వీకరించిన బైట్ను నిల్వ చేయడానికి లేదా తదుపరి బైట్ను స్వీకరించడానికి సిద్ధపడడానికి కొంత సమయం తీసుకుంటే, అది బైట్ను స్వీకరించి, అంగీకరించిన తర్వాత SCLని తక్కువగా ఉంచడం కొనసాగించవచ్చు , బలవంతంగా స్టాండ్బై స్థితికి ట్రాన్స్మిటర్.
అంతర్నిర్మిత హార్డ్వేర్ సర్క్యూట్లు లేని మైక్రోకంట్రోలర్, ఉదాహరణకు బిట్ స్థాయిలో, వాటి తక్కువ స్థితి యొక్క వ్యవధిని పెంచడం ద్వారా గడియార వేగాన్ని నెమ్మదిస్తుంది. ఫలితంగా, మాస్టర్ పరికరం యొక్క బాడ్ రేటు వేగం ద్వారా నిర్ణయించబడుతుంది. నెమ్మదిగా పరికరం.
చిరునామా
I2C బస్కు కనెక్ట్ చేయబడిన ప్రతి పరికరం ఒక ప్రత్యేకమైన ప్రోగ్రామ్ చిరునామాను కలిగి ఉంటుంది, దీనిలో మాస్టర్ నిర్దిష్ట ఆదేశాన్ని పంపడం ద్వారా దాన్ని సంబోధిస్తారు. ఒకే రకమైన మైక్రో సర్క్యూట్లు అడ్రస్ సెలెక్టర్ ద్వారా వర్గీకరించబడతాయి, ఇది సెలెక్టర్ యొక్క డిజిటల్ ఇన్పుట్ల రూపంలో లేదా అనలాగ్ రూపంలో అమలు చేయబడుతుంది. చిరునామాలు బస్సుకు కనెక్ట్ చేయబడిన పరికరాల చిరునామా స్థలంగా విభజించబడ్డాయి.
సాధారణ మోడ్ ఏడు-బిట్ చిరునామాను ఊహిస్తుంది. చిరునామా ఈ క్రింది విధంగా పనిచేస్తుంది: «START» ఆదేశం తర్వాత, మాస్టర్ మొదటి బైట్ను పంపుతుంది, ఇది మాస్టర్తో కమ్యూనికేట్ చేయడానికి ఏ బానిస పరికరం అవసరమో నిర్ణయిస్తుంది. బస్సులోని అన్ని పరికరాలను నిర్వచించే ఒక సాధారణ కాల్ చిరునామా కూడా ఉంది, అన్ని పరికరాలు (సిద్ధాంతపరంగా) దానికి రసీదుతో ప్రతిస్పందిస్తాయి, కానీ ఆచరణలో ఇది చాలా అరుదు.
కాబట్టి మొదటి బైట్లోని మొదటి ఏడు బిట్లు బానిస చిరునామా. అతి తక్కువ ముఖ్యమైన బిట్, ఎనిమిదవది, డేటా పంపే దిశను సూచిస్తుంది. ఒక «0» ఉంటే, అప్పుడు సమాచారం మాస్టర్ నుండి ఈ బానిసకు వ్రాయబడుతుంది. «1» అయితే, సమాచారం ఈ బానిస నుండి మాస్టర్ ద్వారా చదవబడుతుంది.
యజమాని చిరునామా బైట్ని పంపడం పూర్తి చేసిన తర్వాత, ప్రతి బానిస దాని చిరునామాను దానితో పోల్చి చూస్తాడు. అదే చిరునామా ఉన్న ఎవరైనా బానిస మరియు చిరునామా బైట్ యొక్క అతి తక్కువ ముఖ్యమైన బిట్ విలువను బట్టి స్లేవ్ ట్రాన్స్మిటర్ లేదా స్లేవ్ రిసీవర్గా నిర్వచించబడతారు.
ఒక బానిస చిరునామా స్థిర మరియు ప్రోగ్రామబుల్ భాగాలను కలిగి ఉంటుంది. చాలా తరచుగా ఒకే రకమైన పరికరాలు పెద్ద సంఖ్యలో ఒకే సిస్టమ్లో పనిచేస్తాయి, అప్పుడు చిరునామా యొక్క ప్రోగ్రామబుల్ భాగం బస్సులో గరిష్టంగా ఒకే రకమైన పరికరాలను ఉపయోగించడానికి అనుమతిస్తుంది. చిరునామా బైట్లోని ఎన్ని బిట్లు ప్రోగ్రామబుల్ అనేది చిప్లోని ఉచిత పిన్ల సంఖ్యపై ఆధారపడి ఉంటుంది.
కొన్నిసార్లు ప్రోగ్రామబుల్ చిరునామా పరిధి యొక్క అనలాగ్ సెట్టింగ్తో పిన్ సరిపోతుంది, ఉదాహరణకు SAA1064 - సరిగ్గా అలాంటి అమలును కలిగి ఉన్న LED సూచిక డ్రైవర్. ఒక నిర్దిష్ట పిన్ యొక్క సంభావ్యత చిప్ యొక్క చిరునామా స్థలం యొక్క ఆఫ్సెట్ను నిర్ణయిస్తుంది, తద్వారా ఒకే రకమైన చిప్లు ఒకే బస్సులో పనిచేయడానికి విరుద్ధంగా ఉండవు. I2C బస్కు మద్దతు ఇచ్చే అన్ని చిప్లు తయారీదారు డాక్యుమెంటేషన్లో పేర్కొన్న చిరునామాల సమితిని కలిగి ఉంటాయి.
కలయిక «11110XX» 10-బిట్ చిరునామా కోసం రిజర్వ్ చేయబడింది. మేము «START» కమాండ్ నుండి «STOP» ఆదేశానికి డేటా మార్పిడిని ఊహించినట్లయితే, అది ఇలా కనిపిస్తుంది:
సాధారణ మరియు సంయుక్త డేటా మార్పిడి ఫార్మాట్లు ఇక్కడ అనుమతించబడతాయి. కంబైన్డ్ ఫార్మాట్ అంటే «START» మరియు «STOP» మధ్య మాస్టర్ మరియు స్లేవ్ రిసీవర్లు మరియు ట్రాన్స్మిటర్లుగా పని చేయవచ్చు, ఉదాహరణకు సీరియల్ మెమరీ నిర్వహణలో ఇది ఉపయోగపడుతుంది.
డేటా యొక్క మొదటి బైట్ మెమరీ చిరునామాను బదిలీ చేయనివ్వండి. అప్పుడు, «START» ఆదేశాన్ని పునరావృతం చేయడం మరియు బానిస చిరునామాను చదవడం, మెమరీ డేటా పని చేస్తుంది. మునుపు యాక్సెస్ చేసిన చిరునామాను స్వయంచాలకంగా పెంచడం లేదా తగ్గించడం కోసం నిర్ణయాలు గతంలో చిప్ డాక్యుమెంటేషన్ను అధ్యయనం చేసిన తర్వాత పరికర డెవలపర్ ద్వారా తీసుకోబడతాయి. ఒక మార్గం లేదా మరొకటి, START ఆదేశాన్ని స్వీకరించిన తర్వాత, అన్ని పరికరాలు వారి తర్కాన్ని పునరుద్ధరించాలి మరియు చిరునామా ఇప్పుడు పేరు పెట్టబడుతుందనే వాస్తవం కోసం సిద్ధం చేయాలి.