آموزش کامل ارتباط سریال UART در AVR راهاندازی و کاربردها
آموزش کامل ارتباط سریال UART در AVR راهاندازی و کاربردها در پروژههای مبتنی بر میکروکنترلرها، یکی از رایجترین روشهای ارتباطی بین دستگاهها، استفاده از پروتکل UART است. UART یا Universal Asynchronous Receiver-Transmitter، یک پروتکل ارتباطی سریال غیرهمزمان است که امکان انتقال داده بین میکروکنترلر و دستگاههای خارجی مانند کامپیوتر را فراهم میکند. از این پروتکل در بسیاری از کاربردها مانند ارتباط با سنسورها، ماژولهای ارتباطی و کامپیوتر استفاده میشود. در این مقاله، به بررسی نحوه راهاندازی UART در میکروکنترلرهای AVR و استفاده از آن برای برقراری ارتباط با کامپیوتر میپردازیم.
پروتکل UART
پروتکل UART یک روش ارتباطی سریال است که به کمک دو خط TXD (انتقال) و RXD (دریافت) عمل میکند. تفاوت اصلی این پروتکل با روشهای همزمان (مانند SPI) در عدم نیاز به سیگنال کلاک مشترک است. در UART، نرخ انتقال داده باید از قبل بین فرستنده و گیرنده هماهنگ شود که به آن Baud Rate گفته میشود. برخی از نرخهای رایج انتقال داده شامل 9600، 19200 و 115200 بیت بر ثانیه هستند.
هر فریم در پروتکل UART شامل بخشهای زیر است:
- بیتهای شروع: یک بیت برای شروع انتقال داده.
- بیتهای داده: تعداد بیتهای داده (معمولاً ۸ بیت).
- بیت توازن (اختیاری): جهت اطمینان از صحت داده.
- بیتهای توقف: برای پایان انتقال (معمولاً ۱ یا ۲ بیت).
نحوه راهاندازی UART در AVR
راهاندازی UART در میکروکنترلرهای AVR با استفاده از تنظیمات چندین رجیستر انجام میشود. مراحل زیر برای پیکربندی UART در AVR ضروری هستند:
1. تنظیم Baud Rate
برای تعیین نرخ انتقال داده، از رجیستر UBRR استفاده میشود. مقدار این رجیستر بر اساس فرکانس کاری میکروکنترلر و Baud Rate مورد نظر محاسبه میشود. به عنوان مثال، اگر میکروکنترلر با فرکانس 16 مگاهرتز کار کند و بخواهیم Baud Rate برابر با 9600 باشد، مقدار UBRR به شکل زیر محاسبه میشود:
UBRR = (F_CPU / (16 * Baud Rate)) - 1
2. فعالسازی ارسال و دریافت
رجیستر UCSRB برای فعالسازی ارسال و دریافت داده استفاده میشود. بیتهای TXEN و RXEN در این رجیستر باید برای فعالسازی بخش ارسال (TX) و دریافت (RX) تنظیم شوند.
3. تنظیم فریم داده
با استفاده از رجیستر UCSRC، میتوان مشخصات فریم داده را تعیین کرد. این رجیستر شامل تنظیمات تعداد بیتهای داده (معمولاً ۸ بیت)، بیتهای توقف (1 یا 2 بیت) و فعالسازی یا غیرفعالسازی بیت توازن (Parity Bit) است.
4. فعالسازی وقفهها (اختیاری)
برای بهبود کارایی در دریافت و ارسال دادهها، میتوان از وقفههای مربوط به UART استفاده کرد. این وقفهها با تنظیم بیتهای RXCIE و TXCIE در رجیستر UCSRB فعال میشوند که در این صورت، به جای انتظار برای آماده شدن داده، CPU میتواند کارهای دیگری انجام دهد.
ارسال و دریافت داده
بعد از تنظیم صحیح UART، ارسال و دریافت داده به راحتی امکانپذیر است.
ارسال داده
برای ارسال یک بایت داده، ابتدا باید از خالی بودن رجیستر UDR اطمینان حاصل کنید. رجیستر UCSRA شامل بیتی به نام UDRE است که در صورت آماده بودن برای ارسال داده، تنظیم میشود. پس از تنظیم این بیت، میتوان داده مورد نظر را در رجیستر UDR قرار داد تا ارسال شود.
دریافت داده
برای دریافت داده، باید وضعیت بیت RXC در رجیستر UCSRA بررسی شود. این بیت نشاندهنده آماده بودن داده در رجیستر UDR است. پس از تنظیم این بیت، داده دریافت شده را میتوان از UDR خواند.
مثال عملی: ارتباط میکروکنترلر AVR با کامپیوتر
در این بخش، نحوه ارتباط یک میکروکنترلر AVR با کامپیوتر از طریق UART توضیح داده میشود. برای این منظور از یک مبدل USB به UART مانند PL2303 یا FT232 استفاده میکنیم که میکروکنترلر را به پورت USB کامپیوتر متصل میکند.
مراحل:
- اتصال سختافزاری: میکروکنترلر AVR را از طریق مبدل USB به UART به کامپیوتر متصل کنید. TXD و RXD مبدل را به پایههای مربوطه در میکروکنترلر متصل کنید.
- تنظیمات نرمافزاری: در کد میکروکنترلر، Baud Rate را روی 9600 تنظیم کنید. سپس یک نرمافزار ترمینال مانند PuTTY یا Tera Term را در کامپیوتر اجرا کنید و Baud Rate ترمینال را روی 9600 تنظیم کنید.
- ارسال داده از AVR: به عنوان مثال، یک پیام ساده مانند “Hello, World!” را از میکروکنترلر به کامپیوتر ارسال کنید. پیام ارسالی باید در نرمافزار ترمینال نمایش داده شود.
- دریافت داده از کامپیوتر: از طریق ترمینال، یک رشته داده به میکروکنترلر ارسال کنید. میکروکنترلر میتواند داده دریافتی را پردازش کرده و پاسخ مناسبی به ترمینال ارسال کند.
نتیجهگیری
آموزش کامل ارتباط سریال UART در AVR راهاندازی و کاربردها ارتباط سریال UART یکی از سادهترین و کاربردیترین روشهای ارتباطی برای میکروکنترلرهای AVR است. با پیکربندی صحیح رجیسترها و تنظیمات مربوطه، میتوان به راحتی ارتباطی پایدار و موثر با دستگاههای خارجی مانند کامپیوتر برقرار کرد. از این پروتکل در بسیاری از پروژههای میکروکنترلری استفاده میشود و یکی از ابزارهای ضروری برای توسعهدهندگان محسوب میشود.