قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-08-2012, 01:29 PM المشاركة 1   
افتراضي الميكروسى والاتصال عن طريق الدائرة البينية - المتكاملة I2C Inter-Integrated Circuit Twitter FaceBook Google+



الميكروسى والاتصال عن طريق الدائرة البينية - المتكاملة I2C Inter-Integrated Circuit




المرجع :

نظام I2C هو واجة ربط متسلسلة لمسافة قصيرة والتى تتطلب ناقل ذو خطين فقط لنقل البيانات . ولقد أخترعت من قبل شركة فيليبس عام 1980 , وذلك لتوفير اتصالات سهلة باللوحة المطبوعة بين وحدة المعالجة المركزية CPU ورقائق الطرفيات المختلفة فى جهاز التليفزيون . اليوم يتم استخدامها على نطاق واسع فى أنواتع متعددة من الأنظمة المدمجة لربط الأجهزة الطرفية ذات السرعة المنخفضة ( الذاكرات EEPROMs الخارجية وأجهزة الاستشعار الرقمية ومشغلات وحدات العرض LCD ..ألخ ) بالمتحكم الرئيسى .
سوف نتناول لمحة عامة عن بروتوكول I2C وتنفيذه فلا الميكروكونترولر PIC وطريقة توصيل جهاز مفرد أو عدد من الأجهزة بناقل I2C مشترك . سوف نوضح هذه التقنية بتوصيل 2 دائرة متكاملة EEPROM نوع (24LC512) وجهاز الاستشعار بالحرارة (DS1631) مع الميكروكونترولر PIC18F2550 .





مبدأ العمل :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-08-2012, 01:34 PM المشاركة 2   
افتراضي


مبدأ العمل :
نظام الناقل I2C له خطين : خط البيانات التسلسلية SDA وخط الساعة التسلسلية SCL . أى بيانات ترسل من أحد اتلأجهزة إلى الجهاز الآخر تمر خلال خط البيانات التسلسلية SDA , فى حين أن خط الساعة التسلسلية يوفر ساعة التزامن اللازمة لنقل البيانات . الأجزة الموجودة على الناقل I2C إما أن تكون "سيد" Masters (ماستر) أو "تابع" Slaves. فقط الجهاز الماستر هو الذى يمكنه بدء نقل البيانات بينما التابع يستجيب للماستر . من الممكن أن يكون لدينا أجهزة ماستر متعددة على نفس الناقل المشترك , ولكن جهاز ماستر واحد فقط يمكن أن يكون فعال فى زمن معين . خط الساعة SCL دائما يتم قيادته عن طريق الماستر . سوف نتناول حالة جهاز ماستر واحد وهو الميكروكونترولر PIC18F2550. الشكل التالى يبين ناقل I2C بماستر مفرد وثلاثة توابع . التوابع لا يمكنها أبدا بدء نقل البيانات ولكنها يمكنها نقل البيانات عبر الناقل I2C ودائما يكون ذلك تحت سيطرة الماستر .

كل من الخط SCL والخط SDA ذات دوائر قيادة بمصب مفتوح open drain drivers , وبالتالى يتم توصيلها بالجهد الموجب للمصدر من خلال مقاومات سحب لأعلى pull-up resistors . وهذا يعنى أن أجهزة I2C يمكنها فقط سحب الخط لأسفل ولكن لا يمكنها جعله مرتفعا . عندما لا يقوم أى جهاز بسحب الخط فسوف يكون هذا الخط طافيا لأعلى float high من خلال مقاومة السحب لأعلى . وهذا هو السبب فى أهمية مقاومات السحب فى نظام I2C . المخارج ذات المصب المقتوح فى أجهزة I2C تساعد فى تنفيذ وظيفة AND بالناقل . يمكن نقل البيانات بالناقل I2C بمعدل حتى 100 Kbps ( فى النظام القياسى standard) أو بمعدل 400 Kbps ( فى النظام السريع fast) أو حتى 3.4 Mbps ( فى نظام السرعة المرتفعة high-speed) .



أحوال البدء والإيقاف Start and Stop conditions

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-08-2012, 01:36 PM المشاركة 3   
افتراضي


أحوال البدء والإيقاف Start and Stop conditions
قبل القيام بأى معاملة بالناقل , يتم إصدار "شرط البدء" عن طريق الجهاز الماستر لإبلاغ جميع الأجهزة التابعة أن شيئا ما على وشك أن ينتقل على الناقل . ونتيجة لذلك , فإن جميع الأجهزة التابعة الموصلة تكون فى حالة إستماع لخط البيانات التسلسلية إنتظارا للتعليمات ( بمعنى أن الناقل مشغول) . يتم إصدار حالة البدء عن طريق سحب خط البيانات التسلسلية SDA يليه خط الساعة التسلسلية SCL . بمجرد الانتهاء من من نقل البيانات يقوم الجهاز الماستر للناقل بإرسال "حالة الإيقاف" (الانتهاء) لإبلاغ الأجهزة الأخرى بالرغبة فى الإفراج (تحرير) عن الناقل (بمعنى أن الناقل غير مشغول) . الإشارات المستخدمة فى حالة الإيقاف هى تحرير خط الساعة SCL يليه تحرير خط البيانات SDA .
تذكر أنه عندما يتم تحرير الخطوط , فإنها تكون طافية لأعلى بسبب مقاومات السحب لأعلى . وهكذا فإن تتابع البدء والإنتهاء يعتبر بمثابة إشارة أو علامة لبداية ونهاية التعامل مع الجهاز التابع .

عنونة أجهزة الناقل I2CI2C device addressing :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-08-2012, 01:38 PM المشاركة 4   
افتراضي


عنونة أجهزة الناقل I2CI2C device addressing :
كل جهاز متصل بالناقل I2C يكون قابل للعنونة برمجيا عن طريق عنوان منفرد ذو 7 بت 7-bit أو 10 بت 10-bit . استخدام العنوان ذو 10 بت غير شائع وبالتالى لن يتم تناوله هنا.
البايت الأول الذى يرسل بعد حالة البدء يعرف ببايت التحكم Control byte . السبعة بتات الأولى لبايت التحكم تشكل عناويت الأجهزة التابعة , فى حين أن البت الثامن (LSB) هو بت اتجاه البيانات (R/W) : عندما يكون هذا البت بصفر فهذا يشير على أن الجهاز الماستر سوف "يكتب" معلومات إلى الجهاز التابع المختار ( بالسبعة بتات الأولى) , وعندما يكون هذا البت بواحد فهذا يشير على أن جهاز الماستر سوف "يقرأ" البيانات من الجهاز التابع المختار . فى أجهزة السبعة بت , عادة تكون الأربعة بتات الأولى ثابتة fixed , ويتم تعيين الثلاثة بتات التالية عن طريق أطراف عناوين الأجهزة (A0, A1, A2) وهذا يسمح للمستخدم بتعديل عناوين ناقل I2C بما يصل حتى ثمانية من نفس الأجهزة بالعمل على الناقل I2C . هذه الأطراف يتم حفظها فى الحالة المرتفعة عن طريق VCC أو الحالة المنخفضة عن طريق الأرضى GND .



عندما يتم إرسال بايت التحكم , فإن كل جهاز بالنظام يقارن السبعة بتات الأولى المستقبلة مع عنوانه . إذا تطابقا , فإن الجهاز يعتبر نفسه موجه بواسطة (تحت أمر) الجهاز الماستر ليكون إما " مستقبل – تابع "
slave-receiver أو " مرسل- تابع " slave-transmitter وهذا يتوقف على قيمة بت اتجاه البيانات (البت الثامنة) .


نقل البيانات Data transfer :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 28-08-2012, 11:02 PM المشاركة 5   
افتراضي


نقل البيانات Data transfer :
كل بايت يوضع على خط البيانات SDA يجب أن يكون بطول 8 بتات 8-bits . ترسل البيانات على خط البيانات SDA بدءا بالبت الأكثر أهمية(MSB) أولا وينتج خط الساعة SCL ساعة التزامن . تعتبر البيانات على الخط SDA صالحة (صحيحة) عندما يكون الخط SCL فى الحالة المرتفعة , وبالتالى يجب أن تستقر البيانات خلال فترة الحالة المرتفعة للساعة . الحالة المرتفعة أو المنخفضة لحالة خط البيانات يجب أن تتغير عندما تكون الإشارة على الخط SCLفى الحالة المنخفضة . هذه هى طريقة توقيت عمل كل بت :



إذا كان الجهاز التابع ليس فى وضع يمكنه من استقبال أو إرسال بايت كامل من البيانات حتى يؤدى مهمة أخرى , على سبيل المثال خدمة مقاطعة داخلية , فإنه يمكنه بالحفاظ على الخط SCL منخفضا لإجبار الجهاز الماستر على حالة الانتظار . يستمر نقل البيانات عندما يكون الجهاز التابع جاهزا لبايت آخر من البيانات ويحرر خط الساعة .
دائما يتم إنهاء عملية نقل البيانات بحالة الإنهاء التى تتولد عن طريق الجهاز الماستر . ومع ذلك , إذا رغب الجهاز الماستر فى البقاء بالاتصال بالناقل , فيمكنه توليد "حالة تكرار- البدء" وعنونة جهاز تابع آخر دون أن يولد حالة الإيقاف أولا .

التسلم (الإشعار بالاستلام أو المعرفة) Acknowledgment :
عادة يتم إلزام المستقبل الذى تمت عنونته بتوليد إشارة "إستلام" acknowledge (ACK) بعد كل بايت يتم استقباله . تحدث إشارة الاستلام بعد نقل البت الثامنة لأى تعامل . خلال تلك الحالة يجب على المرسل تحرير الخط SDA للسماح للمستقبل بقيادته . يقوم المستقبل بقيادة إشارة SDA للحالة المنخفضة للدلالة على استلام البايت . إذا لم يقم المستقبل بقيادة الخط SDA للحالة المنخفضة , فإن الحالة تكون حالة عدم إستلام no-acknowledge (NACK) ويتم إلغاء (إجهاض) العملية . إذا كان البايت المرسل هو بايت التحكم (slave address + R/W bit) , عند ذلك فقط الجهاز التابع الذى له عنوان متطابق سوف يستجيب بإشارة الاستلام .





الآن دعنا نناقش كيف يمكن لهذه العملية بمختلف تسلسلها فى العمل أن تحدث أثناء اتصال الميكروكونترولر PIC18F2550 مع الذاكرة 24LC512 EEPROM و مستشعر درجة الحرارة DS1631 من خلال الناقل I2C . الوحدة أو الموديول MSSP (Master Synchronous Serial Port) بالميكروكونترولر PIC18F2550 يسمح بالاتصالI2C خلال طرفى الدخل / الخرج RB0/SDA (21) وRB1/SCL (22) .
لن يتم هنا مناقشة تفاصيل عمل هذه الوحدة بسبب استخدم المترجم ميكروسى الذى يوفر روتينات لمكتبة الاتصال I2C .

الدائرة المتكاملة للذاكرة التسلسلية Serial EEPROM (24LC512) :


الدائرة المتكاملة 24LC512 هى ذاكرة EEPROM تسلسلية من شركة ميكروشيب بسعة 64K x 8 (512 Kbits) , متوافقة مع الاتصال I2C . الأربعة بتات الأولى من السبعة بتات الخاصة بالعنوان لهذه الشريحة يتم تحديدها بالشكل ’1010′ . الثلاثة بتات التالية قابلة للبرمجة من خلال أطرافها A0, A1, A2 . على سبيل المثال ,للجهاز 24LC512 عندما يكون A0 بالمنطق المرتفع ومع توصيل الأطراف A1-A2 بالأرضى فسوف يكون لدينا عنوان من السبعة بتات التالية ’1010001′ . وهذا التخطيط يسمح بعنونة ثمانى أجهزة متشابهة كحد أقصى على نفس الناقل I2C .
عملية كتابة البايت Byte Write operation :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 29-08-2012, 12:34 AM المشاركة 6   
افتراضي


عملية كتابة البايت Byte Write operation :
لعملية كتابة بايت يتطلب 2 بايت من العناوين لاختيار واحد من أصل 65536 موقع فى ذاكرة EEPROM . الجهاز الماستر يوفرهما بعد إرسال بايت التحكم . الشريحة 24LC512 تستجيب بنبضة التسلم (كتوقيع بالتسلم) acknowledge بعد استقبال كل بايت للعنوان . بعد ذلك يرسل الماستر بايت البيانات المطلوب كتابته بالذاكرة . عند استلام (استقبال) هذه البيانات ترسل الشريحة 24LC512 نبضة التسلم . عندئذ يقوم الماستر بإنهاء نقل البيانات عن طريق إصدار حالة الإيقاف .




عملية كتابة صفحة Page Write operation :
لتقليل زمن دورة الكتابة , تقدم الشريحة 24LC512 ميوزة كتابة صفحة , والتى تسمح بالكتابة فى وقت واحد حتى 128 بايت متجاورة . يتم بدء كتابة الصفحة بنقس طريقة كتابة البايت , ولكن بدلا من توليد حالة الإيقاف , يقوم الماستر بإرسال حتى 127 بايت إضافى , والتى تخزن مؤقتا فى المخزن المؤقت للصفحة بالشريحة on-chip page buffer وسوف يتم كتابتها بالذاكرة بعد أن يرسل الماستر حالة الإيقاف .



عملية القراءة Read operation :
بدء عملية القراءة تتم بنفس الطريقة مثل عملية الكتابة باستثناء أنه يتم تعيين البت R/W ابايت التحكم بواحد ‘1’ . الشريحة 24LC512 تسمح بثلاثة أنواع أساسية من عمليات القراءة : قراءة العنوان الحالى , والقراءة العشوائية والقراءة المتسلسلة (المتتابعة) .
داخليا , تحتوى شريحة EEPROM على عداد عناوين والذى يحفظ عنوان آخر كلمة وصلت , ويتزايد بواحد . ولذلك , كانت القراءة التى وصلت سابقا previous كانت للعنوان ‘n’ فإن العنوان الحالى لعملية القراءة يجب أن يصل للبيانات من العنوان n + 1 . عند استلام بايت التحكم مع تحديد البت R/W بواحد فإن EEPROM تصدر إشارة التسلم وترسل بايت البيانات للعنوان الحالى . الماستر سوف لا يتسلم عملية النقل لكن يولد حالة الإيقاف التالية وتوقف EEPROM الإرسال .





عمليات القراءة العشوائية تسمح للماستر بالوصول لأى موقع ذاكرة بطريقة عشوائية . لتنفيذ هذا النوع من عمليات القراءة , لابد أولا من تحديد عنوان الكلمة . يتم ذلك عن طريق بإرسال عنوان الكلمة للشريحة 24LC512 كجزء من عملية الكتابة ( تحديد البت R/W بصفر ) . بعد إرسال عنوان الكلمة , يولد الماستر حالة "تكرار البدء" تلى التسلم . وهذا ينهى عملية الكتابة . عندئذ يصدر الماستر بايت التحكم مرة أخرى ولكن مع تحديد البت R/W بواحد . عندئذ سوف تقوم EEPROM بإصدار التسلم وترسل بيانات8-bit للكلمة . الماستر سوف لا يتسلم النقل ولكن يولد حالة الإيقاف والتى تتسبب فى أن يوقف EEPROM الإرسال .
يتم بدء القراءة التتابعية عن طريق إما العنوان الحالى أو قراءة العنوان عشوائيا . بعد استقبال البايت الأول من 24LC512 , يصدر الماستر التسلم بدلا من حالة الإيقاف المستخدمة فى العنوان الحالى أو اقراءة العشوائية . هذا التسلم يوجه 24LC512 لإرسال الكلمة 8 بت التالية بالعنوان التتابعى . بعد إرسال آخر بايت إلى الماستر , فإن الماستر سوف لا يولد تسلم , لكن يولد حالة إيقاف .




حماية الكتابة Write Protect (WP) :
الطرف رقم 7 بالشريحة 24LC512 هو مدخل حماية الكتابة . إذا تم ربط هذا الطرف بالجهد الموجب Vcc , فإن ذلك يحول دون عمليات الكتابة ولكن عمليات القراءة لا تتأثر . هنا سوف نوصل هذا الطرف بالأرضى .
الناقل I2C لمستشعر درجة الحرارة (DS1631) :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 29-08-2012, 12:23 PM المشاركة 7   
افتراضي


الناقل I2C لمستشعر درجة الحرارة (DS1631) :
الشريحة DS1631 هى مقياس رقمى لدرجة الحرارة توفر 9, 10, 11, or 12-bit ( حسب اختيار المستخدم) لقياس درجة الحرارة فى المدى -55 °C to 125 °C . الدقة الافتراضية عند توصيل القدرة هى 12-bit , والمقابلة لتزايد فى درجة الحرارة قدره 0.0625 °C . يتحقق الاتصال مع DS1631 من خلال واجهة الناقل I2C وثلاثة أطراف للعنونة (A0, A1, and A2) بما يسمح لثمانى أجهزة بالاتصال بنفس الخطين للناقل . العنوان ذات السبع بتات لكل جهاز تابع هى 1 0 0 1 A2 A1 A0 حيث A0, A1, and A2 هى اختيارات المستخدم من خلال أطراف الدخل المناظرة .





قياس درجة الحرارة Temperature measurement :
أوصى بقراءة الداتا شيت الخاصة بالشريحة DS1631 للاطلاع على تفاصيل بناؤها وعملية تحويل درجة الحرارة . هنا , سوف نتناول فقط نظام الطلقة (الدفعة) الواحدة one-shot mode لتحويل درجة الحرارة . لنفترض , أن الجهاز تم توصيله بالقدرة للتو , وأن دقة التحويل محددة بقيمة 12-bit . فى نظام الطلقة الواحدة يبدأ المستشعر DS1631 بتحويل درحة الحرارة إلى كلمة رقمية مكونة من 12-bit بعد استقبال بايت الأمر , 51h , من الماستر .وهو ما يعرف بأم بدء تحويل درجة الحرارة Start Convert T . بعد التحويل يتم تخزين درجة الحرارة الرقمية كعدد فى شكل 16-bit two’s complement فى سجلى درجة الحرارة المكونة من 2 بايت : TH و TL كما فى الشكل . بت الإشارة Sign bit (S) تشير إلى ما إذا كانت درجة الحرارة موجبة (S=0) أو سالبة (S=1) .








يمكن للماستر قراءة بيانات درجة الحرارة من DS1631 عن طريق إرسال أمر قراءة درجة الحرارة
Read Temperature (AAh) . بعد استقبال التسلم ACK استجابة للأمر , يجب أن يولد الماستر حالة تكرار البدء يليها بايت التحكم بعنوان نفس التابع كما فى بايت التحكم الأول . مع ذلك , هذه المرة البت R/W يجب أن تكون بواحد , والتى تخبر DS1631 بأنه يتم إجراء "قراءة" . يرسل DS1631 التسلم ACK كاستجابة لبايت التحكم هذا , ويبدأ فى إرسال البيانات المطلوبة فى دورة الساعة التالية . لقراءة 2 بايت
(TH and TL registers) , يجب أن يستجيب الماستر لبيانات أول بايت بالتسلم ACK ولمعلومات ثانى بيانات بعدم التسلم ACK متبوعة بحالة إيقاف . إذا كان هناك حاجة فقط لبيانات البايت الأكثر أهمية , عندئذ يمكن للماستر أن يصدر عدم التسلم NACK متبوعة بحالة إيقاف بعد قراءة بيانات أول بايت




الدائرة الكهربية :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 29-08-2012, 11:02 PM المشاركة 8   
افتراضي


الدائرة الكهربية :
الشكل التالى يوضح الدائرة الكهربية . يوجد ذاكرة تسلسلية 2 EEPROMs (24LC512) و مستشعر لدرجة الحرارة DS1631 متصلة على ناقل I2C مشترك . يتم تجنب الصراع conflict بين بين شريحتى الذاكرة EEPROMs بتوصيل الطرف A0 لأحدهما بالأرضى والطرف A0 للثانى بالجهد Vcc . عناوين الثلاثة أجهزة مبينة بالشكل . المقاومتين 10 K هى مقاومات السحب لأعلى لخطى الناقل I2C . خط البيانات SDA وخط الساعة SCL متصلان بالأطراف RB0 و RB1 للميكروكونترولر PIC18F2550 على الترتيب .

كما يتم توصيل وحدة عرض LCD لعرض عمليات القراءة والكتابة على الناقل I2C




البرنامج :

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:46 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025