पृष्ठभूमि
मैं एक ऐसी परियोजना विकसित कर रहा हूं जिसके लिए मामूली माइक्रोकंट्रोलर स्पेक्स की आवश्यकता होगी:
- 8 12-बिट, 10kHz ADCs
- 1kB की रैम
- 48-QFN या छोटे पदचिह्न
- 20kbps डेज़ी-चेनेबल शोर-प्रतिरोधी और त्रुटि-सुधार संचार प्रोटोकॉल
सिग्नल प्रोसेसिंग आवश्यकताएं काफी कम हैं, और अधिकांश को सिस्टम में मास्टर प्रोसेसर में निर्यात किया जा सकता है। पहले तीन चश्मा मिलना आसान है, और मात्रा में $ 2 से कम के लिए किया जा सकता है। हालाँकि, संचार बहुत ही शोरगुल वाले वातावरण में हो रहा होगा, इसलिए लिन और I2C जैसे शोर-कमजोर नेटवर्क बाहर हैं। लिन के खिलाफ एक अतिरिक्त तर्क यह है कि मैं पूरी चीज को 5V या 3.3V पर चलाना चाहता हूं, और लिन ट्रांसीवर्स को 12V की आवश्यकता होती है, और इसलिए प्रति सेंसर बोर्ड को अतिरिक्त नियामक या तार की आवश्यकता होगी। मैंने शुरू में इस कार्य के लिए CAN चुना। हालाँकि, CAN नियंत्रक काफी लागत जोड़ सकते हैं, और मुझे उत्सुकता है अगर यह सॉफ्टवेयर में किया जा सकता है।
कैन फिजिकल लेयर
CAN विनिर्देश OSI नेटवर्क संदर्भ मॉडल के डेटा लिंक और भौतिक परतों को परिभाषित करता है। कई सस्ती 8-पिन ICs, जैसे NXP TJA1040 / 50 , मैक्सिम MAX3058 / 59 , माइक्रोचिप MCP2551 , और TI SN65HVD1050 भौतिक परत को लागू करने के लिए मौजूद हैं। डी / ए कन्वर्टर्स या ऑप-एम्प्स के साथ भौतिक परत को लागू करना मुश्किल होगा, यदि असंभव नहीं है, तो ये आईसी $ 1 के लायक हैं या इसलिए कि उनकी लागत है।
डेटा लिंक / प्रोटोकॉल लेयर कर सकते हैं
डेटा लिंक लेयर के लिए, कुछ माइक्रोकंट्रोलर मूल UART, I2C और SPI संचार परतों पर CAN प्रोटोकॉल मॉड्यूल जोड़ सकते हैं। हालांकि, ये मूल चिप्स की तुलना में काफी अधिक महंगे हैं।
कैन प्रोटोकॉल मॉड्यूल की लागत की जांच
इस दावे को प्रमाणित करने के लिए, कैन और नॉन-कैन संस्करणों में कुछ लोकप्रिय माइक्रोसे हैं:
- ATmega16 - ATMEGA16M1 (CAN के साथ): $ 3.87, ATMEGA168A (कोई CAN): $ 3.23
- dsPIC - DSPIC33FJ64MC802 (CAN के साथ): $ 6.14, DSPIC33FJ64GP202 (कोई CAN नहीं): $ 5.48
- PIC18 - PIC18F2480 (CAN के साथ): $ 6.80, PIC18F24J10 (कोई CAN नहीं): $ 2.10
- Cortex-M3 - STM32F103C4T6A (CAN के साथ): $ 6.50, STM32F100C4T6B (कोई CAN नहीं): $ 2.73
निष्पक्ष होने के लिए, मैंने केवल माइक्रोकंट्रोलर्स की तुलना समतुल्य मेमोरी आकारों के साथ की है, हालांकि, गैर-कैन संस्करण के कई छोटे मेमोरी साइज़ कम के साथ उपलब्ध हैं। माइक्रो कैन MCP2515 की तरह बाहरी कैन नियंत्रक लगभग $ 2 हैं, इसलिए यदि आपके पास विकल्प है तो यह कैन को माइक्रोकंट्रोलर में एकीकृत करने के लिए अधिक लागत प्रभावी है।
दिलचस्प बात यह है कि ATmega का हिस्सा Digikey की इनवेंटरी में सबसे सस्ता CAN से लैस हिस्सा है।
CAN प्रोटोकॉल लेयर का कार्य
DsPIC माइक्रोकंट्रोलर्स में पाया जाने वाला CAN मॉड्यूल निम्नलिखित कार्य करता है:
कैन बस मॉड्यूल में एक प्रोटोकॉल इंजन और संदेश बफ़रिंग / नियंत्रण होता है। CAN बस में संदेश प्राप्त करने और प्रसारित करने के लिए CAN प्रोटोकॉल इंजन सभी कार्यों को संभालता है। संदेश पहले उपयुक्त डेटा रजिस्टर लोड करके प्रेषित किए जाते हैं। उपयुक्त रजिस्टरों को पढ़कर स्थिति और त्रुटियों की जाँच की जा सकती है। CAN बस में पाए गए किसी भी संदेश को त्रुटियों के लिए जांचा जाता है और फिर फ़िल्टर के विरुद्ध यह देखने के लिए मिलान किया जाता है कि क्या यह प्राप्त किया जाना चाहिए और प्राप्त रजिस्टरों में से एक में संग्रहीत किया जाना चाहिए।
सॉफ्टवेयर में यह काफी उल्लेखनीय है।
प्रश्न
क्या एक सॉफ्टवेयर प्रोटोकॉल लेयर का उपयोग केवल एक सस्ता UART से लैस माइक्रोकंट्रोलर और CAN ट्रांसीवर के साथ कर सकते हैं? यदि हां, तो क्या कोई ओपन-सोर्स कार्यान्वयन मौजूद है?
वैकल्पिक रूप से, क्या कस्टम प्रोटोकॉल को लागू करने के लिए UARTs के साथ ट्रांसीवर का उपयोग किया जा सकता है? मैं सिंगल-मास्टर टोपोलॉजी के साथ ठीक हूं; मैं समझता हूं कि कस्टम प्रोटोकॉल में सही होने के लिए मध्यस्थता कठिन हो सकती है।