ارتباط سریال – USART

USART

USART

ارتباط سریال – USART :

USART نوعی از یک ارتباط سریال است که می تواند بین تمامی قطعاتی که از این قابلیت پشتیبانی می کنند، اجرا می شود . این ارتباط به صورت همزمان و غیر همزمان قابل پیاده سازی است . نام USART از واژه ( Universal Synchronous Asynchronous Receiver Transmitter ) گرفته شده است.

این امکان تنها برای تراشه هایی قابل پیاده سازی است که از این قابلیت پشتیبانی می کنند و سخت افزار خاص پورت سریال یا RS232 را دارا می باشند .

سخت افزار USART :

نوع غیر همزمان USART با نام UART شناخته می شود .

سخت افزار حالت USART در حالت داخلی به صورت دو بخش ارسال – دریافت می باشد . پایه های مربوط به USART نیز به دو بخش پایه های مربوط به انتقال همزمان و پایه های مربوط به انتقال غیر همزمان تقسیم می شوند . در نوع غیر همزمان پایه ارسال اطلاعات با نام TX و پایهء دریافت با نام RX شناخته می شوند . در نوع همزمان که کلاک بر زمان ارسال اطلاعات نظارت دارد ، پایه های مربوطه به دو پایهء DT ( خط داده ) و CK ( خط کلاک ) تقسیم می شوند .

بلوک دیاگرام بخش ارسال

بلوک دیاگرام بخش ارسال

 

بلوک دیاگرام بخش دریافت

بلوک دیاگرام بخش دریافت

عبارت FIFO که در شکل نشان داده شده است ، بیانگر روش انتقال و ذخیره سازی بین بافر و RCREG است و به این معنا است که اطلاعاتی که ابتدا دریافت می شود ، ابتدا هم خارج می شود Frist Input / Frist Output ) .

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

۵ پاسخ

  1. المی گفت:

    با سلام به همه
    من نیاز دارم اطلاعات را به روش SPI انتقال دهم .
    و همین طور روش کار کردن این استاندارد را لطفا توضیح دهید و یا یک مرجع معرفی کنید .
    با تشکر فراوان .Elmidor

  2. سیاوش گفت:

    سلام دوست عزیز.

    به عنوام مرجع می توانید کتاب میکروکنترلهای AVR , نوشته علی کاهه را مطالعه بفرمایید.

    موفق و پیروز باشید.

  3. سایبر گفت:

    به صورت خلاصه میشه گفت که spi یک پروتکل ارتباطی سریال از نوع سنکرون ( همزمان ) هست که برای سرعت های بالا طراحی شده . این ارتباط توسط تراشه اصلی (master ) کنترل میشه و کلاک مورد نیاز برای ارتباط هم توسط همین تراشه تولید میشه .
    برای ارتباط به ۴ پایه نیاز هست که البته میشه یکی از پایه ها رو استفاده نکرد و با سه پایه این عمل رو انجام داد .
    تو تراشه های pic ، پایه های SDI , SDO , SCK و SS برای این ارتباط در نظر گرفته شده اند ( البته تراشه هایی که این ماژول رو به صورت داخلی دارن . مثل F877-6 ) .
    پایه SDI برای وارد کردن اطلاعات به کار می ره ( Serial Data Input )
    پایه SDO برای ارسال اطلاعات به کار می ره ( Serial Data Output )
    پایه SCK مخصوص اراسل کلاک هست که توسط تراشه MASTER تولید می شه
    پایه SS هم دارای کاربرد جدا گانه ای برای مد های MASTER و SLAVE هست . اما به طور خلاصه میشه گفت مخصوص فعال سازی خارجی ارتباط SPI هست که میشه غیر فعال هم باشه .
    هر میکرو هم می تونه تو مدهای MASTER یا SLAVE کار کنه .
    در حالتی که MASTER باشه پایه ها به صورت زیر پیکربندی میشن :
    SDI = INPUT
    SDO = OUTPUT
    SS= OUTPUT
    SCK = OUTPUT

    و در حالت SLAVE :
    SDI = INPUT
    SDO = OUTPUT
    SS = INPUT
    SCK = INPUT

    هر تراشه یا قطعه جانبی که ارتباط با اونها بر قرار میشه دارای ۲ شیفت رجیستر داخلی هستند که مخصوص وارد کردن اطلاعات به صورت سریال و خارج شدن به صورت موازی هستند .
    عمل وارد کردن اطلاعات به این صورت هست که با هر کلاک ، یک بیت ارسال و یا در یافت میشه . عمل ارسال و دریافت به صورت همزمان انجام میشه . بعد از کلاک شماره ۸ ، اطلاعات از شیفت رجیستر مخصوص خارج میشه و در ثبات مخصوص ورودی ( SSPBUF ) ذخیره می شوند .

  4. المی گفت:

    اگه من بخواهم با ۱۲۵۰۸ ( یا هر میکرو دیگری که به صورت سخت افزاری این قابلیت را ندارد .) از این طریق اطلاعات را انتقال دهم باید به صورت نرم افزاری آن را پیاده سازی کنم . بنا بر این احتیاج به نحوه کار کرد آن به صورت جرء به جزء دارم .
    اگر منبع کاملی دارید لطفا به من بگید .
    باز هم ممنون

  5. سیاوش گفت:

    کتاب مرجع کامل میکروکنترلرهای ARM LPC17xx تالیف محمد خوش باطن ، تنها کتاب موجود در بازار در باره ی این سری از میکروکنترلرها می باشد. حداکثر سرعت این سری تراشه ها ۱۲۰MHz می باشد.
    در این کتاب سعی شده تمامی نکات مربوط به برنامه نویسی و برنامه ریزی اونها به همراه پروژه های عملی توضیح داده شده.
    کامپایلر keil و زبان C از بخش های دیگر این کتاب هستند.

    اینم فهرست کتاب

    مقدمه ۱۱
    فصل ۱ : آشنایی با پردازنده‏های ARM ۱۷
    ۱-۱ نسل‎های مختلف پردازنده ARM ۱۸
    ۱-۲ معماری ARM ۱۹
    ۱-۲-۱ رجیسترهای خاص (Special Register) ۲۰
    ۱-۲-۲ بیتهای رجیستر APSR (قابل تغییر توسط کاربر) ۲۱
    ۱-۲-۳ بیتهای رجیستر EPSR (فقط خواندنی) ۲۲
    ۱-۲-۴ رجیستر PRIMASK ۲۲
    ۱-۲-۵ رجیستر FAULTMASK ۲۲
    ۱-۲-۶ رجیستر BASEPRI ۲۲
    ۱-۲-۷ بیتهای رجیستر IPSR (فقط خواندنی) ۲۲
    ۱-۲-۸ رجیستر CONTROL ۲۳
    فصل ۲ : میکروکنترلرهای LPC ۲۵
    ۲-۱ میکروکنترلرهای سری LPC23xx ۲۵
    ۲-۱-۱ خصوصیات میکروکنترلر LPC2364 ۲۶
    ۲-۱-۲ خصوصیات میکروکنترلر LPC2366 ۲۹
    ۲-۱-۳ خصوصیات میکروکنترلر LPC2368 ۳۲
    ۲-۱-۴ خصوصیات میکروکنترلر LPC2378 ۳۵
    ۲-۲ میکروکنترلرهای سری LPC24XX ۳۸
    ۲-۲-۱ خصوصیات میکروکنترلر LPC2468 ۳۸
    ۲-۲-۲ خصوصیات میکروکنترلر LPC2478 ۴۱
    ۲-۳ میکروکنترلرهای سری LPC17XX(Cortex-M3) ۴۴
    ۲-۳-۱ خصوصیات LPC1763/64/65/66/67/68/69 ۴۴
    فصل ۳ : محیط برنامه نویسی KEIL uVision 49
    ۳-۱ نحوه ایجاد ‏یک پروژه ۵۰
    ۳-۲ برای مطالعه ۵۲
    ۳-۳ معرفی محیط شبیه سازی ۵۵
    ۳-۴ مشاهده مقدار رجیسترهای تراشه و متغیرها ۵۸
    ۳-۵ نحوه استفاده از نرم افزار H-Convertor ۵۹
    فصل ۴ : ساخت پروگرامر ARM ۶۱
    ۴-۱ پروگرامر Flash Magic ۶۱
    ۴-۲ دیباگر (Debugger) و پروگرامر JTAG ۶۳
    فصل ۵ : دستورها و توابع محیط برنامه نویسی KEIL ۶۹
    ۵-۱ بدنه‏ یک برنامه در محیط KEIL ۶۹
    ۵-۱-۱ توضیحات (comments) ۷۱
    ۵-۱-۲ دستورات #include ۷۱
    ۵-۱-۳ دستورات #define ۷۲
    ۵-۲ اعداد، متغیرها و اشاره‎گرها ۷۳
    ۵-۲-۱ انواع متغیرها در Keil ۷۳
    ۵-۲-۲ اشاره‎گرها (Pointers) ۷۴
    ۵-۳ عملگرها ۷۵
    ۵-۳-۱ عملگرهای یگانی ۷۵
    ۵-۳-۲ عملگرهای حسابی ۷۵
    ۵-۳-۳ عملگرهای مقایسه ای ۷۶
    ۵-۳-۴ عملگرهای بیتی ۷۶
    ۵-۳-۵ عملگرهای منطقی ۷۶
    ۵-۳-۶ عملگرهای انتسابی‏یا ترکیبی ۷۷
    ۵-۴ دستورهای کنترلی و شرطی ۷۷
    ۵-۴-۱ دستور شرطی if-else ۷۷
    ۵-۴-۲ حلقه شرطی while() ۷۸
    ۵-۴-۳ حلقه شرطی do-while() ۷۹
    ۵-۴-۴ حلقه for() ۷۹
    ۵-۴-۵ دستور goto ۸۰
    ۵-۴-۶ دستور break; ۸۰
    ۵-۴-۷ دستور switch() ۸۱
    ۵-۵ ایجاد تأخیر در برنامه ۸۲
    ۵-۶ زیر برنامه ۸۳
    فصل ۶ : کنترل توان و کلاک در تراشه‏های LPC ۸۵
    ۶-۱ معماری میکروکنترلرهای LPC ۸۵
    ۶-۱-۱ باسهای داخلی تراشه ۸۵
    ۶-۱-۲ Bus Matrix ۸۵
    ۶-۱-۳ نقشه‏ی حافظه ۸۸
    ۶-۲ عملکرد تراشه پس از Reset ۹۴
    ۶-۲-۱ تعیین منبع ریست ۹۶
    ۶-۳ تعیین کلاک سیستم و رجیسترهای CLKSRCSEL و SCS ۹۶
    ۶-۳-۱ بلوک PLL0 (Phase Locked Loop) ۹۹
    ۶-۳-۱-۱ رجیستر کنترل PLL0 (PLL0CON) ۹۹
    ۶-۳-۱-۲ رجیستر تنظیمات PLL0 (PLL0CFG) ۱۰۱
    ۶-۳-۱-۳ رجیستر وضعیتِ PLL0 (PLL0STAT) ۱۰۳
    ۶-۳-۱-۴ رجیسترPLL0FEED ۱۰۳
    ۶-۳-۲ تنظیم کلاک CPU و ادوات جانبی ۱۰۴
    ۶-۳-۲-۱ Cclk (CPU Clock) ۱۰۴
    ۶-۳-۲-۲ USB CLK ۱۰۵
    ۶-۳-۲-۳ Pclk (Peripheral clk) ۱۰۶
    ۶-۳-۳ مراحل تنظیم PLL0 ۱۰۹
    ۶-۳-۴ بلوک PLL1 ۱۱۰
    ۶-۴ کنترل توان (Power Control) ۱۱۱
    ۶-۴-۱ ویژگی Sleep On Exit ۱۱۳
    ۶-۴-۲ (wakeup interrupt controller) WIC ۱۲۰
    ۶-۵ ریست نرم افزاری‏یا کنترل Self-Reset ۱۲۱
    ۶-۶ انتقال کلاک داخلی روی پایه‏ی خروجی ۱۲۴
    ۶-۷ واحد حفاظت حافظه (Memory Protection Unit : MPU) ۱۲۶
    فصل ۷ : کنترل کننده وقفه‏ی برداری تودرتو (NVIC) 127
    ۷-۱ برای مطالعه ۱۲۸
    ۷-۲ ورودی‏های وقفه و نحوه به تعویق افتادن وقفه‏ها ۱۲۸
    ۷-۳ جدولهای بردار (Vector Tables) ۱۳۳
    ۷-۴ رجیسترهای مورد نیاز در تنظیم وقفه ۱۳۴
    ۷-۴-۱ رجیسترهای (Interrupt Set , Clear Enable Register) ISER, ICER ۱۳۶
    ۷-۴-۲ رجیسترهایISPR , ICPR (Interrupt Set,Clear Pending Register) ۱۳۹
    ۷-۴-۳ رجیستر IABR (Interrupt Active-Bit Register) ۱۴۲
    ۷-۴-۴ رجیسترهای تعیین سطح اولویت IPR (Interrupt Priority Register) ۱۴۴
    ۷-۴-۵ رجیستر تریگر نرم افزاری وقفه: STIR (Software Trigger Interrupt) ۱۴۸
    ۷-۵ روش تنظیم‏یک وقفه ۱۴۹
    ۷-۶ روال سرویس وقفه ISR ۱۵۰
    ۷-۷ تغییر جدول بردار وقفه ۱۵۲
    ۷-۸ وقفه‏های نرم افزاری ۱۵۳
    ۷-۹ برای مطالعه ۱۵۲
    ۷-۱۰ مثال کامل از راه اندازی وقفه تایمر شماره دو ۱۵۳
    ۷-۱۱ دسترسی به رجیسترهایی که مستقیما در دسترس نیستند ۱۵۸
    ۷-۱۲ توابع درونی ( استفاده از دستورالعملهای ویژه‏ی اسمبلی در C ) ۱۶۰
    ۷-۱۳ (Cortex Microcontroller Software Interface Standard)CMSIS ۱۶۲
    ۷-۱۳-۱ مزایای CMSIS ۱۶۳

    فصل ۸ : آشنایی با امکانات جانبی تراشه‏های LPC ۱۶۵
    ۸-۱ پورتهای ورودی/خروجی (GPIO) ۱۶۵
    رجیستر FIOxDIR (FIO0DIR-FIO4DIR) ۱۶۷
    رجیستر پوشش پورت FIOxMASK (FIO0MASK – FIO4MASK) ۱۷۰
    رجیسترهای PINSEL0-10 جهت انتخاب نحوه عملکرد پینها ۱۷۱
    رجیسترهای PINMODE0-9 و PINMODE_OD0-4 ۱۷۲
    ۸-۲ رجیسترهای وقفه GPIO ۱۷۲
    رجیستر وضعیت معوق وقفه‏ی ورودی/خروجی IOIntStatus ۱۷۳
    رجیستر فعالسازی وقفه برای لبه‏ی بالا رونده پینهای پورت صفر IO0IntEnR ۱۷۴
    رجیستر فعالسازی وقفه برای لبه‏ی بالا رونده پینهای پورت دو IO2IntEnR ۱۷۶
    رجیستر فعالسازی وقفه برای لبه‏ی پایین رونده پینهای پورت دو IO2IntEnF ۱۷۸
    رجیستر وضعیت وقفه برای لبه پایین رونده پورت صفر IO0IntStatF ۱۷۹
    رجیستر وضعیت وقفه برای لبه پایین رونده پورت دو IO2IntStatF ۱۸۰
    رجیستر پاک کردن وقفه پورت صفر IO0IntClr ۱۸۰
    رجیستر پاک کردن وقفه پورت دو IO2IntClr ۱۸۰
    ۸-۳ مبدل آنالوگ به دیجیتال (ADC) ۱۸۱
    ۸-۳-۱ مراحل پیکره بندی ADC ۱۸۱
    ۸-۳-۲ رجیسترهای بلوک ADC ۱۸۳
    رجیستر عمومی‏اطلاعات ADC (AD0GDR) ۱۸۶
    رجیستر فعالسازی وقفه AD – (AD0INTEN) ۱۸۷
    رجیسترهای اطلاعات کانالهای صفر تا ۷ (AD0DR0 to AD0DR7) ۱۸۹
    رجیستر وضعیت ADC – (AD0STAT) ۱۹۰
    ۸-۴ مبدل دیجیتال به آنالوگ (DAC) ۱۹۲
    ۸-۴-۱ مراحل پیکره بندی DAC ۱۹۲
    ۸-۴-۲ رجیسترهای بلوک DAC ۱۹۳
    رجیستر تبدیل مقدار D/A (DACR) ۱۹۴
    ۸-۵ بلوک ارتباط سریال (UART) ۱۹۵
    ۸-۵-۱ مراحل پیکره بندی UART : ۱۹۶
    ۸-۵-۲ رجیستر‏های بلوک UART ۱۹۷
    ۸-۶ تایمرها ۲۰۸
    ۸-۶-۱ مراحل پیکره بندی تایمرها ۲۱۱
    ۸-۶-۲ رجیسترهای بلوک Timer ۲۱۲
    ۸-۷ تایمر WATCHDOG ۲۲۱
    ۸-۷-۱ رجیسترهای بلوک WATCHDOG ۲۲۳
    ۸-۸ بلوک PWM ۲۲۵
    ۸-۸-۱ مراحل پیکره بندی PWM ۲۲۸
    ۸-۸-۲ رجیسترهای بلوک PWM ۲۲۹
    ۸-۹ بلوک RTC ۲۳۸
    ۸-۹-۱ رجیسترهای بلوک RTC ۲۴۰
    ۸-۱۰ بلوک SPI (Serial Peripheral Interface) ۲۴۶
    ۸-۱۰-۱ مراحل پیکره بندی بلوک SPI ۲۴۶
    ۸-۱۰-۲ رجیسترهای بلوک SPI ۲۴۷
    ۸-۱۱ ارتباط سریال I2C ۲۵۱
    مد FAST Plus ۲۵۲
    فعالسازی وقفه I2C ۲۵۲
    ۸-۱۱-۱ رجیسترهای بلوک I2C ۲۵۳
    ۸-۱۱-۲ انتقال دیتا از Master به Slave 256
    ۸-۱۱-۳ انتقال دیتا از Slave به Master 256
    ۸-۱۱-۴ ارسال در حالت Master ۲۵۷
    ۸-۱۱-۵ دریافت در حالت Master ۲۵۹
    ۸-۱۱-۶ دریافت در حالت Slave ۲۶۰
    ۸-۱۱-۷ ارسال در حالت Slave ۲۶۲
    جزئیات جدول وضعیت در حالت ارسال (Slave) ۲۶۳
    ۸-۱۲ ورودی‏های وقفه خارجی (EINT : External Interrupt) ۲۶۵
    ۸-۱۲-۱ رجیسترهای وقفه خارجی ۲۶۶
    پروژه‏های عملی ۲۷۱
    ۹-۱ کنترل LED توسط‏یک کلید ۲۷۴
    ۹-۲ اسکن صفحه کلید۴*۴ توسط انکدر۷۴C922 و وقفه خارجی(EINT0) ۲۷۵
    ۹-۳ زمان سنج ۳ رقمی‏با استفاده از بلوک RTC ۲۷۷
    ۹-۴ نمایش دما روی LCD با سنسور دمای LM35 ۲۷۹
    ۹-۵ کنترل موتور DC توسط بلوک PWM و آی سی L298 ۲۸۲
    ۹-۶ کنترل موتور پله ای (STEPPER MOTOR) ۲۸۵
    ۹-۷ مولد موج دندان اره ای و مثلثی توسط بلوک DAC ۲۸۷
    خلاصه دستورات اسمبلی ۲۸۹
    توابع دستیابی به هسته CMSIS ۲۹۳
    ساختار رجیسترهای PINMODE_OD , PINMODE , PINSEL ۳۰۰
    LCD کاراکتری ۳۰۵
    منبع تغذیه سوئیچینگ ۳۵V-3A ۳۰۷
    معرفی تراشه‏ها و ماژول‏های کاربردی ۳۰۸

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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