किस हार्डवेयर संस्करण पर चल रहा है यह निर्धारित करने के लिए mcu का एक अच्छा तरीका क्या है?


13

मैं एक नए उत्पाद डिजाइन पर काम कर रहा हूं और उत्पाद के जीवन पर संभवतः छोटे या बड़े हार्डवेयर परिवर्तन / सुधार होंगे। क्षेत्र में भविष्य के फर्मवेयर अपडेट के लिए मुझे हार्डवेयर संशोधन को निर्धारित करने का एक तरीका चाहिए। एक अच्छी रणनीति क्या है?

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

मुझे लगता है कि अधिक किफायती तरीका एक एडीसी पिन से जुड़ा एक अवरोधक विभक्त हो सकता है। प्रत्येक हार्डवेयर संशोधन में अलग-अलग मूल्य प्रतिरोध हो सकते हैं। दुर्भाग्य से मेरे पास मेरे वर्तमान डिजाइन में कोई अतिरिक्त एडीसी नहीं है।

मुझे लगता है कि एक और तरीका EEPROM में हार्डवेयर संस्करण संख्या को एनकोड करने के लिए हो सकता है या उत्पादन के दौरान mcu फ़्लैश? (फिलहाल हमारे पास वह सुविधा नहीं है।)

मुझे लगता है कि मैं एक लचीली और मजबूत विधि के लिए सुझाव ढूंढ रहा हूं।

[संपादित करें]

पुन। @ trav1s से सुझाव: मेरे पास प्रति पता बस नहीं है, लेकिन मेरे पास I2C बस में 24LCxx EEPROM है। स्लेव एड्रेस के निम्न 3 बिट्स हार्डवयर्ड हैं। मुझे लगता है कि मैं स्टार्टअप के दौरान एड्रेस बिट्स को बदल सकता हूं और ईईपीआरओएम को खोज सकता हूं।

जवाबों:


7

यह एक ऐसी चीज है जिससे मैं निरंतर आधार पर निपटता हूं। हमारे पास बहुत जटिल हार्डवेयर है जो लगभग 10 वर्षों से क्षेत्र में है, विभिन्न उप-प्रणालियों के विभिन्न संस्करणों के साथ। कुछ उप-प्रणालियों में 2-बिट कोड है, लेकिन जैसा कि आपने उल्लेख किया है, यह हमेशा पर्याप्त नहीं होता है।

EEPROM सुझाव एक अच्छा है, लेकिन इसके लिए EEPROM की प्रोग्रामिंग करना और सही संस्करण के साथ बोर्ड को पॉप्युलेट करना आवश्यक है।

मैं जो सुझाव दूंगा वह 74HC166 की तरह 8-बिट समानांतर-इन-सीरियल आउट शिफ्ट रजिस्टर है। संस्करण संख्या पीसी बोर्ड द्वारा इनपुट पर सेट की जा सकती है इनपुट्स उच्च या कम बांधने और फिर आपको एमसीयू से शिफ्ट रजिस्टर को लोड करने और पढ़ने के लिए केवल 3 पिन की आवश्यकता होती है।


मुझे पसंद है कि hw संस्करण को बोर्ड पर हार्डवेयर्ड किया गया है, इस तरह मुझे केवल एक फर्मवेयर संस्करण की आवश्यकता है और मुझे प्रीप्रोग्राम किए गए EEPROM को संभालने की आवश्यकता नहीं है। ऐसा लगता है कि शिफ्ट रजिस्टर के बारे में USD 0.1 के लिए पाया जा सकता है और यह ठीक है।
मोर्टन

2
उन्हीं लाइनों के साथ, आप अपनी I2C बस से लटकने वाले एक I2C पोर्ट विस्तारक का भी उपयोग कर सकते हैं। यह थोड़ा अधिक महंगा हो सकता है, हालांकि।
alex.forencich

8

मैं माइक्रोकंट्रोलर में प्रोग्राम किए गए वर्जन नंबर का उपयोग नहीं करूंगा। जब तक अलग-अलग बोर्ड संस्करणों के लिए सॉफ्टवेयर अलग-अलग नहीं होता है, लेकिन तब बोर्ड संस्करण मुझे बहुत अच्छा लगता है। संभव के रूप में माइक्रोकंट्रोलर के सॉफ़्टवेयर के कुछ संस्करण हैं, आदर्श रूप से सिर्फ एक। प्रत्येक भिन्न संस्करण लॉजिस्टिक समस्याओं का कारण हो सकता है।

EEPROM कोड एक अच्छा विचार है, क्योंकि यह बहुत सारे अलग-अलग बोर्ड कोडों की अनुमति देता है , लेकिन इसे अलग डिवाइस में माइक्रोकंट्रोलर से बाहर निकालते हैं। EEPROM बड़ी क्षमताओं (फ्लैश की तुलना में प्रति बिट अधिक महंगा) के लिए महंगा है, लेकिन कुछ बाइट्स के लिए आप उन्हें सस्ते में पा सकते हैं। यह एक 100 में केवल 16 सेंट है और केवल 1 I / O लाइन की आवश्यकता है।

त्रुटियों की संभावना को कम करने का एक तरीका प्रत्येक बोर्ड संस्करण के लिए एक अलग पैकेज है। तो SEP-23 में एक संस्करण संख्या 1 के साथ EEPROMs का एक बैच प्रोग्राम किया गया है, MSOP में अगला संस्करण 2, आदि। तब आपके पास संस्करण 2 बोर्ड पर एक संस्करण 1 EEPROM नहीं हो सकता है।


धन्यवाद। यह एक बेवकूफी भरा सवाल हो सकता है, लेकिन मुझे EEPROMs के एक बैच को बोर्ड पर रखने से पहले कैसे प्रोग्राम किया जाए? मुझे टेप से EEPROMS लेने, उन्हें प्रोग्राम करने, उन्हें टेप पर वापस रखने और पीसीबी कोडांतरक को टेप भेजने की सुविधा नहीं है।
8

@ मॉर्टेन - आपका सप्लायर आपके लिए ऐसा कर सकता है। आप उन्हें अपनी फ़ाइल (एक बाइट :-)) भेजते हैं और आपको अपनी पसंद के अंकन के साथ चिह्नित किए गए पुर्जे वापस मिल जाते हैं। लागत बैच के आकार पर निर्भर करेगी; आपके पास प्रति भाग एक निश्चित लागत + एक लागत होगी। हमने एक बार गणना की अगर यह स्वयं प्रोग्रामिंग करने के लिए सस्ता नहीं होगा, लेकिन हजारों के लिए किसी भी मामले में यह इसके लायक नहीं था।
स्टीवनव सिप

4

एक विकल्प जो केवल दो डिजिटल पिन का उपयोग करेगा वह कुछ इस प्रकार है:

सर्किट आरेख

R1 और C1 मानों को बदलकर आप संधारित्र के लिए अलग-अलग चार्ज समय रख सकते हैं जिसे आप हार्डवेयर संस्करण निर्धारित करने के लिए माप सकते हैं।


अहा, बहुत चालाक समाधान :-)
मोर्टेन

2

यदि पता बस में कोई अप्रयुक्त स्थान है तो आप बस पर एक ROM रजिस्टर रख सकते हैं जिसे MCU द्वारा पढ़ा जा सकता है। रजिस्टर में हार्डवेयर का वर्जन नंबर होगा। जब MCU उस पते से पढ़ता है तो रजिस्टर डेटा बस में उसका मूल्य लिख देगा। रजिस्टर को बोर्ड पर हार्डवॉयर किया जा सकता है या यदि आप अपने नंगे हाथों से संस्करण संख्या को बदलने में सक्षम होना चाहते हैं तो आप पिन बना सकते हैं जो कि आप अभी कर रहे हैं / नीचे बंधे जा सकते हैं।


शायद मैं स्वयं EEPROM के पते का उपयोग कर सकता हूं ... प्रश्न को संपादित करें देखें।
मोर्टन

ठीक। पता नहीं वहाँ एक I2C बस थी। हो सकता है कि आप बस एक छोटा I2C गुलाम बना सकते थे जो MCU से पढ़ते समय संस्करण संख्या को वापस पढ़ता है।
ट्रैविसबार्टले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.