جستجو برای:
سبد خرید 0
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در privacy policy ما شرح داده می شود مورد استفاده قرار می گیرد.

آموزش تکنولوژِی با رهنوتک
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آموزش تکنولوژِی با رهنوتک > اخبار > میکروکنترلر > UART چیست؟ – ارتباط سریال

UART چیست؟ – ارتباط سریال

3 مرداد 1403
ارسال شده توسط اساتید رهنوتک
میکروکنترلر
uart diagram

UART یک ارتباط سریال آسنکرون و full duplex است که می‌تواند داده‌‌ها را به صورت سریال بین دو سخت افزار انتقال دهد. اگر می‌خواهید بدانید UART چیست، چگونه کار می‌کند، چه مزایا و معایبی دارد و کاربرد آن کجاست در ادامه این مقاله با ما همراه باشید.

UART چیست؟

UART یا همان (Universal Asynchronous Receiver Transmitter) یک ارتباط سریال آسنکرون با توانایی انتقال full duplex است که می‌تواند داده‌‌ها را به صورت سریال بین دو سخت افزار انتقال دهد.

ارتباط سریال و موازی

یک ارتباط سریال ارتباطی است که داده‌ها را به صورت بیت به بیت و یکی پس از دیگری منتقل می‌کند. در مقابل ارتباط سریال، ارتباط موازی قرار دارد که داده‌ها را به صورت موازی (چندین بیت با هم و در چند مسیر) انتقال می‌دهد.

parallel and serial data transmission

ارتباط سنکرون و آسنکرون

یک ارتباط آسنکرون ارتباطی است که از سیگنال کلاک برای انتقال داده‌ها استفاده نمی‌کند. در مقابل ارتباط آسنکرون، ارتباط سنکرون قرار دارد که برای انتقال داده‌ها نیازمند مسیر کلاک است. در ارتباط سنکرون فرستنده و گیرنده اطلاعات بر اساس سیگنال کلاک ارسال و دریافت بیت‌ها را تنظیم می‌کنند به این معنی که فرستنده در لبه‌های بالارونده (یا پایین رونده) کلاک اقدام به قرار دادن دیتا روی مسیر می‌کند و گیرنده هم در لبه بالارونده (یا پایین رونده) کلاک اقدام به دریافت داده‌ها می‌کند.

Synchronous-Serial-Communication

در ارتباط آسنکرون، فرستنده و گیرنده باید بر اساس کلاک داخلی خودشان عمل کنند و هردو روی یک نرخ ارسال و دریافت یکسان تنظیم شده باشند. ارتباط صحیح در این نوع، مستلزم دارا بودن دقت کافی در کلاک داخلی دو سخت افزار است. به عبارت دیگر، دقت کلاک‌های داخلی دو سخت‌افزار فرستنده و گیرنده تعیین کننده حداکثر سرعت قابل دستیابی در ارتباط آسنکرون است.

Asynchronous-Serial-Communication

ارتباط Full Duplex و Half Duplex

در ارتباط Full Duplex می‌توان در هر لحظه از زمان هم ارسال داده و هم دریافت داده را انجام داد. در مقابل ارتباط Full Duplex ارتباط Half Duplex وجود دارد که در آن در هرلحظه از زمان فقط می‌توان یا ارسال داده داشت یا دریافت داده و امکان هردو در یک لحظه وجود ندارد.

اصطلاحات UART

هنگام کار با UART با اصطلاحاتی مواجه خواهید شد که اگر ندانید مفهوم آن‌ها در UART چیست، درک عمکرد UART برایتان دشوار خواهد بود. این اصطلاحات عبارتند از RX، TX، Baud Rate، Start Bit، Stop Bit، Data Size، Parity

RX و TX

مسیر ارسال و دریافت داده در UART مجزا است. پایه‌ای از سخت‌افزار که به بخش ارسال داده واحد UART متصل است TX نامیده می‌شود و پایه‌ای از سخت‌افزار که به بخش دریافت داده واحد UART متصل است پایه RX نامیده می‌شود. بنابراین هنگامی که دو سخت‌افزار بخواهند از طریق UART تبادل داده کنند باید TX یکی به RX دیگری متصل شود. البته برای هم‌پتانسیل بودن دو سخت‌افزار یک مسیر GND نیز نیاز است (مگر آنکه GND از طریق دیگری متصل شده باشد مانند تغذیه)

UART چیست

Baud Rate

شاید این اصطلاح را قبلا شنیده باشید، در اینجا خواهیم گفت معنی Baud Rate در UART چیست. ارتباط UART آسنکرون است بنابراین دو طرف باید روی یک نرخ ارسال و دریافت یکسان تنظیم شوند. این نرخ ارسال و دریافت Baud Rate نامیده می‌شود. به عنوان مثال نرخ ارسال 9600 به این معنی است که داده‌ها با سرعت 9600 بیت در ثانیه ارسال و دریافت شوند. برای Baud Rate اعداد استانداردی مانند 2400، 4800، 9600، 19200، 38400، 115200 وجود دارد که 9600 و 115200 متداول‌ترین آن‌ها است. در ادامه تصویری از Baud Rate های معمول آورده شده است.

most-used-baud-rate-table

از آنجا که کامپیوترها هم ارتباط سریال را پشتیبانی می‌کنند هنگام ارتباط سخت افزار با کامپیوتر باید یکی از Baud Rate های استاندارد تعریف شده در کامپیوتر برای دو طرف ست شود. اما در ارتباط دو میکروکنترلر می‌توان Baud Rate های با نرخ دلخواه و در حد چند مگا بیت بر ثانیه (بسته به میکروکنترلر استفاده شده) تعریف کرد.

Start Bit

در حالت idle (حالتی که هیچ انتقال دیتایی در حال انجام نیست) سیگنال در سطح high است. برای آنکه شروع یک انتقال اطلاعات در سمت گیرنده تشخیص داده شود فرستنده به اندازه یک بیت سطح سیگنال را در حالت low می‌برد. این بیت را Start Bit گویند و بیت‌های بعد از آن دیتا هستند.

uart-start-bit

Data Size

پس از Start Bit دیتاهایی که باید انتقال داده شوند قرار دارند. می‌توان در تنظیمات UART مشخص کرد که در این بخش چند بیت داده قرار می‌گیرد. این عدد می‌تواند بین 5 تا 9 بیت (9 بیت به شرطی است که از امکان Parity استفاده نشود و همچنین فقط برخی از میکروکنترلرها این امکان پشتیبانی می‌کنند )باشد اما معمولا 8 بیت است. توجه داشته باشید این تنظیم باید برای هردو طرف یکسان ست شود.

uart-data-frame

Parity

بیت Parity امکان استفاده از یک مکانیزم تشخیص خطا را فراهم می‌آورد تا اگر داده‌ها در طول مسیر دچار خرابی شده‌اند تشخیص داده شود. مواردی مانند نویز، طول مسیر زیاد، عدم تطابق Baud Rate و … می‌توانند باعث انتقال اشتباه داده‌ها شوند. Parity می‌تواند در حالت none، even، odd کانفیگ شود. این تنظیم باید برای هردو طرف یکسان ست شود.

  • – none: از امکان Parity استفاده نمی‌شود.
  • – even (زوج) : اگر تعداد بیت‌های دارای مقدار 1 در داده زوج باشد بیت Parity یک می‌شود و در غیر این صورت 0 است.
  • – odd (فرد) : اگر تعداد بیت‌های دارای مقدار 1 در داده فرد باشد بیت Parity یک می‌شود و در غیر این صورت 0 است.
uart-parity

Stop Bit

برای تشخیص انتهای پکت از Stop Bit استفاده می‌شود که شامل 1 یا 2 بیت در حالت high است. اینکه تعداد Stop Bit یک عدد باشد یا دو عدد در اتظیمات UART قابل انتخاب است و باید برای هردو طرف یکسان ست شود. پس از Stop Bit مسیر مجددا به حالت idle می‌رود (در حالت high باقی می‌ماند) یا اینکه انتقال پکت بعدی را شروع می‌کند.

uart-stop-bit

Packet

به مجموعه بیت‌هایی که در هر انتقال (شامل Start Bit تا Stop Bit) ارسال می‌شوند یک پکت گفته می‌شود. از نظر دیاگرام می‌توانید آن را به شکل زیر تصور کنید

uart-packet

از نظر سیگنالی پکت به شکل زیر است:

uart_timing

دقت داشته باشید که اولین بیت داده که پس از start bit ارسال می‌شود LSB (بیت کم ارزش) است.

ویژگی‌های UART چیست؟

ویژگی‌های شاخص ارتباط سریال UART به شرح زیر است:

  • UART به علت ماهیت سریال و آسنکرون تنها نیاز به دو سیم (با فرض هم گراند بودن دو طرف) برای برقراری کانال ارتباطی بین دو طرف دارد.
  • نیاز به تولید و انتقال سیگنال Clock وجود ندارد.
  • از ارتباط Full Duplex پشتیبانی می‌کند.
  • بسیاری از کامپیوترها از ارتباط سریال (پورت COM) پشتیبانی می‌کنند و در کامپیوترهایی که به صورت سخت افزاری پورت COM ندارند از طریق مبدل‌های ارزان‌قیمت و متنوع USB2Serial این امکان فراهم است.
  • ماهیت پیچیده‌ای ندارد و پیاده‌سازی سخت ‌افزاری و نرم‌افزاری آن ساده است.
  • سازگاری بالایی با مبدل‌های RS485 دارد و با استفاده از مبدل‌ها می‌توان داده را تا 1000 متر انتقال داد.
  • در مقایسه با سایر ارتباط‌های سریال (مانند Ethernet، USB، SPI، I2S) سرعت پایینی دارد.
  • سربار نسبتا بالایی دارد. به این معنی که در بهترین حالت نیاز به یک بیت Start و یک بیت Stop برای انتقال 9 بیت داده دارد. به عبارت دیگر از هر 11 بیت که انتقال می‌دهد تنها 9 بیت داده است و دو بیت سربار دارد که حدود 18% از پهنای باند آن را اشغال کرده است. در مقایسه با ارتباط سریالی مانند Ethernet که در هر 1518 بایت نیاز به 18 بایت سربار دارد (معادل 1.2%) برای ارتباطی که به خودی خود سرعت بالایی نیز ندارد عیب بزرگی محسوب می‌شود. بماند که در این حالت Parity را نیز فدای انتقال داده کرده‌ایم و هیچگونه فرایند بررسی خطا نداریم.
  • از سیستم Multi Master و Multi Slave پشتیبانی نمی‌کند. در واقع همواره دو Device وجود دارد.

کاربردهای UART

با توجه به ویژگی‌های UART که در بخش قبل مطرح شد می‌توان تا حدی کاربردهای آن را حدس زد. در ادامه به برخی از موارد اشاره شده است.

ارتباط میکروکنترلر با کامپیوتر

تا چند سال پیش پورت سریال (RS232) یکی از اجزای جدا نشدنی کامپیوترها بود. امروزه نیز برخی از کامپیوترها مجهز به پورت سریال هستند. در کامپیوترهایی هم که پورت سریال ندارند با استفاده از یک مبدل ارزان قیمت USB به سریال این امکان فراهم است. معروف‌ترین آیسی‌های USB به سریال عبارتند از

  • FT232
  • CH340
  • CP2102
  • PL2303
usb to ttl

البته با توجه به تفاوت سطح ولتاژ پورت سریال کامپیوتر با واحد UART، نمی‌توان به صورت مستقیم این اتصال را ایجاد کرد و نیاز به یک ایسی واسط می‌باشد. معروف‌ترین آیسی‌ها در این زمینه عبارتند از

  • MAX3232
  • MAX232
  • MAX233
rs232 to ttl

ارتباط بین دو میکروکنترلر

در مواردی که نیاز است دو میکروکنترلر با یکدیگر تبادل داده کنند باید هردو از یک ارتباط مشترک پشتیبانی کنند. ارتباط موازی به علت نیاز به تعداد پایه‌های بالا (و محدودیت پایه در اکثر میکروکنترلرها) مقبولیت چندانی ندارد. در میان انواع ارتباط سریال، ارتباط UART دارای هزینه پیاده‌سازی پایینی است و به همین علت تقریبا تمام میکروکنترلرها از ارزانترین تا گرانترین و از کوچکترین تا بزرگترین‌شان از این ارتباط پشتیبانی می‌کنند.

ارتباط میکروکنترلر با ماژول‌های الکترونیکی

ارزان بودن پیاده‌سازی سخت‌افزار UART باعث شده بسیاری از ماژول‌های الکترونیکی که برای انتقال اطلاعات نیاز به سرعت بالایی ندارند، برای ارتباط با دنیای خارج از آن استفاده کنند. معروف‌ترین این ماژول‌ها عبارتند از

  • ماژول‌های GPS
  • ماژول‌های GSM
  • ماژول‌های RFID
  • ماژول‌های Compass
  • ماژول‌های بلوتوث
  • ماژول‌های WIFI

در حاشیه

UART قدمت زیادی دارد و در زمانی توسعه داده شده است که هنوز ادوات الکترومکانیکی کاربرد فراوانی داشته‌اند. کاربرد اولیه آن نیز برقراری ارتباط با همین ادوات از جمله موتورها بوده است. با توجه به ماهیت کند ادوات الکترومکانیک Baud Rate در رنج 300 بیت در ثانیه ست می‌شده که برای آن‌ها فراتر از کافی بوده است.

همچنین فلسفه قرار دادن start bit فرصت دادن به ادواتی مانند موتور برای راه‌اندازی و فلسفه stop bit نیز فرصت دادن به آن‌ها برای ریست شدن بوده است. با اینکه امروزه رسالت UART برقراری این ارتباط نیست اما در کنار بالارفتن مقدار Baud Rate در حد چند مگا بیت در ثانیه همچنان ساختار خود را حفظ کرده است.

معمول‌ترین کانفیگ برای UART، مقدار 9600 برای Baud Rate، مقدار 8 برای Data Size، مقدار none برای Parity و مقدار 1 برای Stop Bit است که ممکن است به صورت اختصاری 96008n1 در داکیومنت‌ها آورده شده باشد. اگر در کار با یک سخت‌افزار نتوانستید کانفیگ صحیح را در داکیومنت‌های آن بیابید توصیه می‌کنیم این کانفیگ و یا 1152008n1 را امتحان کنید.

با استفاده از یک Logic Analyzer که دیکد کردن ارتباط سریال را پشتیبانی کند می‌توانید ارتباط سریال بین دو سخت‌افزار را مانیتور کنید و اطلاعات با ارزشی از جمله کانفیگ ارتباط توسط Logic Analyzer در اختیار شما قرار داده می‌شود.

سخت افزار UART علاوه بر پایه‌های TX و RX پایه‌های دیگری نیز دارد که نقش کنترلی دارند (مانند RTS و CTS) و در دوران ابتدایی حضور UART کاربرد داشته اند. امروزه به طور معمول با آن‌ها برخورد نمی‌کنید و نیاز به استفاده از آن‌ها نخواهید داشت.

در پایان

در این مقاله در مورد این که UART چیست، چگونه عمل می‌کند، مزایا و معایب UART چیست و محل کاربرد آن کجاست صحبت کردیم. اگر کنجکاو هستید اطلاعات بیشتری داشته باشید به می‌توانید به منابعی مانند UART-wikipedia مراجعه کنید. بسیار خوشحال خواهیم شد اگر نظرات خود راجع به این مقاله و یا تجربیاتتان در کار با UART را در بخش نظرات این مقاله با ما و دیگر دوستانتان به اشتراک بگذارید.

همچنین اگر علاقه‌مند به آشنایی با دیگر درگاه‌های سریال هستید می‌توانید به مقالات SPI چیست؟ و I2C چیست؟ مراجعه کنید.

قبلی راه اندازی وقفه خارجی رزبری پای پیکو - Raspberry Pi Pico External Interrupt
بعدی راه اندازی UART رزبری پای پیکو - Raspberry Pi Pico UART

پست های مرتبط

what is micropython

5 دی 1403

میکروپایتون چیست؟ what is micropython

اساتید رهنوتک
ادامه مطلب
what is pio

3 دی 1403

PIO چیست؟

اساتید رهنوتک
ادامه مطلب
rpi pico adc pot

1 دی 1403

راه اندازی ADC رزبری پای پیکو – Raspberry Pi Pico ADC

اساتید رهنوتک
ادامه مطلب
spi

4 مرداد 1403

SPI چیست؟

اساتید رهنوتک
ادامه مطلب
pwm signal

4 مرداد 1403

PWM چیست؟

اساتید رهنوتک
ادامه مطلب

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • RPI pico
  • پروتکل‌های ارتباطی
  • میکروکنترلر
برچسب‌ها
adc micropython pio raspberrypi pico رزبری پای پیکو میکروپایتون
در باره ما

ما آموزشگاه آفلاین رهنوتک را راه‌اندازی کرده‌ایم تا آموزش‌های به روز در زمینه تکنولوژی را به مهندسان عرضه کنیم.

هدف ما از یک سو ایجاد پلی میان دانشجویان با بازار کار و از طرف دیگر ارتقای مهندسین شاغل در حوزه تکنولوژی است.

دسترسی سریع
  • دوره ها
  • اخبار
  • تماس با ما
© 1403 - آموزشگاه آفلاین رهنوتک