Slide
Slide

مدارهای واسط سریال
نویسنده: مسئول فنی در
۰۶ خرداد ۱۳۹۳
[ آخرین به روزرسانی در ۰۶ خرداد ۱۳۹۳ ]

ارتباط سریال

در بعضی موارد از انتقال داده موازی نمی توان استفاده کرد، در این حالت از انتقال سریال استفاده می کنیم. مفهوم انتقال سریال همان مفهوم ساده ای است که شما در درس مدارهای منطقی دیده اید.
روشهای انتقال سریال متعددی وجود دارد، که غالب آن ها در AVR پیاده سازی شده است. مشکل غالب ما در استفاده از ارتباط سریال، قبل از پیاده سازی آن ها روی AVR انتخاب روش است. برای مثال از  USB,CAN Bus,TWI(I2C),SPI,RS485,RS232 کدامیک را استفاده کنیم.
در ابتدا می خواهم نگاهی کلی به این روش ها داشته باشم.  توجه داشته باشید، اینها پروتکلهای ارتباطی نیستند، بلکه بیشتر مشخصات فیزیکی و الکتریکی را مشخص می کنند.

RS232 : برای فواصل طولانی در حدود چند 100 متر قابل استفاده است. یک روش اتصال دو دستگاه به شکل زیر است. همانطور که می بینید، خط TxD دستگاه 1 به خط RxD دستگاه 2 وصل می شود و بر عکس خط TxD دستگاه 2 به خط RxD دستگاه 1 متصل می گردد و زمینها به هم وصل می شوند.

لذا RS23  به صورت باس قابل استفاده نیست. یعنی نمی توان بیش از دو دستگاه را بصورت دو طرفه وصل کرد، چرا که دو خروجی TxD را نمی توان به هم متصل کرد، چون خروجی مبدل RS232 بصورت کلکتور باز یا درین باز نیست.(Open Collector,Open Drain)

پس هر پورت RS232 برای اتصال فقط به یک پورت RS232  دیگراست. واضح است که یک TxD را می توان به چندین RxD متصل کرد، در این صورت اطلاعات یک طرفه است.

 
   
  • در صورتی که دستگاهها را بصورت زنجیری یا پشت سرهم Daisy Chain وصل کنید، می توان چندین دستگاه را به هم متصل کرد. در این روش داده بین تمام دستگاهها  دست به دست می شود، تا به مقصد برسد و اگر یک دستگاه خراب شود، ارتباط کل دستگاهها خراب می شود. در اینجا TXD فرمانده Master را به RXD فرمانبر1 Slave1 می دهید و TXD فرمانبر1 را به RXD فرمانبر2 و TXD فرمانبر2 را به ... تا به آخرین فرمانبر می رسید، حال خروجی TXD فرمانبر آخری را به RXD فرمانده وصل می کنید. در واقع یک رینگ  تشکیل می دهید. این روش توصیه نمی شود، مگر مجبور باشید.

از نظر سطوح ولتاژی برای 0 و 1 توجه داشته باشید، که مشابه TTL نیست، بلکه همانطور که در شکل زیر می بینید، منطق 0 متناظر ولتاژ 3 تا 15 ولت و منطق1  متناظر با ولتاژ 3-  تا 15- است. لذا یک AVR را نمی توان مستقیماً به یک وسیله مانند کامپیوتر که دارای پورت سریال RS232 است، وصل کرد. برای تبدیل سطوح TTL به RS232 از آی سی MAX232 استفاده می شود.

RS485 : RS485 نیز برای ارسال فواصل طولانی استفاده می شود، به دلیل ارسال داده ها به صورت دیفرانسیلی فاصله از RS232 بیشتر است. از طرف دیگر تجهیزاتی که دارای پورت RS485 هستند، به صورت باس مطابق شکل زیر به هم متصل می شوند. در کل RS485 تمام کارآیی های RS232 را دارد و فقط در برنامه نویسی باید دقت بیشتری کرد و یک پایه میکروکنترلر را برای کنترل جهت انتقال داده باید استفاده کنید. برای تبدیل سطوح TTL به RS485 از MAX485 استفاده می کنند. دستگاههای صنعتی غالباً به جای پورت RS232 پورت RS485 دارند.
برای درک عملکرد RS485 بهتر است ابتدا با مبدل MAX485 آشنا شوید.

 

آشنایی با پایه ها :

Receiver Output – RO خروجی گیرنده : این پایه به پایه RxD میکروکنترلر برای دریافت داده متصل می شود. اگر A>B به اندازه 200mV باشد، این پایه 1 می شود و اگر A<B به اندازه 200mV باشد، این پایه 0 می شود.

Driver Input – DI ورودی درایور : این پایه به پایه TxD میکروکنترلر برای ارسال داده متصل می شود. اگر به این پایه 1 داده شود، خروجی A یا Y بالا و خروجی B  یا Z مقدار پایین را میگیرد و اگر 0 بدهیم، برعکس. همانطور که می بینید، داده ها به صورت دیفرانسیلی روی خروجی های A و B قرار می گیرند. حدود ولتاژ خروجی درایور ( ارسال ) و حساسیت درایور ( دریافت ) در شکل زیر آمده است.

 

 

 

Receiver Output Enable – RE فعال ساز خروجی گیرنده : برای دریافت داده باید این پایه را 0 کنیم. اگر این پایه 1 باشد خروجی RO به حالت شناور یا امپدانس بالا (High Impedance) می رود.
Driver Output Enable – DE فعال ساز خروجی درایور : با 1 کردن این پایه خروجی های A و  B فعال می شوند و داده روی ورودی DI روی خروجی های A و B برای ارسال قرار می گیرد. اگر این پایه غیر فعال یعنی 0 باشد، خروجی های A و B به حالت شناور می روند.
حالت فعال پایه های کنترلی RE و DE برعکس هم هستند، شما می توانید دو پایه را به هم وصل و به یکی از پایه های میکروکنترلر متصل کنید. برای حالت دریافت این پایه مشترک را 0 و برای ارسال این پایه را 1 کنید.
مطابق شکل زیر شما میتوانید دهها دستگاه با خروجی RS485 را به هم به کمک یک زوج سیم متصل کنید.

چند نکته در مورد USART :

  • واحد سریال بطور سنکرون و آسنکرون برنامه ریزی می شود. پورت RS232 کامپیوتر فقط بصورت آسنکرون است.
  • در روش سرکشی برای ارسال داده جدید از بیت UDRE به جای TXC استفاده کنید، این بیت پس از RESET میکروکنترلر 1 است و مبین اینست که بافر ارسال UDR میکروکنترلر آماده دریافت داده جدید است.
  • خطای FE فقط در حالت آسنکرون رخ می دهد.
  • در موقع دریافت همواره قبل از خواندن UDR رجیستر UCSRA را بخوانید. چون خواندن رجیستر UDR باعث پاک شدن خطاها به طور خودکار می شود، و شما خطاهای احتمالی که ممکن است رخ داده باشد، را پاک می کنید.
  • برای ارسال داده سعی کنید از اطلاعات درس شبکه خود استفاده کنید. داده ها را حتماً به صورت یک فریم ارسال کنید. در زیر چند فریم نمونه آمده است.  فرمت PROFIBUS در کارخانجات و صنایع  استفاده می شود.
  • داده ها را با فرمت ASCII بفرستید، تا مشابه بقیه قسمتها نباشد.
  • FCS که عبارت چک کردن فریم است، معادل متمم 2 جمع تمام داده ها با حذف کری است .

PROFIBUS

رابط SPI

یکی دیگر از روشهای انتقال سریال واسط SPI است. این واسط سریال سنکرون است و برای فواصل کم در حد چند متر با سرعت بالا استفاده می شود. به صورت دو طرفه است. به صورت Master/Slave عمل می کند. تمام کنترل ها توسط Master انجام می شود.
شکل زیر روش انتقال داده را نشان می دهد. دو رجیستر انتقال داده به صورت زنجیری به هم متصل هستند، در زمانیکه داده، بیت به بیت از Master به Slave منتقل می شود، همزمان داده Slave نیز به Master منتقل می گردد. همانطور که می بینید، پالس کلاک توسط Master ایجاد می شود. برای تبادل داده باید پایه SS=Slave Select دستگاه Slave فعال یعنی 0 شود. از این پایه برای انتخاب دستگاه Slave در حالتیکه چندین Slave داریم، استفاده می شود.

در صورتیکه چندین Slave داشته باشید، به کمک پایه های دیگر میکروکنترلر مستقیماً و یا با استفاده از یک دیکدر می توانید Slave ها را انتخاب کنید.

همانطور که متوجه شده اید، انتخاب Slave ها به صورت سخت افزاری انجام می شود، پس در اضافه کردن دستگاه یا برد جدید، شما محدودیت دارید. در صورتیکه علاقه به استفاده از SPI دارید، بهتر است ، گسترش سیستم را از ابتدا در نظر داشته باشید و چند خروجی انتخاب فرمانبر Slave Select اضافه در نظر بگیرید.
البته Master و چندین Slave  را به صورت زنجیری نیز می توان به هم متصل کرد، که توصیه نمی شود.

واسط سریال TWI یا I2C

این واسط برای فواص کم در حد چند متر و سرعت بالا استفاده می شود.
همانطور که از نام آن پیداست، یک واسط دو سیم است. انتخاب دستگاه با آدرس دادن به صورت نرم افزاری انجام می شود و تا 128 دستگاه را می توان به هم متصل کرد.
اضافه کردن دستگاه جدی به سادگی انجام می شود. کافیست دو سیم SDA و SCL را به دستگاه جدید اضافه کنید یا  به زبان ساده باس انتقال را بدوانید.
شکل زیر سیگنال های TWI و باس انتقال را نشان می دهد. حتماً تا به حال متوجه شده اید، هر گاه خروجی یک سیگنال مطابق شکل زیر به صورت درین باز (Open Drain) باشد، آنرا به باس می توان متصل کرد.
در TWI هر کدام از دستگاهها می توانند، تصمیم به انتقال داده بگیرند و کلاک توسط خودشان ایجاد می شود.
روش انتقال بین دستگاه ها به صورت Master/Slave و یا روش مرسوم در شبکه CSMA/CD باشد.
در این روش باید در برنامه نویسی تجربه بیشتری داشته باشید.

مقایسه واسط های سریال :

در مورد RS232 با پایین آوردن سرعت انتقال، برای فواصل بیشتر قابل استفاده است.
در مورد سرعتهای TWI و SPI محدودیت شما بیشتر به  سرعت AVR  مربوط می شود.

 

نظرات کاربران
نظری ارسال نشده است.
نظر بدهید

ایمیل شما پنهان می ماند.