আই 2 সি ঠিকানা সংঘর্ষ কীভাবে সমাধান করবেন?


39

আমি একাধিক আই 2 সি ক্রীতদাস ডিভাইসগুলিকে একই সেট পিনের সমস্ত মাইক্রো নিয়ামকের সাথে সংযুক্ত করতে চাই তবে I2C ডিভাইসগুলি একই ঠিকানাটি ভাগ করে দেয়। ঠিকানাগুলি হার্ডওয়্যারে স্থির হয়।

একই ঠিকানার সাথে একাধিক ডিভাইস সংযোগ করার কোনও উপায় আছে কি?

একটি কনফিগারযোগ্য ঠিকানা সহ প্রতিটি ডিভাইসের সাথে সম্ভবত কোনও ধরণের আই 2 সি ঠিকানা অনুবাদ মডিউল রয়েছে যাতে আমি প্রত্যেকে নিজের নিজের ঠিকানা নির্ধারণ করতে পারি।

উত্তর:


24

এটি করার জন্য আই 2 সি-তে অন্তর্নির্মিত কিছু নেই, সাধারণত দাস ডিভাইসগুলিতে কিছু এক্সটার্নাল পিন থাকে যা এই সমস্যাটি এড়াতে কয়েকটি ঠিকানা বিট টগল করতে 0 বা 1 সেট করা যেতে পারে। বিকল্পভাবে আমি কয়েকটি প্রস্তুতকারকের সাথে ডিল করেছি যেগুলির একটি অংশের জন্য 4 বা 5 অংশ সংখ্যা রয়েছে, কেবলমাত্র পার্থক্যই এর আই 2 সি ঠিকানা।

বেশিরভাগ ডিভাইসে নির্দিষ্ট হার্ডওয়্যার থাকে যা আই 2 সি যোগাযোগ পরিচালনা করে, এটি হ'ল দাস এসি হার্ডওয়ারে রয়েছে যাতে আপনি সত্যিকার অর্থে এটি হ্যাক করতে পারবেন না।

অনুবাদ মডিউল হিসাবে, আপনি 2 আই 2 সি বাসের সাথে কিছুটা 0.50 ডলার পিআইসি কিনতে পারেন এবং আমার অনুমান অনুসারে ঠিকানা অনুবাদক হিসাবে কাজ করার জন্য কিছু দ্রুত কোড লিখতে পারেন।


ধন্যবাদ। হ্যাঁ, এই ডিভাইসগুলির একটি ঠিকানা নির্বাচন আছে, তবে কেবল দুটি ঠিকানার মধ্যে এবং আমি 5+ ডিভাইস সংযোগ করতে চাই, তাই আমি এখনও সংঘর্ষের সাথে শেষ করব। আমি পিআইসি ব্যবহার করার কথা ভাবি নি। এটা কাজ করা উচিত। এই ধরণের জিনিসটি করে এমন কোনও তাক নেই?
সাইমন পি স্টিভেন্স

11
এনএক্সপি আই 2 সি এর জন্য একগুচ্ছ মাল্টিপ্লেক্সার / সুইচ তৈরি করে, আপনি সেগুলির মধ্যে থেকে কিছু ছড়িয়ে দিতে সক্ষম হতে পারেন : উদাহরণস্বরূপ আপনি আপনার ক্ষেত্রে 3 সাব শাখা তৈরি করতে পারেন, যার প্রতিটিটিতে 2 টি ডিভাইস রয়েছে , এবং আপনার লক্ষ্য অর্জনের জন্য NXP এর একটি সুইচ ব্যবহার করুন।
চিহ্নিত করুন

দুর্দান্ত, আমি ঠিক সেই ধরণের জিনিস খুঁজছিলাম। আমি শুধু নাম জানতাম না। ধন্যবাদ।
সাইমন পি স্টিভেন্স

এই উত্তরটি 7 বছরের পুরনো, সুতরাং আমি বিশ্বাস করি যে এটি যখন দেওয়া হয়েছিল তখন এটি সবচেয়ে ভাল হতে পারে। তবে এখন অন্যদের মধ্যে আসার জন্য, কিছু নতুন উত্তর (বর্তমানে তালিকার নীচে নীচে অবস্থিত) বাজারে আসা নতুন উপাদানগুলির উপর ভিত্তি করে সম্ভাব্য আরও ভাল পদ্ধতির প্রস্তাব দেয়।
ব্রিক

6

আমি ঠিক একটি নির্দিষ্ট ঠিকানা সহ একাধিক আই 2 সি ডিভাইস নিয়ে এই সমস্যাটি চালিয়েছি। আমাদের সমাধানটি হ'ল মাইক্রোকন্ট্রোলারে আই / ও লাইনগুলি ব্যবহার করার জন্য এসডিএ লাইনগুলি যে ডিভাইসগুলিতে আমরা সম্বোধন করতে চাই না তার উপর জোর দেওয়া হয় , যখন আমরা যে ডিভাইসটিকে লক্ষ্য করছি তার আই / ও লাইনটি ইনপুট হিসাবে সেট করা হয়েছে (উচ্চ প্রতিবন্ধকতা) )। এর অর্থ হ'ল কেবলমাত্র লক্ষ্যযুক্ত ডিভাইসই এর আই 2 সি ঠিকানার সাথে মেলে এবং অন্যরা পরবর্তী কোনও ডেটা উপেক্ষা করে।

একই ঠিকানা সহ একাধিক আই 2 সি ডিভাইস

নিষ্ক্রিয় ডিভাইসগুলির জন্য এসডিএ লাইনের প্রতিরোধকগুলি বাসের জন্য পুল-আপ হিসাবে অভিনয় করে, সুতরাং আপনার কত ডিভাইস রয়েছে এবং আপনার বাসের জন্য আপনাকে কী টানতে হবে তার উপর সঠিক মূল্য নির্ভর করবে। সুতরাং আপনি যদি 10 কে প্রতিরোধক চয়ন করেন তবে 3 টি নিষ্ক্রিয় ডিভাইস 3K3 পুলআপ দেয়।

স্কটকি ডায়োডগুলি নিশ্চিত করে যে হোস্টে ডেটা ফেরত পাঠানোর সময় ডিভাইসটি এখনও এসডিএ লাইনটিকে যথেষ্ট কম টানতে পারে।


আপনি কৃতজ্ঞ যে আপনি এটি অনুসরণ এবং পোস্ট করেছেন। এটি একটি দুর্দান্ত উদ্ভাবনী সমাধান, আমি নিশ্চিত এটি অন্যের পক্ষে সহায়ক হবে।
সাইমন পি স্টিভেনস

একটি দুর্দান্ত কুলুঙ্গি যা কিছু অ্যাপ্লিকেশনগুলিতে ব্যবহার করা যেতে পারে । আমি এটা প্রচুর পছন্দ করি.
হ্যারি স্পেনসন

5

যদি আই 2 সি ডিভাইসের কোনওটিই ক্লক স্ট্রেচিং (হ্যান্ডশেকিং) ব্যবহার না করে এবং আপনি যদি আই 2 সি মাস্টারকে কিছুটা ধাক্কা খাচ্ছেন তবে একটি সাধারণ হ্যাক হ'ল কিছু ডিভাইসটি ঘড়ি এবং ডেটা পিনগুলি স্যুপ করে। বাইট সঞ্চালনের সময়, যে ডিভাইসে ঘড়ি এবং ডেটা পিনগুলি অদলবদল করা হয় সেগুলি প্রতিটি "0" বিটকে অ-ইভেন্ট হিসাবে দেখবে (ডেটা উত্থাপন এবং কোনও ঘড়ি না দিয়েই পড়েছে) এবং প্রতিটি "1" বিটকে আই 2 সি স্টপ হিসাবে দেখবে এবং শুরু (ডেটা কম থাকাকালীন ঘড়ির উত্থান, ডেটা উত্থিত এবং পড়ার দ্বারা পতিত, তারপরে ঘড়ির পতন)। একটি ডিভাইসের জন্য ইচ্ছাকৃত স্টপ এবং শুরুর শর্ত অন্য ডিভাইসের ডেটা বিট হিসাবে দেখা যেতে পারে, তবে "1" বিটের মধ্যে একটি ডিভাইসের অতিরিক্ত সংখ্যক স্টার্ট এবং স্টপ শর্ত না থাকলে, কোনও ডিভাইস "দুর্ঘটনাক্রমে" অপছন্দ হওয়ার সম্ভাবনা কম


6
আমি ডাউনভোটিং করছি না, তবে এটি আমার কাছে কিছুটা ঝুঁকিপূর্ণ বলে মনে হচ্ছে। আই 2 সি এর সাথে আমার অভিজ্ঞতাটি হ'ল এটি কেবলমাত্র স্বাভাবিক সংযোগের সাথে যথেষ্ট শব্দদর্শন। তবে আপনি "হ্যাক" শব্দটি ব্যবহার করেন এবং ক্যাভিয়েটটি উল্লেখ করুন "যদি আই 2 সি ডিভাইসগুলির মধ্যে কেউ ক্লক স্ট্রেচিং ব্যবহার না করে", তবে যদি এটি কারওর জন্য কাজ করতে পারে তবে তাদের কাছে আরও শক্তি power
জেসন এস

5

আমি বিবাদী ঠিকানা সহ ডিভাইসগুলির মধ্যে আই 2 সি বাসের মাল্টিপ্লেক্সে বাস স্যুইচগুলি ব্যবহার করার বিষয়টি বিবেচনা করব । বাসের স্যুইচগুলি খুব কম ক্যাপাসিট্যান্স এবং প্রতিরোধের হয় এবং বাফার / ড্রাইভারগুলির বিপরীতে এগুলি সত্যিকারের স্যুইচ যা দুটি সার্কিট নোডকে সংযুক্ত বা সংযোগ বিচ্ছিন্ন করে।

বাস স্যুইচগুলির সাধারণত একটি স্বতন্ত্র বৈশিষ্ট্য থাকে, এটি আই 2 সি-র জন্য গুরুত্বপূর্ণ নয় কারণ এটি ওপেন-ড্রেন ডিভাইসগুলি ব্যবহার করে: 0 (Vss) এর নিকটে ভোল্টেজ একসাথে বেঁধে যখন একটি বাসের স্যুইচ কম-প্রতিরোধের থাকে, তবে ভোল্টেজের কাছে যাওয়ার সাথে সাথে প্রতিরোধ নাটকীয়ভাবে বেড়ে যায় বিদ্যুৎ সরবরাহ Vdd। (এটি কারণ তারা যখন চালু হয় তখন বিদ্যুৎ সরবরাহে গেট ভোল্টেজ সহ মূলত এমওএসএফইটি থাকে, সুতরাং স্যুইচড ভোল্টেজগুলি ভিডিডি-র কাছে যাওয়ার সাথে সাথে, উপলভ্য ভিগিজগুলি অনেক কম)


1

4

আমার দুটি টিসিএস 3414 রঙ-হালকা সেন্সর ছিল যা আমি তুলনা করতে চেয়েছিলাম (এফএন এবং সিএস প্যাকেজগুলি, যার বিভিন্ন ফিল্টার রয়েছে)। আই 2 সি ঠিকানা হার্ডওয়্যারড। এসসিএল (ঘড়ি) এবং এসডিএ (ডেটা) লাইনগুলির ক্ষেত্রে আই 2 সি কীভাবে কাজ করে তা দেখার পরে, মনে হয়েছিল যে এসডিএ লাইনটি বন্ধ করা চিপটিকে কোনও প্রারম্ভ বা স্টপ বিট পেতে বাধা দেবে এবং এইভাবে এটি সুপ্ত রাখবে। সুতরাং প্রতিটি ডিভাইসে এসডিএ লাইনটি চালু বা বন্ধ করতে একটি সিএমওএস অ্যানালগ স্যুইচ (4066 বি) ব্যবহার করেছেন। এটি দুটি ডিভাইসের মধ্যে স্যুইচ করার জন্য ঠিক কাজ করেছে। আমি জানি এটি একটি হ্যাক, এবং পিসিএ 9548 আরও ভাল হতে পারে, তবে আমার একটি হাতও নেই।


আসলে, এটি মোটেই হ্যাক নয় এবং আমি যুক্তি দেব যে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আমি এটি বেশ কয়েকটি বাণিজ্যিক পণ্যগুলিতে ব্যবহার করে দেখেছি এবং আমি এর চেয়ে ভাল সমাধানের কথা ভাবতে পারি না (যদি না আপনার কাছে জিপিআইও উপলব্ধ থাকে এবং এইভাবে আই 2 সি-নির্দিষ্ট ম্যাক্সগুলির মতো খাঁটি আই 2 সি সমাধান প্রয়োজন হয় না)। ভাল অল 'অ্যানালগ ম্যাক্সগুলিতে প্রচুর পরিমাণে ব্যান্ডউইথ থাকে এবং ক্রেজি-সস্তার হয়।
জে কার্লসন

4

এখন একটি উত্তর আছে- লিনিয়ার টেকের ঠিকানা অনুবাদকদের LTC4316 / 17/18 সিরিজ রয়েছে। এগুলি তুলনামূলকভাবে নতুন এবং প্রাপ্যতা অনিশ্চিত।


খুব আকর্ষণীয় উপাদান। বেশিরভাগ আই 2 সি ডিভাইসের 2 টি স্থির ঠিকানা থাকে এবং এটি LTC4316 যুক্তিসঙ্গত ব্যয়ে সম্বোধনের দ্বিগুণ হতে পারে।
মেহরাদ

4

বেশ কয়েকটি নির্মাতারা আই 2 সি বাস মাল্টিপ্লেক্স- এবং স্যুইচ আইসি সরবরাহ করে।

একটি ম্যাক্স একবারে একটি চ্যানেল সক্রিয় করতে পারে; একটি সুইচ সমান্তরাল একাধিক বেশী সক্ষম করতে পারে।

উদাহরণস্বরূপ এনএক্সপি , টিআই এবং ম্যাক্সিমের অফারগুলি পরীক্ষা করুন ।

পরীক্ষার জন্য, অ্যাডাফুর্টের একটি টিসিএ 9548a বোর্ড রয়েছে

আপনার যদি অভিন্ন ঠিকানার সাথে 8 টি টার্গেট চিপস থাকে তবে 8-থেকে-এক MUX নির্বাচন করুন। টার্গেট চিপগুলির কোনও অ্যাক্সেস করার আগে সঠিক I2C বাস সক্রিয় করতে MUX কনফিগার করুন।

সুবিধাদি

  • কোনও প্রোগ্রামিং প্রয়োজন নেই (বনাম মাইক্রোকন্ট্রোলার ভিত্তিক পদ্ধতির)
  • আপনার প্রয়োজনীয় আই 2 সি বৈশিষ্ট্য এবং গতি সমর্থন করতে পারে (বনাম নিয়মিত এনালগ / ডিজিটাল বাস ম্যাক্স)। উদাহরণস্বরূপ, একটি নিয়মিত (নন-আই 2 সি) এমইউএক্স এর সমস্ত চ্যানেলে সাধারণ কল ঠিকানাগুলি পাস করবে না।

-1

একটি সাধারণ ডেমাক্স চিপ ব্যবহার করুন (উদাঃ 74HC139 আফাইক) এবং ইনপুটটিতে আই 2 সি সি এল কে পিনটি সংযুক্ত করুন (যেহেতু আই 2 সি সি এল কে পিনটি কেবল আউটপুট)। পছন্দসই আউটপুট নিয়ন্ত্রণ করতে GPIO পিন ব্যবহার করুন। তারপরে আই 2 সি ডেটা পিন সব দাসের মধ্যে ভাগ করা যায়।


6
এসসিএল কেবল আউটপুট নয় । কোনও ক্রীতদাসকে এটির গতি কমিয়ে দেওয়ার প্রয়োজনে ঘড়িটি প্রসারিত করতে পারে ।
স্টিভেনভ

আপনি একটি অ্যানালগ মাল্টিপ্লেক্সার (যা দ্বি নির্দেশমূলক) ব্যবহার করতে পারেন তবে স্টিভেনের দ্বারা বর্ণিত কারণে কোনও ডিকোডার কাজ করতে পারে না। আপনি যদি মাল্টিপ্লেক্সার ব্যবহার করেন তবে এটি সক্রিয় অবস্থায় রয়েছে তা নিশ্চিত করার জন্য আপনার স্লেভ পাশের একটি দুর্বল পাল্পের প্রয়োজন হবে। এছাড়াও বাসটি নিষ্ক্রিয় থাকলে কেবল মাল্টিপ্লেক্সার নির্বাচনটি পরিবর্তন করুন।
কেভিন হোয়াইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.