डिजिटल I / O के रूप में अतिरिक्त GPIO का उपयोग कर रहे हैं?


11

उम्मीद है कि यह सवाल सरल है, लेकिन मेरी त्वरित गुगली का जवाब नहीं मिला।

मुझे पता है कि आरपीआई में कई GPIO हैं जिनका मैं विशेष GPIO (SPI, I2C, UART, आदि) के रूप में भी उपयोग कर सकता हूं। मेरी परियोजना में मैं वास्तव में नियमित GPIOs से बाहर चल रहा हूं और SPI, I2C और अन्य GPIO का उपयोग "नियमित" GPIO के रूप में भी करना चाहूंगा। मुझे पता है कि यह किया जा सकता है, लेकिन मुझे लगता है कि मुझे यकीन नहीं है कि मैं उन्हें SPI / I2C / etc मोड में नहीं चलाने के लिए कैसे सेट कर सकता हूं और नियमित GPIO के रूप में चला सकता हूं।

क्या मुझे इसके लिए उन्हें ठीक से सेट करने के लिए कुछ भी करने की आवश्यकता है?

जवाबों:


10

संक्षिप्त उत्तर

नहीं, आप (लगभग) नहीं। यह वास्तव में आसपास का दूसरा तरीका है - आपको उन्हें GPIO होने के लिए नहीं बल्कि उनके विशेष उद्देश्य की सेवा के लिए स्थापित करना होगा। एकमात्र अपवाद UART पिन हैं। इसके अलावा और I²C किसी तरह विशेष पिन।

उरट पिंस

UART पिन कंसोल के लिए कर्नेल द्वारा उपयोग किया जाता है। यदि आप चाहते हैं कि आप उन्हें अपने उपयोग के लिए उपलब्ध कर सकें, तो आपको उनका उपयोग न करने के लिए सिस्टम को कॉन्फ़िगर करना होगा:

  • संपादित करें /boot/cmdline.txtऔर निकालें console=ttyAMA0,115200और kgdboc=ttyAMA0,115200मापदंडों
  • संपादित करें /etc/inittabऔर टिप्पणी करें ( #इसके सामने चरित्र डालें ) पंक्ति:

    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
  • अपने रास्पबेरी पे रिबूट करें

अब पिन को सिस्टम द्वारा उपयोग नहीं किया जाना चाहिए और आप उनका उपयोग कर सकते हैं

IinsC पिंस

I onC पिंस में ऑन-बोर्ड 1.8k पुल-अप रेसिस्टर्स लगाए गए हैं। उन्हें निष्क्रिय नहीं किया जा सकता। यह कुछ स्थितियों में उन पिनों के उपयोग को सीमित करता है (लेकिन दूसरों के काम आ सकता है)।

अतिरिक्त समाधान

यदि GPIO पिन पर कम चल रहा है, तो आप कभी-कभी कुछ अतिरिक्त (लेकिन सरल) हार्डवेयर का उपयोग करके आसानी से इसकी संख्या बढ़ा सकते हैं। उदाहरण के लिए उत्पादन के लिए, आप उपयोग कर सकते हैं shift registersया I²C I/O expandersआसानी से (भी `I²C बस विस्तारक कहा जाता है), दोनों को खरीदने और उपयोग करने के लिए। आप इसका उदाहरण यहां पा सकते हैं ।

PFC8574(या इस परिवार से समान) इतने लोकप्रिय हैं कि कर्नेल मॉड्यूल का उपयोग करने के लिए तैयार है जो आपके लिए सभी संचार को संभालता है ( यह आधिकारिक रास्पबेरीपी कर्नेल में सक्षम नहीं है, आपको इसका उपयोग करने के लिए अपना कर्नेल संकलित करने की आवश्यकता होगी )। मॉड्यूल को कहा जाता है gpio_pcf857x, यह प्रदान करते हुए कि आपने इसे modprobe(I driversC ड्राइवरों के साथ) लोड किया है और आपके पास I²Cबस से जुड़ी चिप है , आप इसे इस तरह सक्रिय कर सकते हैं:

echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device

जहां pcf8574अपने वास्तविक चिप नाम है (इस मॉड्यूल की तरह कुछ अलग चिप्स संभाल कर सकते हैं pca967xऔर max732x) और 0x27इसका पता चल रहा है I²C(जब यह तारों आप चिप के पते कॉन्फ़िगर कर सकते हैं)।

यह /sys/class/gpio/निर्देशिका में प्रविष्टियाँ बनाएगा जो आपको रास्पबेरीपी में अन्य GPIO पोर्ट्स के समान उपयोग करने की अनुमति देगा, बशर्ते आप sysइंटरफ़ेस का उपयोग कर रहे हों (उदाहरण के लिए wiringPiSetupSys()वायरिंगपीआई में)। दुर्भाग्य से, पायथन का RPi.GPIOमॉड्यूल इस मोड का समर्थन नहीं करता है इसलिए यह इस पुस्तकालय के साथ इस पिन का उपयोग करने में सक्षम नहीं होगा। पिंस में 248-255 या इसी तरह के कुछ उच्च नंबर होंगे।

नोट: PCF8574 है sinking current- यह ड्राइव सिंक दे सकते हैं (कम राज्य में स्वीकार करते हैं) 20mA जितना लेकिन उच्च राज्य में यह एक मात्र स्रोत 0.1mA कर सकते हैं। इसका मतलब है कि आप आमतौर पर इसका उपयोग रिवर्स लॉजिक में करने वाले हैं, अर्थात +3.3V -> LED -> RESISTOR -> PCF8574_PIN

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.