جلسه دوازدهم: راه اندازی پروتکل  USART ( انتقال داده)

30,000 ریال

ارتباط سریال سنکرون(USART)

ارتباط سریال یوزارت مخفف عبارت Universal Synchronous And Asynchronous Serial Receiver And Transmitter به معنای “فرستنده/گیرنده سریال سنکرون/آسنکرون سراسری” می‌باشد.

در آن RXD برای دریافت دیتا، TXD برای ارسال دیتا، XCK برای کلاک حالت سنکرون و GND زمین مشترک دو دستگاه می‌باشد.

ارتباط سریال آسنکرون(UART)

مخفف Universal Asynchronous Receiver And Transmitter هنگام ارسال دیتا علاوه بر دیتا تعدادی بیت کنترلی نیز با آن ارسال می‌شود که به این مجموعه اصطلاحاً یک فریم frame گفته می‌شود.

توضیحات

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

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

معرفی ارتباط UART:

در ارتباط UART دو دستگاه به طور مستقیم به یکدیگر متصل می شوند. دستگاه ارسال کننده داده های موازی را که از یک بخش کنترلی مانند CPU دریافت می کند، به صورت سریال تبدیل کرده و برای دستگاه دریافت کننده ارسال می کند. سپس در سمت دریافت کننده داده های سریال به صورت موازی تبدیل می شوند. داده ها از پین TX دستگاه ارسال کننده برای پین RX دستگاه دریافت کننده فرستاده می شوند.

UART داده ها را به صورت ناهمزمان ارسال می کند. به این معنی که سیگنال کلاک برای همزمان کردن داده های خروجی دستگاه ارسال کننده با داده های نمونه دستگاه دریافت کننده، وجود ندارد. به جای سیگنال کلاک از بیت های شروع، توازن(parity) و  پایان در بسته داده های ارسالی استفاده می کند، لذا دستگاه دریافت کننده متوجه می شود که چه زمانی شروع به خواندن داده ها کند.

زمانی که دستگاه دریافت کننده متوجه بیت شروع شد، داده های ورودی را با فرکانس مشخصی که به آن نرخ انتقال داده(baud rate) می گویند، دریافت می کند. baud rate  تعیین کننده سرعت انتقال اطلاعات بوده و برحسب بیت برثانیه(bps) سنجیده می شود. هر دو دستگاه UART باید با baud rate یکسان عمل کرده و حداکثر میزان اختلاف آنها می تواند ۱۰ % باشد.

تعداد سیم های مورد استفاده =  ۲

حداکثر سرعت  =  ۱۱۵۲۰۰baud    و به طور معمول  ۹۶۰۰ baud

همزمان و یا ناهمزمان =  ناهمزمان

حداکثر تعداد master (کنترل کننده)  =  ۱

حداکثر تعداد slave (کنترل شونده مثل سنسورها و ماژول ها و…) =  ۱

UART به چه صورت کار می کند:

دستگاه ارسال کننده UART داده ها را از گذرگاه داده(data bus) دریافت می کند. گذرگاه داده برای ارسال داده ها به UART توسط قطعاتی مانند CPU، حافظه و یا میکروکنترلر استفاده می شود. داده ها به صورت موازی از گذرگاه داده به UART فرستاده شده، دستگاه ارسال کننده با اضافه کردن بیت های شروع، توازن و پایان یک بسته داده ایجاد می کند. در ادامه این بسته به صورت سریال و بیت به بیت از طریق پین TX ارسال می شود. دستگاه دریافت کننده داده های سریال را از طریق پین RX دریافت و  به حالت موازی تبدیل کرده و  بیت های شروع، تعادل و پایان را حذف می کند. در انتها این داده ها به گذرگاه داده در دستگاه دریافت کننده فرستاده می شوند.

همان طور که گفته شد داده ها در ارتباط UART به صورت یک بسته فرستاده می شوند. هربسته شامل یک بیت شروع، ۵ تا ۹ بیت داده(به UART  بستگی دارد)، یک بیت توازن قابل تنظیم و یک یا دو بیت پایانی.

بیت شروع:

خط انتقال اطلاعات از UART زمانی که از آن استفاده نمی شود، در حالت HIGH  می گیرد. برای شروع انتقال اطلاعات این خط برای مدت یک کلاک ساعت در وضعیت LOW قرار می گیرد. زمانی که دستگاه دریافت کننده یک تغییر سطح ولتاژ از حالت HIGH به LOW را تشخیص داد، شروع به دریافت داده ها با baud rate مشخص می شود.

ساختار داده ها(data frame):

در این قسمت داده اصلی قرار گرفته و می تواند از ۵ تا ۸ بیت، در صورتی که از بیت توازن استفاده شود، را شامل شود. و در صورتی که بیت تعادل به کار نرود، می تواند تا ۹ بیت باشد. در اکثرا اوقات ابتدا بیت کم ارزش(LSB) فرستاده می شود.

بیت توازن:

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

بیت پایانی:

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

مراحل انتقال داده در UART:

۱- دستگاه ارسال کننده داده ها را به صورت موازی از گذرگاه داده دریافت می کند.

۲- دستگاه ارسال کننده بیت شروع، توازن و پایانی را به داده اضافه می کند.

۳- بسته داده به صورت سریال و با توجه به سرعت baud rate از دستگاه ارسال کننده فرستاده می شود.

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

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

مزایا و معایب روش UART:

عدم وجود پروتکل ارتباطی جالب به نظر می رسد ولی UART به توجه به نحوه عملکردش بسیار مناسب و کاربردی است.

مزایا:

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

معایب:

  • اندازه داده های ارسالی حداکثر به ۹ بیت محدود شده
  • عدم پشتیبانی از چند master(کنترل کننده) و چند slave(کنترل شونده)
  • میزان baud rate دو سمت حداکثر می توانند ۱۰% با یکدیگر اختلاف داشته باشند.