ارتباط سریال – 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 ) .
سایر خصوصیات و تنظیمات و نحوه ایجاد ارتباط، به نوع میکروکنترلر بستگی دارد که برای هر میکرو به یک صورت می باشد. اما به صورت کلی توسط چند رجیستر این تنظیمات و … قابل اجرا شدن می باشد .
با سلام به همه
من نیاز دارم اطلاعات را به روش SPI انتقال دهم .
و همین طور روش کار کردن این استاندارد را لطفا توضیح دهید و یا یک مرجع معرفی کنید .
با تشکر فراوان .Elmidor
سلام دوست عزیز.
به عنوام مرجع می توانید کتاب میکروکنترلهای AVR , نوشته علی کاهه را مطالعه بفرمایید.
موفق و پیروز باشید.
به صورت خلاصه میشه گفت که 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 ) ذخیره می شوند .
اگه من بخواهم با ۱۲۵۰۸ ( یا هر میکرو دیگری که به صورت سخت افزاری این قابلیت را ندارد .) از این طریق اطلاعات را انتقال دهم باید به صورت نرم افزاری آن را پیاده سازی کنم . بنا بر این احتیاج به نحوه کار کرد آن به صورت جرء به جزء دارم .
اگر منبع کاملی دارید لطفا به من بگید .
باز هم ممنون
کتاب مرجع کامل میکروکنترلرهای 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 ۳۰۷
معرفی تراشهها و ماژولهای کاربردی ۳۰۸