آموزش الکترونیک

ارتباط UART چیست؟ مبانی ارتباط سریال UART

به یاد دارید که چه زمانی چاپگرها ، موس ها و مودم ها دارای کابل های ضخیم با آن رابط های بزرگ پیچیده بودند؟ آنهایی که به معنای واقعی کلمه مجبور بودند به کامپیوتر شما پیچ شوند؟ این دستگاه ها احتمالاً از UART برای برقراری ارتباط با رایانه شما استفاده می کردند.

در حالی که USB تقریباً به طور کامل جایگزین آن کابلها و اتصالات قدیمی شده است اما UART فقط مربوط به گذشته نیست. خواهید دید که UART ها در بسیاری از پروژه های الکترونیکیبرای اتصال ماژول های GPS ، ماژول های بلوتوث و ماژول های کارت خوان RFID به رزبری پای، آردوینو یا سایر میکروکنترلرها استفاده می شوند.

UART مخفف Universal Asynchronous Receiver / Transmitter است. این یک پروتکل ارتباطی مانند SPI و I2C نیست ، بلکه یک مدار فیزیکی در یک میکروکنترلر یا یک IC مستقل است. هدف اصلی UART انتقال و دریافت داده های سریال است. یکی از بهترین ویژگی ها در مورد UART این است که فقط از دو سیم برای انتقال داده بین دستگاه ها استفاده می کند.

قبل از خواندن ادامه مطلب پیشنهاد میکنم مقاله ارتباط سریال چیست را مشاهده کنید.

مقدمه ای بر ارتباطات UART

در ارتباطات UART ، دو UART مستقیماً با یکدیگر ارتباط برقرار می کنند. UART انتقال دهنده داده های موازی را از یک دستگاه کنترل کننده مانند CPU به شکل سریال تبدیل می کند ، آنها را به صورت نوبتی به UART گیرنده منتقل می کند و سپس داده های سریال را به داده های موازی دستگاه گیرنده تبدیل می کند. برای انتقال داده ها بین دو UART تنها به دو سیم نیاز است. داده ها از پین Tx UART انتقال دهنده به پین ​​Rx UART گیرنده جریان می یابند:

مقدمه ای بر ارتباطات UART

یک سیستم UART ارتباط قوی ، با سرعت متوسط ​​و دو طرفه را فقط با سه سیگنال فراهم می کند: Tx (داده های سریال منتقل شده) ، Rx (داده های سریال دریافت شده) و GND. بر خلاف پروتکل های دیگر مانند SPI و I2C ، هیچ سیگنال ساعتی لازم نیست زیرا کاربر اطلاعات سخت افزاری لازم را به UART می دهد.

در واقع ، یک سیگنال ساعت وجود دارد ، اما از یک دستگاه ارتباطی به دیگری منتقل نمی شود. در عوض ، هر دو گیرنده و فرستنده سیگنالهای داخلی دارند که نحوه تولید و تغییر سطح منطق (در سمت Tx) و تفسیر آن (در سمت Rx) را کنترل می کند.

UART ها داده ها را به صورت غیرهمگام (asynchronously) منتقل می کنند ، به این معنی که هیچ سیگنال ساعتی برای همگام سازی خروجی بیت ها از UART فرستنده به نمونه بردار بیت ها توسط UART دریافت کننده وجود ندارد. به جای یک سیگنال ساعت ، UART فرستنده، بیت های شروع و توقف را به بسته داده ای که منتقل می شود اضافه می کند. این بیت ها ابتدا و انتهای بسته داده را تعریف می کنند تا UART دریافت کننده بداند چه زمانی بیت ها را بخواند.

وقتی UART دریافت کننده بیت شروع را تشخیص می دهد ، شروع به خواندن بیت های ورودی با فرکانس خاصی می کند که به عنوان Baud rate (نرخ باود) شناخته می شود. Baud rate مقیاسی برای سرعت انتقال داده است که در بیت بر ثانیه (bps) بیان می شود. هر دو UART باید با یک نرخ باود کار کنند. نرخ باورد میتواند حدودا 10 درصد تفاوت داشته باشد، بیشتر از 10 درصد باعث ناخوانایی میشود.

هر دو UART باید برای انتقال و دریافت ساختار بسته داده یکسان پیکربندی شوند.

مشخصات ارتباط UART

همچنین مقاله ارتباط SPI و I2C را نیز بخوانید.

UART چگونه کار می کند؟

UART که قصد انتقال داده را دارد داده ها را از یک گذرگاه داده دریافت می کند. گذرگاه داده برای ارسال داده ها به UART توسط دستگاه دیگری مانند پردازنده ، حافظه یا میکروکنترلر استفاده می شود. داده ها به صورت موازی از گذرگاه داده به UART انتقال دهنده منتقل می شوند. پس از آنکه UART انتقال دهنده داده های موازی را از گذرگاه داده دریافت می کند ، یک بیت شروع (Start)، یک بیت برابری (Parity) و یک بیت توقف (Stop) را با ایجاد بسته (Packet) به داده اضافه می کند. سپس بسته داده ذره به ذره از TX فرستنده خارج و به RX گیرنده منتقل میشود. سپس UART دریافت کننده داده ها را دوباره به شکل موازی تبدیل می کند و بیت شروع ، بیت برابری و بیت های توقف را حذف می کند. سرانجام ، دریافت کننده UART بسته داده را به موازات گذرگاه داده در انتهای گیرنده منتقل می کند:

UART چگونه کار می کند؟

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

داده های منتقل شده UART در بسته ها سازمان یافته است. هر بسته شامل 1 بیت شروع ، 5 تا 9 بیت داده (بسته به UART) ، یک بیت برابری اختیاری و 1 یا 2 بیت توقف است:

ساختار بسته داده ارتباط UART

بیت شروع (Start)

خط انتقال داده UART به طور معمول در سطح ولتاژ بالا (HIGH) نگهداری می شود یعنی زمانی که داده را انتقال نمی دهد. برای شروع انتقال داده ها ، UART فرستنده خط انتقال را برای یک چرخه ساعت از بالا به پایین (LOW) می کشد. وقتی UART گیرنده ولتاژ بالا به پایین را تشخیص دهد ، شروع به خواندن بیت ها در فرکانس نرخ باود می کند.

چارچوب داده (Data Frame)

چارچوب داده شامل داده های واقعی منتقل شده است. در صورت استفاده از بیت توازن می تواند 5 بیت تا 8 بیت باشد. اگر از بیت توازن استفاده نشود ، چارچوب داده می تواند 9 بیت باشد. در بیشتر موارد ، ابتدا داده ها با کمترین مقدار بیت ارسال می شوند.

بیت برابری (Parity)

PARITY یکنواختی یا عجیب بودن یک عدد را توصیف می کند. بیت برابری راهی است که UART دریافت کننده می تواند تشخیص دهد که آیا داده در حین انتقال تغییر کرده است یا خیر. بیت ها میتوانند با تابش الکترومغناطیسی، نرخ باورد نابرابر یا مسافت ارتباط طولانی تغییر کنند. بعد از اینکه UART گیرنده چارچوب داده را خواند ، تعداد بیت ها را با مقدار 1 می شمارد و بررسی می کند که جمع کل یک عدد زوج یا فرد است. اگر بیت برابری 0 باشد (برابری زوج) ، 1 بیت در چارچوب داده باید به یک عدد زوج برسد. اگر بیت توازن 1 باشد (برابری فرد) ، 1 بیت موجود در قاب داده باید در مجموع به یک عدد عجیب برسد. وقتی بیت توازن با داده ها مطابقت داشته باشد ، UART می داند که انتقال بدون خطا بوده است. اما اگر بیت توازن 0 باشد ، و جمع کل فرد باشد. یا بیت توازن 1 است ، و جمع کل چیز دیگری است ، UART می داند که بیت های موجود در داده تغییر کرده اند.

بیت توقف (Stop)

برای نشان دادن پایان بسته داده ، درایور UART فرستنده خط انتقال اطلاعات را از ولتاژ پایین به ولتاژ بالا میکشد (برای مدت حداقل دو بیت).

انتقال داده با UART

1. UART فرستنده داده را به طور موازی از گذرگاه داده دریافت می کند:

دریافت اطلاعات موازی توسط فرستنده UART

2. UART فرستنده بیت شروع ، بیت برابری و بیت توقف را به قاب داده اضافه می کند:

اضافه کردن بیت های قالب به داده

3. کل بسته به صورت نوبتی از UART فرستنده به UART گیرنده ارسال می شود. دریافت کننده UART خط داده را با نرخ باود از پیش تنظیم شده نمونه برداری می کند:

انتقال اطلاعات از گیرنده به فرستنده با UART

4. دریافت کننده UART بیت شروع ، بیت توازن و بیت توقف را از بسته داده حذف میکند.

حذف اطلاعات اضافی بسته توسط UART

5. UART دریافت کننده داده های سریال را دوباره به موازی تبدیل کرده و به انتهای دریافت کننده به گذرگاه داده انتقال می دهد:

دریافت کامل اطلاعات توسط گیرنده

مزایا و معایب UART

هیچ پروتکل ارتباطی کامل نیست ، اما UART در انجام کار خود ایده آل است. در اینجا چند نکته مثبت و منفی آورده شده است که به شما کمک می کند تصمیم بگیرید که آیا ارتباط UART متناسب با نیازهای پروژه شما است یا نه:

مزایا :

  • فقط از دو سیم استفاده میکند.
  • سیگنال ساعت نیاز ندارد.
  • دارای بیت برابری است تا امکان بررسی خطا را فراهم کند.
  • تا زمانی که هر دو طرف به یک شکل تنظیم شده باشند ، ساختار بسته داده قابل تغییر است.
  • روش مستند و پرکاربردی دارد.

معایب :

  • اندازه فریم داده حداکثر به 9 بیت محدود می شود.
  • از چندین سیستم اصلی یا چندگانه پشتیبانی نمی کند.
  • نرخ باود هر UART باید در دو دستگاه مساوی باشد.
4.7 (10 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

9 نظر

  1. سلام. زمان start در tx چقدر است؟ و زمان stop در tx چقدر است؟ آیا توقف در وسط بیت ها انتخابی است وآیا در حالت پیش فرض غیر فعال است؟

  2. سلام و عرض ادب
    ممکنه از طریق ارتباط uart یک برد پخش کننده mp3 بلوتوثی رو با یک برد وای فای مرتبط کرد طوریکه بتوان از طریق وای فای موزیک روی پخش کننده پخش کرد ؟
    یا فقط میشه برد پخش کننده رو کنترل کرد؟
    البته بدلیل محدودیت ۱۰متر بلوتوث از بلوتوث برد پخش کننده استفاده نکنیم

  3. سلام
    روی برد تلویزیون کنار درگاه HDMI کلمه uart نوشته میخواستم بدونم فایده وجود این پروتکل روی htmi چیه و چه کاری میشه باهاش انجام داد ؟

  4. سلام خسته نباشید ببخشید برای اینکه بین یک اردینوuno و کامپیوتر میخوام ارتباط برقرار کنم و میخوام از ال سی دی استفاده نکنم و اون رو در قسمت serial monitorنشون بدم باید برای اردینو چه برنامه ای بنویسم؟؟؟؟؟؟

    1. سلام عزیز
      دوره اموزش اردوینو رو مشاهده کنید اموزش داده میشه

  5. سلام وقت بخیر
    ماژول xy-wi01 برای فن ۱۲ ولت خریدم میخوام نصب کنم از دیتا شیپ نتونستم میشه راهنمایی کنید

    1. سلام عزیز
      ماژول مورد نظرتون رو پیدا نکردم

    2. سلام اسم ماژول تون احیانا XY-WJ01نیستش؟delay relay module

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *