در مورد uart

saalek110

Well-Known Member
در مورد uart



UART vs USART​

USART is the basic form of UART. Technically, they are not the same
But, the definition is the same for both of them.


میگه یوسارت پایه یوآرت است از نظر تکنیکی یکی نیستند ولی تعریف هر دوشون یکیه.

Screenshot_۲۰۲۳-۱۱-۱۲_۲۰۳۷۰۷.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member

What is UART?​

UART stands for universal asynchronous receiver / transmitter and defines a protocol, or set of rules, for exchanging serial data between two devices. UART is very simple and only uses two wires between transmitter and receiver to transmit and receive in both directions.



میگه یوآرت برای انتقال اطلاعات بین دو وسیله است
و با دو سیم انجام میشه
و بسیار ساده است ، very simple
و انتقال دو طرفه است.



Both ends also have a ground connection. Communication in UART can be simplex (data is sent in one direction only), half-duplex (each side speaks but only one at a time), or full-duplex (both sides can transmit simultaneously).

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

saalek110

Well-Known Member
سایتهای ایرانی که درباره UART بحث کرده اند:




سایت فارسی بالا ، در مورد uart صحبت کرده ، فلیپ فلاپ ها را هم گفته. قالب انتقال را هم گفته.



سایت آیرنکس هم قالب انتقال را گفته.


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


سایت علم اینجا ، یعنی سایت بالا ، همان مباحت آیرنکس و ردرونیک را گفته ، بعلاوه نشان دادن رابط usb به ttl که برای ارتباط با کامپیوتر کاربرد داره.



سایت melec هماین مباحث را گفته ولی شاید با کمی شرح بیشتر.



سایت تکنیک نوین هم همین مباحث را گفته ، شکل پین سریال قدیمی کامپیوتر را هم نشان داده.




Screenshot_۲۰۲۳-۱۱-۱۲_۰۶۱۸۵۴.jpg

سایت سیسوگ کد گذاشته و کتابخانه اش را.
 
آخرین ویرایش:

saalek110

Well-Known Member
UART یک پروتکل ارتباط سریال کامل دوطرفه است که در اصل یک تراشه طراحی شده برای انجام ارتباطات ناهمزمان می باشد.

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

عملکرد UART این است که داده های ورودی و خروجی را به جریان دودویی سریال تبدیل می کند.

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


 

saalek110

Well-Known Member

علت وجود UART چیست؟

پروتکل هایی مانند SPI (رابط سریال جانبی)، USB (گذرگاه سریال عمومی) و Bus برای ارتباط سریع استفاده می شوند.

در صورت عدم نیاز به انتقال داده با سرعت بالا، از UART استفاده می شود.

UART یک وسیله ارتباطی ارزان با یک فرستنده/گیرنده است.

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

 

saalek110

Well-Known Member

بلوک دیاگرام UART

برای این که بهتر متوجه شویم UART چیست، باید با اجزای تشکیل دهنده این پروتکل پر استفاده آشنا شویم.

UART از اجزای نشان داده شده در شکل زیر تشکیل شده است.

Screenshot_۲۰۲۳-۱۱-۱۲_۰۶۲۷۰۴.jpg

فرستنده متشکل از رجیستر نگهدارنده انتقال، شیفت رجیستر انتقال و منطق کنترلی است.

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

saalek110

Well-Known Member
به طور مشترک، هر دو فرستنده و گیرنده با یک مولد Baud rate (نرخ باود) عمل می کنند.

مولد نرخ باود سرعت تولید فرستنده و گیرنده را برای ارسال/دریافت داده فراهم می کند.
 

saalek110

Well-Known Member
داده ای که قرار است منتقل شود، در رجیستر نگهداری انتقال (Transmit hold register) ذخیره می شود.

رجیستر شیفت انتقال و رجیستر شیفت گیرنده بیت ها را به سمت چپ یا راست جا به جا می کنند تا
زمانی که یک بایت داده ارسال/دریافت شود.

علاوه بر این، یک منطق کنترل خواندن یا نوشتن ارائه شده است تا زمان خواندن/نوشتن را تشخیص دهد.
 

saalek110

Well-Known Member

در سایت فارسی بالا ، در مورد اینکه چطور گیرنده می فهمد اطلاعاتی برای دریافت آمده صحبت شده.
یک بحث هایی کرده و بعد به یک وقفه پرداخته و روی اون وقفه بحث کرده و کد نوشته.

من فعلا نخواستم به طور جزئی وارد بحث بشم ، خواستم فعلا به شکل کلی با مفاهیم بحث آشنا بشویم.

با بیان های مختلف افراد اگر روبرو شویم ، کم کم مطلب دستمان می آید.
 

saalek110

Well-Known Member
سالک: یک مقدار سایتهای ایرانی نامفهوم است ، من فکر می کنم خیلی هاشون یک ترجمه ناقص از یک سایت خارجی است.
اینکه نویسنده هر چی را فهمیده بیاید بنویسد ، کمتر دیده می شود ، که فکر کنم اسمش تالیف باشد. تالیف با ترجمه فرق دارد.


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

یک چیزی را هم بگم که شاید درست باشه و شاید غلط .... دید من الان این جوری است که :


ارتباط ما با میکروکنترلر ، از طریق رجیسترهاست.
رجیستر هم یک سری حافظه است.

رجیسترها مثل یک سری دکمه برای ما هستند...

اگر با دستگاه تراش آشنایی داشته باشید ، یک سری دکمه و اهرم دارد ....
فرد استفاده کننده از دستگاه تراش با اون دکمه ها و اهرم ها کار می کنه.
خواستم مثالی بزنم تا در مورد میکروکنترلر دید ایجاد بشه...

حالا رابطه ما با میکروکنترلر هم همین رجیسترهاست.البته شاید این یک مسئله بدیهی باشد و نیازی به گفتن نداشت ...
ادامه: ما تنها کاری که می توانیم بکنیم دستکاری رجیسترهاست...
ابزار بعدی متغیرها:
تعریف کردن متغیر در حافظه های مختلف ، منظورم فلش و ... است.
در کدهایی که من از سایت اکسپلور امبدد دیدم ... از متغیر هم استفاده کرده بود ،
مثلا وقتی یک رجیستر روشن میشد با تابعی به نام ISR این اتفاق را تشخیص می داد و یک متغیر را تغییر می داد.

این ساختاری است که شرکت سازنده میکروکنترلر ایجاد کرده.. و ما باید این ساختار را بشناسیم و بهترین استفاده را ازش بکنیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
Screenshot_۲۰۲۳-۱۱-۱۲_۱۹۴۱۱۲.jpg


A universal asynchronous receiver/transmitter (UART) is a block of circuitry responsible for implementing serial communication. Essentially, the UART acts as an intermediary between parallel and serial interfaces. On one end of the UART is a bus of eight-or-so data lines (plus some control pins), on the other is the two serial wires - RX and TX.
میگه uart رابطی بین موازی و سری است، اون قسمت که قرمز کردم.
شاید این طوری ترجمه کردن بهتر باشه تا متن انگلییی را مخفی کنیم.

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

saalek110

Well-Known Member
Screenshot_۲۰۲۳-۱۱-۱۲_۲۰۰۹۴۸.jpg

Here, I have used ESP8266 (32-bit microcontroller) which has inbuilt UART. The communication can be done with ESP8266 using AT commands via RS232 to TTL level converter (MAX232). The below figure shows the connection of ESP8266 with PC
(personal computer).
میگه eSP8266 یک میکروکنترلر ۳۲ بیتی است.
و uart دارد.
و اومده با یک رابط به کامپیوتر وصل کرده.
خواستم شکل این فیش کامپیوتر را ببینید.
بعضی ها شکل این فیش براشون اشناست.
میگن با اومدن usb این فیش ها رفت کنار.


صفحه بالا را یک سایت ایرانی ترجمه کرده.


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

ترجمه های دوستان از این سایت ها هست و شما خودتون می توانید اون ها را بخونید ، دلیلی نداره من اون ترجمه ها را اینجا کپی کنم. به شکل بحث برویم جلو بیشتر می فهمیم.
من هم اون سایتها را خوندم و برداشت هایم را اینجا منتقل می کنم.
 
آخرین ویرایش:

saalek110

Well-Known Member
AVR UART/Serial Communication
In AVR microcontroller, the following sets of registers are used for communicate over UART:

UCSRA: In this registers flags used for various errors that might occurs during the data transmission. e.g. frame error, parity error etc.
UCSRC: In this registers we can set the stop bits, parity mode and so on.
UCSRB: In this register we are providing with lot of enable bits. For example different interrupt enable bits for transmitting and receiving the enable bits.
UBRRH & UBRRL: In UBRRL register, lower byte is used for storing the required Baud rate and in UBRRH register, the higher byte is used for storing the required Baud rate.
More information about the above registers can be found in a datasheet of the AVR microcontroller you are using.


در بالا، رجیسترهای uart را می بینیم.
اولی UCSRA ، برای خطاها هنگام انتقال ، مثلا خطای پریتی ، یا خطای فریم

سالک: بحث پریتی و فریم در این تاپیک نشد ولی در سایتهای فارسی توضیح داده شده.

دومی ، UCSRC ، در این رجیستر بیت استاپ ، پریتی مود و ..... تنظیم می شود.
سومی UCSRB ، بیت های enable تنظیم می شود.
چهارمی ، UBRRH و UBRRL برای تنظیم Baud ریت.

نوشته باقی اطلاعات را ازدیتاشیت بخوانید.

با دانستن کاربرد این رجیسترها ، فهم کدها راحت تر می شود.
 

saalek110

Well-Known Member
PHP:
 #include <avr/io.h>.
void serial_init(){
UCSRA=0x00;
UCSRC=0x86;
UBRRL=0x19;
UCSRB=0x18;
UBRRH=0x00;
}

unsigned char serial_read()
{
    while(!(UCSRA & (1<<RXC)));
    return UDR;
}
void serial_send(unsigned char dat)
{
    while(!(UCSRA & (1lt;<UDRE)));
    UDR = dat;
}

کد این پست هم در ادامه سایت پست قبل ، بعد معرفی رجیسترها نوشته شده است.

کد فقط برای آشنایی بود ، که کمی طرز استفاده از این رجیسترها در کد دیده شود.
 

saalek110

Well-Known Member

بحث های این تاپیک را هم بخوانید.
 

جدیدترین ارسال ها

بالا