UART یک پروتکل ارتباطی مانند SPI و I2C نیست بلکه سخت افزاری است که یا به صورت یک آیسی مستقل وجود دارد و یا به صورت فیزیکی در میکروکنترلر های مختلف در نظر گرفته شده است. هدف اصلی استفاده از UART ارسال و دریافت دیتا به صورت سریال است.
تبدیل خروجی UART به یک سیگنال فیزیکی در سمت فرستنده و برعکس، با یک مدار جداگانه و با توجه به نوع استاندارد ارتباطی مورد نظر برای انتقال( RS422 RS485, RS232 و …) انجام می شود. هر یک از این استاندارد ها روش متفاوتی برای تولید سیگنال خروجی ارائه می کنند که با سطح ولتاژ TTL میکروکنترلر ها و مدارات دیجیتالی نیز فرق می کند.
UART وسیله ای برای ارتباط سریال می باشد به این معنا که در هر زمان، یک بیت دیتا را از طریق باس یا کانال ارتباطی منتقل می کند.در عمل کار UART تبدیل اطلاعات دریافت شده ی سریال به موازی است. شیفت رجیستر ها از اساسی ترین مبدل ها بین دیتای سریال و موازی هستند و بنابراین در ساختار هر UART هم به کار گرفته می شوند.
ارتباطات سریال به دو دسته synchronous(همزمان) و asynchronous(غیر همزمان) تقسیم می شود. تولید سیگنال خروجی جهت ارسال هم به وسیله ی یکی از واحد های UART یا USART انجام می شود. USART مخفف universal synchronous/asynchronous receiver/transmitter به معنی واحد ارسال یا دریافت کننده همزمان و غیرهمزمان است. UART نیز مخفف universal asynchronous receiver/transmitter و به معنی ارسال و دریافت غیر همزمان است. همان طور که از اسم این دو پیداست USART که هر دو نوع همزمان و غیر همزمان را شامل می شود در واقع نسخه کامل تری از UART است و که ارتباط همزمان را هم پشتیبانی می کند.
نوع همزمان ارتباط سریال، اطلاعات را به صورت هم زمان با یک سیگنال کلاک منتقل می کند. فرستنده در این حالت سیگنال کلاک را جهت دریافت سمت گیرنده تولید می کند. این نوع ارتباط سرعت بالاتری(حدود 4Mbps) نسبت به حالت غیر همزمان دارد با این حال به خاطر کابل کشی بیشتر و مدارات پیچیده تری که مورد نیاز است در عمل از ارتباط غیر همزمان استفاده می شود.
نوع غیر همزمان این ارتباط، به کلاک میکروکنترلری کهUART درآن قرار دارد وابسته است و هیچ سیگنال کلاک خارجی جهت هماهنگی با دستگاه های دیگر وجود ارسال نمی شود. بنابراین دو دستگاهی که با یکدیگر تبادل دیتا می کنند،ممکن است فرکانس کلاک متفاوتی داشته باشند اما باید سرعت انتقال دیتای یکسانی داشته باشند. این سرعت با نام Baud Rate شناخته می شود دقت کنید که این سرعت با نرخ انتقال بیت ها (Bit Rate) متفاوت است. Baud Rate هر یک از دستگاه های فرستنده یا گیرنده، ممکن است 3 تا 5 درصد با یکدیگر متفاوت باشند.
Baud Rate هایی که به صورت قرار دادی بین فرستنده و گیرنده در یک ارتباط سریال، مشخص می شود مقادیر خاصی می توانند داشته باشند که مقدار های 4800، 19200،9600 ,38400، 57600، 115200 (بیت بر ثانیه)از معمول ترین این مقادیر اند. مثلا Baud Rate 9600 به این معنی است که در هر ثانیه 9600 بیت منتقل می شود. پس هر بیت در فاصله ی زمانی 104.166 میکروثانیه باید منتقل شود و در تمام این مدت مقدار خود را حفظ کند تا گیرنده نمونه برداری مناسبی انجام دهد.
حالا فرض کنید فرکانس اسیلاتور استفاده شده 40 مگا هرتز باشد،هر سیکل کلاک 25 نانو ثانیه خواهد بود و برای این که به مدت 104.166 میکروثانیه ارسال انجام شود، حدود 4166.64(104.166us÷20ns) کلاک باید ارسال انجام شود. در طرف گیرنده مشابه همین محاسبات، و با توجه به فرکانس کلاک آن که لزوما با فرستنده یکسان نیست، تعداد کلاکی که طی آن دریافت انجام می شود تعیین می شود.
برای تمام مقدارهای دیگر Baud Rate هم به همین ترتیب محاسبه می شود.
اول از همه باید گفت که در حالتی که هیچ ارسال و دریافتی انجام نمی شود یا اصطلاحا” خط انتقال در حالت Idle قرار دارد، سطح ولتاژ مربوط به یک منطقی بر روی خط ارسال قرار می گیرد. تغییر وضعیت از یک به صفر منطقی به معنی شروع ارسال است و گیرنده آماده دریافت اطلاعات می شود. این صفر شدن به مدت یک بیت باید طول بکشد و به آن start bit گفته می شود. بعد از آن یک بایت دیتا به ترتیب از بیت کم ارزش(LSB) به پردازش (MSB) ارسال می شود. در نهایت یک بیت برای چک شدن درستی دیتای ارسال شده، روی خط ارسال قرار می گیرد که بیت Parity نام دارد.
بیت Parity در واقع XOR تک تک بیت های دیتا است که اگر تعداد 1 های دیتا فرد باشد این مقدار 1 و در غیر اینصورت صفر خواهد بود. گیرنده با دریافت دیتا، یک بار دیگر این XOR را محاسبه می کند و اگر با مقدار بیت Parity دریافت شده متفاوت باشد، متوجه خطای آن شده و آن بسته را کلا نادیده می گیرد. این بیت را با اسم بیت توازن هم می شناسیم.
در نهایت، خط ارسال به حالت Idle خود که همان 1 شدن خروجی بود باز میگردد که stop bit نامیده می شود. پس همانطور که مشخص است هر بسته ارسالی 11 بیتی است که 8 بیت(یک بایت) دیتا را منتقل می کند.
سه روش ارتباط بین و فرستنده و گیرنده در ارتباط سریال تعریف می شوند که به جهت های ارسال و دریافت دیتا مربوط می شوند:
در این نوع ارتباط، ارسال دیتا فقط در یک جهت ممکن است. مثل ارسال اطلاعات به پرینتر (در جهت عکس تبادل دیتا انجام نمی شود.)
در این روش ،فقط یک کانال ارتباطی بین گیرنده و فرستنده وجود دارد اما انتقال به صورت دو طرفه انجام می شود. یعنی در هر زمان فقط در یکی از جهت ها می توان دیتا منتقل کرد.
در این حالت دو کانال ارتباطی جداگانه برای هر یک از جهت ها وجود دارد که می توان همزمان در هر دو جهت انتقال دیتا انجام داد. در هر دستگاه یک خروجی برای فرستنده(به اسم TX) و یک گیرنده (به اسم RX) در نظر گرفته شده که TX هر دستگاه به ورودی RX دستگاه مقابل وصل می شود و برعکس.
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *
کليه حقوق اين سايت متعلق به سام نیک میباشد