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

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

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

وبلاگ

آموزش تکنولوژِی با رهنوتک > اخبار > میکروکنترلر > RPI pico > راه اندازی UART رزبری پای پیکو – Raspberry Pi Pico UART

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

3 مرداد 1403
ارسال شده توسط اساتید رهنوتک
RPI pico
rpi_pico_uart

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

UART چیست؟

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

UART رزبری پای پیکو

برد Raspberry Pi Pico و یا به عبارت درست‌تر آیسی RP2040 دارای دو واحد UART کاملا مجزا از یکدیگر است که به نام‌های UART0 و UART1 شناخته می‌شوند. امکان تخصیص پین‌های متنوعی از میکروکنترلر به این UART رزبری پای پیکو فراهم است که جدول آن در ادامه آورده شده است.

rp2040_UART_PIN

مهمترین مشخصه‌های واحد UART رزبری پای پیکو به شرح زیر است

  • بافر دریافت با اندازه 32×8 bit
  • بافر ارسال با اندازه 32×12 bit
  • حداکثر Baud Rate برابر با UARTCLK/16 که به معنی 7.8Mbaud در فرکانس کاری 125MHz است.
  • عدد data size می‌تواند 5, 6, 7 یا 8 بیت باشد.
  • دارای پایه‌های کنترلی RTS و CTS
  • امکان اتصال به DMA در فرستندگی و گیرندگی
  • امکان تولید وقفه ارسال و دریافت

برای دریافت اطلاعات بیشتر در مورد واحد UART رزبری پای پیکو می‌توانید دیتاشیت RP2040 را مطالعه کنید.

راه اندازی UART رزبری پای پیکو

برای راه‌اندازی و تست UART رزبری پای پیکو می‌خواهیم یک دیتا را روی پایه TX از UART0 ارسال کنیم و همان داده را از پایه RX همین UART دریافت کنیم. تنظیمات مورد نظر ما 96008n1 این خواهد بود. می‌توانیم از هرکدام از پایه‌های تخصیص داده شده رزبری پای پیکو به UART0 استفاده کنیم. انتخاب ما پایه‌های GP0 و GP1 است. دقت داشته باشید برای آنکه دیتای ارسالی از پایه TX را در پایه RX دریافت کنید باید پایه GP0 را با یک تکه سیم به پایه GP1 متصل کنید.

UART رزبری پای پیکو

برای انتقال داده از طریق UART رزبری پای پیکو، در اولین قدم کلاس‌های UART و Pin را از ماژول machine ایمپورت می‌کنیم. اگر در مورد کلاس PIN یا ماژول machine به اطلاعات بیشتری نیاز دارید می‌توانید به مقاله راه اندازی پایه های رزبری پای پیکو مراجعه کنید.

from machine import UART, Pin

در مرحله بعد یک نمونه (instance) از کلاس UART با نام uart0 می‌سازیم (این نام دلخواه است) و تنظیمات مورد نظر خود را به آن اعمال می‌کنیم.

uart0 = UART(0, baudrate=9600, bits=8, parity=None, stop=1, tx=Pin(0), rx=Pin(1));

پارامترهای استفاده شده به صورت زیر است

  • id (پارامتر اول) : اگر 0 باشد به معنی استفاده از UART0 است و اگر 1 باشد مشخص کننده استفاده از UART1 است.
  • baudrate: مشخص کننده نرخ ارسال است. این پارامتر اختیاری است و مقدار پیش‌فرض آن 9600 است.
  • bits: مشخص کننده عدد data size است و می‌تواند 5, 6, 7 یا 8 باشد. این پارامتر اختیاری است و مقدار پیش‌فرض آن 8 است.
  • pariry: اگر 0 باشد به معنی even، اگر 1 باشد به معنی odd و اگر None باشد به معنی no parity است. این پارامتر اختیاری است و مقدار پیش‌فرض آن None است.
  • stop: تعداد stop bit را مشخص می‌کند و می‌تواند 1 یا 2 باشد. این پارامتر اختیاری است و مقدار پیش‌فرض آن 1 است.
  • tx: مشخص کند کدام پایه به TX اختصاص داده شود و باید از جنس Pin باشد.
  • rx: مشخص کند کدام پایه به RX اختصاص داده شود و باید از جنس Pin باشد.

حال می‌خواهیم کرکتر A را توسط UART ارسال کنیم. به این منظور از متد write استفاده می‌کنیم.

uart0.write('A')

این متد می‌تواند یک کرکتر، یک string و یا در حالت کلی‌تر یک بافر از جنس 8بیتی را به عنوان ورودی دریافت کند. در حالت بافر یا string می‌توان تعداد بایت‌های ارسالی را نیز مشخص کرد. همچنین این متد تعداد بایت‌هایی که ارسال شده است را به عنوان خروجی بر‌می‌گرداند. به عنوان نمونه کد زیر را در نظر بگیرید

n = uart0.write('Hello', 3)

در نتیجه ارسال این کد 3 بایت Hel ارسال خواهد شد و مقدار n برابر با 3 می‌شود.

به مثال خود برگردیم. می‌خواهیم کرکتر ارسالی A را در ورودی UART دریافت کنیم. اگر بلافاصله پس از ارسال در UART ورودی آن را بخوانیم چیزی دریافت نمی‌کنیم چون از نظر فیزیکی مدتی طول می‌کشد تا تمام بیت‌ها در پایه TX قرار گیرند و همچنین در RX دریافت شوند.

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

while not uart0.any():
    pass
data = uart0.read()

متد any تعداد بایت‌هایی در UART که دریافت شده‌اند و منتظر خوانده شدن توسط برنامه هستند را مشخص می‌کند. در کد نوشته شده تا وقتی این مقدار 0 است درون while منتظر می‌مانیم. هرگاه این عدد غیر 0 شود از while خارج شده و توسط متد read داده‌ها را می‌خوانیم و درون متغیر data می‌ریزیم. این متد می‌تواند تعداد بایت‌‌ را به عنوان ورودی دریافت کند. اگر عدد تعداد بایت به عنوان ورودی به آن ارسال شود همان تعداد بایت را می‌خواند و اگر خالی گذاشته شود تمام بایت‌های دریافت شده را می‌خواند.

کد نهایی به صورت زیر است

from machine import UART, Pin

uart = UART(0, baudrate=9600, bits=8, parity=None, stop=1, tx=Pin(0), rx=Pin(1));

uart.write('A')

while not uart.any():
    pass

data = uart.read()

print(data)

در پایان

در انتها از شما دعوت می‌کنیم نظرات، دانسته‌ها و یا تجربیات خود در مورد UART رزبری پای پیکو را در بخش کامنت‌های این مقاله با ما به اشتراک بگذارید و به مفیدتر بودن این نوشته کمک کنید.

قبلی UART چیست؟ - ارتباط سریال
بعدی PWM چیست؟

پست های مرتبط

what is pio

3 دی 1403

PIO چیست؟

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

1 دی 1403

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

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

4 مرداد 1403

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

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

4 مرداد 1403

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

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

1 مرداد 1403

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

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

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

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

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

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

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