آموزش های کاربردیبایگانی مطالب

پورت سریال UART در Raspberry Pi

در این مقاله ابتدا به معرفی ارتباط UART میپردازیم سپس پورت UART در Raspberry Pi را بصورت کامل توضیح خواهیم داد. همراه ما باشید.

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

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

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


پورت UART در Raspberry Pi

پورت UART در Raspberry Pi به دو نوع تقسیم می شود:

  1. PL011

  2. mini UART

PL011 یک UART توانمند، کاملاً سازگار با 16550 است در حالی که در mini UART مجموعه ای از ویژگی ها کاهش یافته است.

همه UART ها در رزبری پای با ولتاژ 3.3 ولت کار می کنند و اگر به ولتاژ 5 ولت متصل شوند آسیب می بینند.

پورت UART در Raspberry Pi


0,1,2,3 های Raspberry Pi در UART دو عدد 

پورت UART در Raspberry Pi (0,1,2,3) به شرح زیر هستند:

Type Name
PL011 UART0
mini UART UART1

Raspberry Pi 4 شش عدد UART

بورد رزبری پای 4، چهار عدد PL011 اضافه دارد که بطور پیش فرض غیر فعال هستند. در نتیجه لیست کامل پورت UART در Raspberry Pi 4 به شرح زیر است:

Type Name
PL011 UART0
mini UART UART1
PL011 UART2
PL011 UART3
PL011 UART4
PL011 UART5

UART اولیه

در رزبری پای، یک UART در پین GPIO 14 (transmit) و پین GPIO15 (receive) انتخاب شده است که به آن ها UART اولیه می گویند.

UART ثانویه

UART ثانویه به طور طبیعی روی GPIO ها وجود ندارد اما در طرف مقابل UART ثانویه به طور پیش فرض به بلوتوث ترکیبی LAN/Blutooth متصل است.


تنظیمات

UART 0 به طور پیش فرض فعال شده است. جدول زیر خلاصه دو نوع UART را نشان می دهد:

mini UART

first PL011 (UART0)

Model

secondary

primary

Raspberry Pi Zero

primary

secondary (Bluetooth)

Raspberry Pi Zero W

secondary

primary

Raspberry Pi 1

secondary

primary

Raspberry Pi 2

primary

secondary (Bluetooth)

Raspberry Pi 3

primary

secondary (Bluetooth)

Raspberry Pi 4

miniUART چه UART اولیه باشد چه ثانویه، در هر صورت به طور پیش فرض غیر فعال است.

miniUART و فرکانس هسته CPU

برای استفاده از miniUART باید رزبری پای را برای استفاده از فرکانس کلاک هسته VPU تنظیم کنید زیرا کلاک miniUART به کلاک هسته VPU مرتبط است در نتیجه دلیل وقتی فرکانس کلاک هسته تغییر می کند، نرخ UART نیز تغییر خواهد کرد.

به منظور تغییر رفتار miniUART، تنظیمات enable_uart  و  core_freq می توانند به فایل config.txt اضافه شوند.

جدول زیر خلاصه ای از ترکیب های ممکن را نشان می دهد:

Result

core clock

Mini UART set to

mini UART disabled

variable

primary UART

mini UART enabled, core clock fixed to 250MHz, or if force_turbo=1 is set, the VPU turbo frequency

fixed by setting enable_uart=1

primary UART

mini UART disabled

variable

secondary UART

mini UART enabled

fixed by setting core_freq=250

secondary UART

حالت پیش فرض پرچم enable_uart به اینکه کدام UART، بصورت UART اولیه تنظیم شده است بستگی دارد:

Default state of enable_uart flag

Primary UART

0

mini UART

1

first PL011 (UART0)


تفاوت های PL011 و miniUART

miniUART، FIFO(first in -first out) های کوچکتری دارد که باعث می شود علاوه بر عدم کنترل جریان، در baudrates های بالاتر تمایل به از دست دادن کاراکتر ها داشته باشد.

همچنین miniUART به علت وابستگی به سرعت کلاک VPU، نسبت به PL011 توانایی کمتری دارد.

کمبود های miniUART نسبت به PL011 

  • تشخیص ندادن break و framing error
  •  وجود نداشتن بیت توازن (parity bit)
  • عدم دریافت وقفه timeout
  • عدم وجود سیگنال های DCD, DSR, DTR یا RI

این مقاله چطور بود ؟
+1
2
+1
26
+1
1
مشاهده بیشتر

محمد حسنی

علاقمند به حوزه IoT و الکترونیک. در حال حاضر به مدت یکسال است که در تیم سخت افزار سازان نام آور به تولید محتوا مشغول هستم.

نوشته های مشابه

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

دکمه بازگشت به بالا