क्या I2C पुल-अप प्रतिरोधों के लिए एक सही प्रतिरोध मूल्य है?


72

डेटापत्रक 24LC256 EEPROM का कहा गया है कि:

एसडीए बस को वीसीसी (100 केएचजेड के लिए विशिष्ट 10 k a, 400 kHz के लिए 2 kΩ और 1 MHz) के लिए एक पुल-अप रोकनेवाला की आवश्यकता होती है।

मैंने सोचा था कि kΩ मूल्य वाला कोई भी रोकनेवाला काम करेगा (और ऐसा लगता है कि मेरा EEPROM 10 k with रोकनेवाला के साथ अलग-अलग आवृत्तियों पर ठीक काम करता है)।

मेरे प्रश्न हैं:

  • पुल-अप प्रतिरोधों के लिए एक सही मूल्य है?
  • क्या इस मूल्य को निर्धारित करने के लिए कोई कानून / नियम है?
  • विभिन्न प्रतिरोध मूल्य I²C डेटा बस को कैसे प्रभावित करते हैं?

कुछ हद तक संबंधित: Electronics.stackexchange.com/q/76376/2028
JYelton

जवाबों:


66

I 2 C बस के लिए सही पुलअप प्रतिरोध बस पर कुल समाई और उस आवृत्ति पर निर्भर करता है जिस पर आप बस को संचालित करना चाहते हैं।

ATmega168 डेटाशीट से सूत्र (जो मुझे लगता है कि आधिकारिक I 2 C युक्ति से आता है ) है:

Freq<100kHzRmin=Vcc0.4V3mA,Rmax=1000nsCbus

Freq>100kHzRmin=Vcc0.4V3mA,Rmax=300nsCbus

माइक्रोचिप 24LC256 अधिकतम 10pF का पिन समाई निर्दिष्ट करता है (जो काफी विशिष्ट है)। बस में समानांतर में आपके पास मौजूद उपकरणों की संख्या की गणना करें और उन मानों की एक श्रृंखला की गणना करने के लिए ऊपर दिए गए सूत्र का उपयोग करें जो काम करेंगे।

यदि आप बैटरी बंद कर रहे हैं तो मैं उन मूल्यों का उपयोग करूंगा जो सीमा के उच्च अंत में हैं। अगर ICs में पावर सोर्स या पावर डिसऑर्डर मुद्दों पर कोई पावर लिमिट नहीं है, तो मैं रेंज के निचले छोर पर वैल्यू का उपयोग करूंगा।

मैं I 2 C RTC (DS1337) के साथ कुछ किट बेचता हूं । मैं किट में 4K7 प्रतिरोधों को शामिल करता हूं जो अधिकांश उपयोगकर्ताओं के लिए एक उचित समझौता जैसा लगता है।


आमतौर पर मैं बस के निष्क्रिय होने की कल्पना करूँगा (अधिकांश समय में डी-एसेरेटेड), इसलिए एक बैटरी एप्लिकेशन के लिए I2C पुलअप्स को ऑप्टिमाइज़ करने की कोशिश करने की तुलना में अधिक महत्वपूर्ण मुद्दे हैं: पी
निक टी

5
केवल एक चीज जो मैं जोड़ूंगा, वह बस में उपकरणों के समाई समाई के ऊपर एक बफर है। ट्रेस से ही पैड से लेकर पिन तक के टांके लगाने वाले जोड़ों में भी कुछ बाधा होगी। ट्रेस / वायर की कैपेसिटेंस बसों पर उपकरणों की पिन कैपेसिटेंस से बड़ी हो सकती है। जब उत्पादन बोर्ड डिजाइन करते हैं तो मैं आमतौर पर अंतिम पुल अप मूल्य का निर्धारण नहीं करता हूं जब तक कि मेरे पास एक प्रोटोटाइप नहीं होता है और विभिन्न मूल्यों के साथ बस को गुंजाइश कर सकता है।
मार्क

14

यह समझ में आता है कि उच्च आवृत्तियों को कम प्रतिरोध पुल-अप की आवश्यकता होती है: एक कम प्रतिरोध केबल की धारिता को तेज़ी से चार्ज / डिस्चार्ज करेगा, जिसके परिणामस्वरूप स्टेटर किनारों का परिणाम होता है। कम आवृत्तियों के व्यापक दालों के साथ एक कम खड़ी धार पल्स के आकार को ज्यादा प्रभावित नहीं करेगी।

इसलिए I2C विनिर्देश तीन गति वर्गों के लिए बस समाई के एक समारोह के रूप में पुल-अप प्रतिरोधों के लिए अधिकतम मान देता है:

यहाँ छवि विवरण दर्ज करें

न्यूनतम मान बस वोल्टेज के फ़ंक्शन में परिभाषित किए गए हैं, और ड्राइवरों के माध्यम से वर्तमान को सीमित करना चाहिए।


3
3 साल बाद टेक्सास इंस्ट्रूमेंट्स ने एक एप्लिकेशन नोट लिखा जो इस उत्तर के अर्थ में काफी करीब है।
निक एलेक्सीव

EDN लेख: मजबूत I2C संचार के लिए डिजाइन गणना । [बस संदर्भ सामग्री ढेर।]
निक एलेक्सीव

11

मूल्यों की एक सही श्रेणी है, हालांकि यह वर्णन करना मुश्किल है कि वह सीमा क्या है। आम तौर पर, 10k काम करता है।

डिजिटल आउटपुट में वर्तमान या स्रोत को सिंक करने की एक निर्दिष्ट क्षमता होती है। यदि आपका आउटपुट 5 mA सिंक कर सकता है और आउटपुट एक पुल-अप के माध्यम से 5 V से जुड़ा हुआ है और फिर 0 पर सेट है, तो आपको न्यूनतम 1k प्रतिरोध की आवश्यकता होगी। यदि आप 1k से कम का उपयोग करते हैं, तो आउटपुट 0V के नीचे सभी तरह से पिन खींचने के लिए पर्याप्त वर्तमान को सिंक करने में सक्षम नहीं होगा। यदि आप 10k जैसे बड़े मूल्य का उपयोग करते हैं, तो पिन को केवल 0.5 mA सिंक करना होगा, जो कि रेटिंग से बहुत कम है।

डिजिटल इनपुट में एक निर्दिष्ट लीकेज करंट होता है। यह एक इनपुट पर 0 या 1 को "बनाए रखने" के लिए ले जाने वाली करंट की मात्रा की तरह है। यदि आपका पुल-अप प्रतिरोध बहुत बड़ा है, तो यह लीकेज करंट को दूर नहीं कर पाएगा। यदि यह केवल रिसाव चालू को कम करता है, तो सर्किट में कोई भी शोर इनपुट बदलने के लिए पर्याप्त हो सकता है।

डिजिटल आउटपुट का उपयोग करते समय जो करंट और सोर्स को चालू कर सकता है ("टोटेम पोल ड्राइवर", "पुश-पुल ड्राइवर"), आपको पुल-अप या पुल-डाउन रेसिस्टर्स का उपयोग न करने के लिए लुभाया जा सकता है। हालांकि, यह बहुत महत्वपूर्ण है कि CMOS इनपुट को फ्लोट करने की अनुमति नहीं दी जाए या वे अत्यधिक धारा खींच सकते हैं ... और यह भूलना बहुत आसान है कि द्विदिश MCU पिन आमतौर पर इनपुट के रूप में आते हैं!


I2C और अन्य प्रोटोकॉल जैसे "ओपन ड्रेन" (या "ओपन कलेक्टर") आउटपुट का उपयोग करते हैं। इसके बजाय ऐसे आउटपुट होते हैं जो ऊपर और नीचे खींच सकते हैं, और खुली नाली के आउटपुट केवल नीचे खींच सकते हैं। यही कारण है कि बाहरी पुल-अप अवरोधक की आवश्यकता होती है। पुल-अप प्रतिरोधों की सीमा पर अब अतिरिक्त प्रतिबंध हैं; पुल-अप मान बस कैपेसिटेंस के साथ RC सर्किट बनाएगा। मूल्य का बहुत छोटा होना एक बार फिर से आउटपुट ड्राइवरों को पिन को सभी तरह से नीचे खींचने के लिए पर्याप्त वर्तमान से डूबने से रोकेगा। हालांकि, बस कैपेसिटेंस को चार्ज करने के लिए बहुत बड़ा मूल्य बहुत लंबा लगेगा।

यदि सेटअप / होल्ड समय है, जिसका आपको उल्लंघन करने की अनुमति नहीं है, तो वे आपको आरसी समय स्थिर निर्धारित करने में मदद करेंगे। बस कैपेसिटेंस काफी हद तक पीसीबी लेआउट द्वारा निर्धारित किया जाता है, इसलिए आप तब एक आर मान ले सकते हैं जो सी के साथ मिलकर एक मूल्य प्रदान करता है जो आपके डिजिटल इनपुट के लिए सेटअप / होल्ड समय के भीतर आराम से होता है।


7

कम पुल-अप मान (कम प्रतिरोध) सिग्नल ट्रांज़िशन के किनारों में सुधार कर सकते हैं लेकिन कभी-कभी बहुत अधिक कठोर हो सकते हैं - यदि बस में डिवाइस पुल-अप करंट को डुबो नहीं सकते तो आपको तर्क कम मिलता है 'कम' जो वास्तव में उतना कम नहीं है , जो संचार त्रुटियों (और बहुत दर्द हो सकता है)।

मैं उच्चतम पुल-अप प्रतिरोध के साथ जाना चाहता हूं जो आपको विश्वसनीय संचार देता है।


5

कम आवृत्तियों के लिए मान वास्तव में मायने नहीं रखता है, लेकिन उच्च आवृत्तियों के लिए यह सर्किट में अन्य कैपेसिटेंस के साथ संयोजन में सिग्नल पर एक फ़िल्टरिंग प्रभाव डाल सकता है, यही कारण है कि वे अलग-अलग गति के लिए अलग-अलग मानों की सलाह देते हैं।


2

एक मुद्दा जो मैंने अभी तक नहीं देखा है वह है बिजली की खपत। यदि कोई 3.3 वोल्ट की आपूर्ति का उपयोग कर रहा है, तो जब भी कोई आउटपुट कम होता है, तो 3.3K रोकनेवाला जमीन का 1mA (3.3mW की शक्ति) बर्बाद करेगा। एक 10K रोकनेवाला का उपयोग कर तीन के एक कारक से वर्तमान और शक्ति दोनों को कम करेगा। यदि I2C बस पर बहुत अधिक संचार होगा, तो बिजली की खपत समग्र बिजली नाली का एक महत्वपूर्ण हिस्सा हो सकती है, खासकर अगर बस विस्तारित अवधि के लिए कम बैठ सकती है। उदाहरण के लिए, यदि कोई 100 बाइट्स / सेकंड पढ़ रहा है, लेकिन प्रत्येक बाइट को पढ़ने के बाद बस डिवाइस को अगले बाइट के पहले बिट आउटपुट के साथ छोड़ दिया जाता है, और उन बाइट्स में से अधिकांश MSB स्पष्ट हैं, तो बस का 90% खर्च हो सकता है एससीएल और एसडीए के साथ समय कम है। इस पर निर्भर करता है कि सिस्टम और क्या कर रहा है, जो बड़े पैमाने पर पावर ड्रा को बढ़ा सकता है।

बिजली बचाने के लिए, VDD के बजाय I / O पिन से जुड़ा "पुल-अप" अवरोधक होना मददगार हो सकता है। जबकि मैंने हार्डवेयर I2C कार्यान्वयन को इसके लिए समर्थन नहीं दिया है, एक अलग I / O पिन पर मास्टर आउटपुट डेटा है जो एक ओपन-कलेक्टर ड्राइवर का उपयोग करने के बजाय अवरोधक के माध्यम से बस से जुड़ा हुआ है और एक निश्चित पुल-अप रोकनेवाला से बचना होगा वर्तमान बर्बाद कर रहा है जब मास्टर एक "0" आउटपुट करना चाहता है। इसके अलावा, अगर मास्टर एसडीए पर परवाह किए बिना थोड़ी देर के लिए एससीके कम छोड़ने जा रहा है, तो मास्टर कुछ और संचार के लिए तैयार होने तक पुल-अप को अक्षम कर सकता है। यदि उपकरणों में से किसी को घड़ी स्ट्रेचिंग का उपयोग करने की आवश्यकता नहीं है, तो मास्टर बस SCK के लिए एक प्रत्यक्ष आउटपुट का उपयोग कर सकता है और उस तार पर किसी भी पुल-अप से परेशान नहीं होता है।

यदि कोई तेज़ प्रोसेसर के साथ सॉफ़्टवेयर बिट-बैंगिंग का उपयोग कर रहा है, और कोई उच्च बस समाई के बावजूद अच्छा प्रदर्शन करना चाहता है, तो उपरोक्त दृष्टिकोण को प्रोसेसर के अंतर्निहित कमजोर पुल-अप के उपयोग के साथ जोड़ा जा सकता है। डेटा पढ़ते समय, एससीके के प्रत्येक गिरने वाले किनारे के तुरंत बाद, एक बहुत मजबूत पुल-अप चालू करें, और फिर एक कमजोर पुल-अप पर स्विच करें। मजबूत पुल-अप कैपेसिटेंस के बावजूद लाइन को ऊंचा खींच देगा, और एक बार लाइन को उच्च खींचने के बाद कमजोर पुल-अप इसे उच्च रखने में सक्षम होगा। यहां तक ​​कि अगर किसी डिवाइस को मजबूत पुल-अप के खिलाफ लाइन कम खींचने में परेशानी होगी, तो मजबूत पुल-अप स्विच बंद हो जाने पर ऐसा करने में सक्षम होगा।


1

न्यूनतम प्रतिरोधक मूल्य बस के दो पक्षों की ड्राइविंग क्षमताओं पर निर्भर करता है। उदाहरण के लिए वे 10 mA ड्राइव करते हैं, इसलिए आपका अवरोधक मान से अधिक होना चाहिएVbus10 mA

http://www.cypress.com/knowledge-base-article/rise-and-fall-time-specifications-scl-and-sda-lines-i2c


-1

यहां 400kiloBits / सेकंड (200KHz 101010 तरंग) के लिए तरंगें हैं। RC 4.7K ओम और 212pF है। RC मान 2 TAU को व्यवस्थित करने की अनुमति देता है।

यहाँ छवि विवरण दर्ज करें


यह जवाब सिर्फ गलत है। 200 kHz घड़ी 200 kb / s देती है, 400 नहीं। पुल-अप प्रतिरोध से केवल बढ़ते किनारे प्रभावित होते हैं। भूखंड भ्रामक दिखते हैं, लगभग किसी तरह का मॉड्यूलेशन हो रहा है। भौतिक राशियाँ और उनकी इकाइयाँ बीच में अंतरिक्ष (या पतली जगह) के साथ लिखी जाती हैं। ताऊ एक प्रतीक है, एक संक्षिप्त नाम नहीं।
वेनी

@venny बस के समय के लिए बहुत तेज़ चलने वाली बस के लिए यह विशिष्ट तरंग है। केवल 2 टीएयू बसने के साथ, तरंगों के लिए कोई फ्लैट-टॉप नहीं है, इसलिए "कुछ प्रकार का मॉड्यूलेशन"; यह एक छद्म यादृच्छिक पैटर्न थे, बसने की परिवर्तनशीलता बहुत स्पष्ट होगी; "डेटा नेत्र" पर पढ़ें। अंत में, 200KHz घड़ी में 2.5uS के लिए उच्च है तो 2.5uS के लिए कम; 2.5uS की अवधि मेरे द्वारा उल्लिखित 400KHz डेटा है।
analogsystemsrf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.