بخش چهارم آموزش ARM : معرفی و راه اندازی میکروکنترلر LPC2138

پیش نیاز ها :

کل مباحث دوره آموزشی AVR : از اینجا شروع کنید

شروع دوره های آموزش مجازی ARM

بخش اول آموزش ARM

بخش دوم آموزش ARM

بخش سوم آموزش ARM


مقدمه

در قسمت قبل با معماری میکروکنترلرهای ARM7 و سری LPC213x آشنا شدیم. اما معمولا میکروکنترلرهای Cortex M3 ، یعنی سری LPC176x در پروژه ها به علت قابلیت های بیشتر و سرعت بالاتر ترجیح داده می شود. با این حال ویژگی های مفیدی ، باعث می شود که ابتدا میکروکنترلرهای سری ARM7 را یادبگیریم. یکی از این ویژگی ها ، ساده تر بودن کار با آن هاست به طوری که در هنگام برنامه نویسی با تعداد رجیسترهای کمتری سر و کار داریم و نیز دسترسی به رجیسترها راحت تر است. ویژگی دیگر پشتیبانی کردن نرم افزار پروتئوس از میکروکنترلرهای ARM7 است. به طوری که میتوان در این نرم افزار میکروکنترلرهای سری LPC213x را شبیه سازی نمود. ( نرم افزار پروتئوس سری LPC176x یعنی Cortex M3 را پشتیبانی نمی کند) . بنابراین این ویژگی ها میتواند کمک کند تا به طور ملموس تر و راحت تر میکروکنترلرهای ARM را فرا گرفته و ضمن یادگیری مفاهیم به طور عمیق تر ، با برنامه نویسی راحت تر و شبیه سازی بیشتر جلو برویم.

LPC213X_Preview

مقایسه بین میکروکنترلرهای سری LPC213X

همانطور که در جدول زیر مشاهده می کنید ، در این سری ۵ میکروکنترلر LPC2131,LPC2132,LPC2134,LPC2136 و LPC2138 وجود دارد و ۵ میکروکنترلر دیگر به صورت LPC213X/01 نیز در کنار آن مشاهده می شود. میکروکنترلرهایی که به آن پسوند ۰۱ اضافه شده است ، نسخه جدیدتر و با قابلیت های بهبود یافته ی نسخه بدون پسوند می باشد.

LPC213X_Compare

به طور کلی بهبود هایی که در LPC213X/01 وجود دارند عبارت است از :

  • سریع تر شدن قابلیت تغییر در پورت های GPIO تا ۳٫۵ برابر
  • تخصیص رجیستری برای ذخیره نتایج مبدل های Analog/Digital
  • اضافه شدن مولد BuadRate به UART0/1 ، قابلیت تشخیص خودکار نرخ ارسال/دریافت و اضافه شدن قابلیت کنترل به صورت HandShake در آن
  • بهبود یافتن BrownOutDetection و رجیستر کنترل توان مصرفی ( PCON )

تذکر : هر کجا که میگوییم LPC213X منظور همان آخرین نسخه یعنی LPC213X/01 است.


 پایه های میکروکنترلر LPC2138

NXP_LQFP64_200

از میان میکروکنترلرهای سری LPC213x ، میکروی دارای بیشترین قابلیت یعنی LPC2138 انتخاب می شود. این میکروکنترلر در بسته بندی TQFP و ۶۴ پایه عرضه می شود. پایه های این میکروکنترلر را در شکل زیر مشاهده می کنید.

LPC2138_Pinout.

همانطور که در شکل فوق مشاهده می کنید ، میکرو LPC2138 دارای دو پورت همه منظوره ورودی/خروجی ( GPIO ) می باشد که به صورت P0 و P1 نامگذاری شده است. عملکردهای دیگر هر پایه که مربوط به دیگر واحدهای میکروکنترلر می باشد نیز در شکل مشخص شده است.

چند نکته مهم :

  • همانطور که مشاهده می کنید هر یک از پایه های حداقل یک و حداکثر چهار عملکرد مختلف دارند که در آن واحد فقط از یکی از آنها استفاده می گردد.
  • پهنای داده ، رجیستر ها و پورت های GPIO در میکروکنترلر ۳۲ بیتی هستند اما به علت زیاد شدن پایه های خروجی پورت ها ، فقط برخی از پایه های هر پورت از آی سی بیرون آمده و در دسترس است. بقیه آنها به صورت نرم افزاری ( در برنامه نویسی ) در دسترس می باشند.
  • تمامی پایه های مربوت به پورت صفرام ( P0 ) از P0.0 تا P0.31 به جز P0.24 در دسترس است. ( پایه P0.24 وجود ندارد )
  • در پورت یکم ( P1 ) فقط ۱۶ پایه دوم یعنی پایه های P0.16 تا P0.31 بیرون میکرو در دسترس هستند و بقیه به صورت نرم افزاری وجود دارند. ( پایه های P0.0 تا P0.15 وجود ندارد )

تشریح پایه های LPC2138

تغذیه دیجیتال آی سی : پایه هایی که با نام VDD وجود دارند تغذیه مثبت آی سی و پایه های VSS تغذیه منفی ( زمین ) آی سی می باشند.

پایه ریست : پایه RST به عنوان پایه ریست آی سی می باشد که به صورت Active Low عمل می کند و همانند AVR باید به مدار Power On Reset متصل شود.

کریستال خارجی آی سی : پایه های XTAL1 و XTAL2 به منظور اتصال کریستال خارجی ( کلاک اصلی میکرو ) می باشد.

کریستال واحد RTC : این آی سی دارای واحد RTC مجزا است که برای فعالسازی آن نیاز به اتصال کریستال ساعت به پایه های RTXC1 و RTXC2 می باشد. همچنین پایه VBAT ، تغذیه مثبت واحد RTC است که به منظور فعال بودن دائمی این واحد به باتری پشتیبان ( Backup Battery ) متصل می گردد.

واحد GPIO : تمام پایه هایی که به نام P0.X و P1.X هستند ، میتواند از آنها به عنوان پورت ورودی/خروجی استفاده شود. X میتواند عددی بین ۰ تا ۳۱ باشد.

واحد ADC : تمام پایه هایی که به نام AD0.X و AD1.X هستند ، میتوانند به عنوان ورودی واحد آنالوگ به دیجیتال استفاده شوند. X میتواند عددی بین ۰ تا ۷ باشد.

واحد DAC : پایه AOUT مربوط به خروجی آنالوگ واحد DAC می باشد.

پایه های تغذیه آنالوگ آی سی ( تغذیه واحدهای ADC و DAC ) : شامل پایه های VREF ( ولتاژ مرجع ) ، VDDA تغذیه مثبت آنالوگ و VSSA تغذیه منفی آنالوگ می باشند.

واحد UART0 : پایه های RXD0 و TXD0

واحد UART1 : پایه های RXD1 ، TXD1 ، CTS1 ، DCD1 ، DSR1 ، DTR1 ، RI1 ، RTS1 مربوط به واحد ارتباط سریال می باشد. پایه هایی که اضافه بر RXD1 و TXD1 برای این واحد وجود دارد مربوط به قابلیت ارتباط دو طرفه با اطمینان بالا ( Handshaking ) می باشد.

واحد SPI0 : پایه های SCK0 ، SSEL0 ، MISO0 و MOSI0

واحد SPI1/SSP : پایه های SCK1 ، SSEL1 ، MISO1 و MOSI1 که قابلیت برقراری هر دو پروتکل ارتباط سریال SPI و SSP را دارد.

واحد I2C0 : پایه های SDA0 و SCL0

واحد I2C1 : پایه های SDA1 و SCL1

واحد Timer : تمام پایه های به نام های CAP0.X و CAP1.X به عنوان ورودی واحد تایمر ( کانتر ) به کار می رود که در آن ها X عددی بین ۰ تا ۳ می باشد. همچنین تمام پایه های به نام های MAT0.X و MAT1.X به عنوان خروجی واحد تایمر به کار می رود که در آن X عددی بین ۰ تا ۳ می باشد. 

واحد PWM : تمام پایه های به نام های PWMX که در آن X بین ۱ تا ۶ می باشد ، مربوط به واحد مجزای PWM است.

واحد JTAG : پایه هایی که به نام های TRST ، TMS ، TCK ، TDI ، TDO ، TCK وجود دارند ، مربوط به واحد برنامه ریزی و عیب یابی میکرو می باشند.


 انواع روش های پروگرام کردن میکروکنترلرهای ARM

۱٫ از طریق واسط استاندارد JTAG : با استفاده از پورت JTAG و پروگرامر J-Link-از شرکت Segger و انجام تنظیمات مربوطه در کامپایلر میتوان به صورت مستقیم و با سرعت بالا برنامه را به میکرو Download و سپس Debug نمود.

Segger-JLINK-BASE-300x300

۲٫ از طریق پورت سریال صفرام : همه میکروکنترلرهای ARM میتوانند از طریق پورت UART0 برنامه بگیرند. به این صورت که توسط مبدل USB به سریال یک سمت به کامپیوتر وصل می شود و در سمت دیگر Rx مبدل به TXD0 میکرو ، و Tx مبدل به RXD0 میکرو متصل می شود. سپس توسط نرم افزار Flash Magic ( فقط برای میکروکنترلرهای شرکت NXP ) میتوان فایل Hex ساخته شده را به میکروکنترلر انتقال و میکرو را پروگرام نمود. در شکل زیر ماژول USB به سریال FT232 را مشاهده می کنید که قابلیت عملکرد در ولتاژ 3.3 ولت را دارد.

FT232_Shop.Electrovolt.ir

۳٫ با استفاده از رابط USB در برخی میکروکنترلرها : با استفاده از پورت USB به صورت مستقیم و بدون واسطه میتوان میکروکنترلرهای ARM که دارای واحد USB می باشند ( مانند LPC1768 ) را پروگرام نمود. به این صورت که پس از اتصال پایه های D+ و D- به پایه های مربوطه به میکرو ، به صورت اتوماتیک میکرو شبیه یک فلش توسط کامپیوتر شناسایی می شود و میتوان فایل Hex برنامه دلخواه را مستقیم داخل آن Copy نمود.

LPC1768_USB_P


برد راه اندازی میکروکنترلرهای ARM

به علت اینکه این میکروکنترلرها فقط در بسته بندی smd وجود دارند ، نمیتوان آن ها را روی برد بورد به صورت مستقیم استفاده کرد. به همین علت معمولا برای کار کردن روی برد بورد از یک برد راه انداز استفاده می گردد. برد راه انداز تمامی سخت افزار لازم برای راه اندازی یک میکرو از قبیل رگولاتور ، خازن ، مقاومت ، سلف ، کریستال و … را در خود دارد. شکل زیر برد راه اندازی برای دو میکروکنترلر نمونه ۶۴ و ۱۰۰ پایه را نشان می دهد.

ARM_Init_Board

طراحی برد راه انداز برای میکروکنترلر LPC2138

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

۱- طراحی ورودی و رگولاتور ۳٫۳V : برای این منظور از یک ورودی 5v ، رگولاتور ۳٫۳ ولت و چند خازن به صورت مدار زیر استفاده می شود. از یک LED به منظور نشان دادن برقراری تغذیه استفاده شده است.

LPC2138_Regulator

۲- طراحی رابط JTAG : برای پروگرام کردن این میکروکنترلر از استاندارد JTAG به صورت مدار زیر استفاده می گردد.

LPC2138_JTAG

۳- طراحی مدار Power On Reset : برای اینکه میکروکنترلر در هنگام روشن شدن به صورت خودکار ریست شود و اینکه بتوان آن را به صورت دستی ریست نمود از مدار استاندارد زیر استفاده می گردد.

LPC2138_PowerOnReset

۴- طراحی کریستال ها : به منظور راه اندازی این میکرو از یک کریستال ۱۲MHz و یک کریستال ساعت 32768 هرتز برای واحد RTC به صورت مدار زیر استفاده می شود.

LPC2138_Crystal

۵- طراحی مدار پروگرام از طریق UART0 : برای پروگرام بوسیله UART0 میبایست بتوانیم پایه P0.14 را در زمان پروگرام به زمین متصل کنیم. بنابراین مداری به صورت زیر خواهیم داشت.

LPC2138_SBOOT

۶- اتصال پایه VREF و تمهیدات کاهش نویز : برای پایه VREF ( ولتاژ مرجع واحد ADC ) از یک سلف و خازن با مقادیر استاندارد به منظور کاهش نویز استفاده می کنیم. برای تغذیه واحد RTC ، پایه VBAT را به صورت شکل زیر به یک پین هدر متصل می کنیم تا بتوانیم در زمان دلخواه آن را به VCC داخل مدار یا به ولتاژی از بیرون مدار متصل نماییم.

LPC2138_VREF

۷قراردادن دیپ سوئیچ : به منظور کنترل روی قطع و وصل کردن حالت های Boot و Debug و همچنین اتصال یا عدم اتصال ولتاژ VREF از یک دیپ سوئیچ سه تایی به صورت شکل زیر استفاده می کنیم.

LPC2138_DipSwitch

8 قرار دادن پین هدر : برای تمامی پایه های میکرو هدر در نظر می گیریم تا بتوان آن را روی برد بورد نصب کرد.

LPC2138_PinHeader

طراحی و ساخت PCB

بعد از طراحی شماتیک مدار بورد راه انداز نوبت به طراحی و ساخت فیبر مدارچاپی می رسد که با استفاده از نرم افزار Altium Designer این کار صورت می گیرد. شکل زیر مدار طراحی شده نهایی توسط الکترو ولت را نشان می دهد.

LPC2138_HeaderBoard_Shop.Electrovolt.ir


 کامپایلرها و مفسرهای ARM

برای میکروکنترلرهای ARM کامپایلرها و مفسرهای مختلفی ارائه شده است. زبان برنامه نویسی اغلب این کامپایلرها C و C++ است.هر کدام از این کامپایلرها ویژگی ها و امکانات خاصی ارائه می دهند که در جدول زیر مهمترین آن ها را مشاهده می کنید.

ARM_Compilers

از میان کامپایلرهای بالا به دلایل زیر کامپایلر قدرتمند Keil انتخاب می شود :

  • دارای محیطی حرفه ای ، ویرایشگر قوی و کاربر پسند نسبت به سایرین
  • پشتیبانی از تمامی میکروکنترلرهای ARM و امکانات جانبی آن ها
  • دارای سیستم شبیه سازی با قابلیت شبیه سازی هسته و ادوات جانبی
  • دارای کد هگز خروجی بهینه و با حجم کمتر نسبت به سایر کامپایلرها


این مطلب را از دست ندهید :  دانلود بسته آموزش کاربردی میکروکنترلرهای ARM7

برای ادامه آموزش ARM روی تصویر زیر کلیک کنید.

next-image


در صورتی که این مطلب مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود

 

6+

کاربرانی که این مطلب را پسندیده اند:

  • avatar
این مطلب را با دوستانتان به اشتراگ بگذارید

دیدگاه (6)

  • حامد پاسخ

    سلام ممنون بابت زحماتی که میکشین
    چنتا سوال داشتم
    1.با استفاده از برد راه اندار و بدون نیاز به پروگرامر jlinkمیشه میکرو رو پروگرام کرد دیگه؟
    2.با هدر برد جهت پروگرام میایم از uart0استفاده میکنیم پس چرا یه مدار دگ برا jtag گذاشتین؟
    jtag header چیه توی شماتیک؟ و اون دیباگ؟

    ۲۰/۰۲/۱۳۹۵ در ۱۰:۲۷
  • محمد حسین پاسخ

    سلام دوست عزیز ممنونم
    بله می شود از طریق سریال یا با استفاده از JLINK پروگرام نمود و تنها تفاوت این است که در JLINK میتوان علاوه بر پروگرام عیب یابی ( دیباگ ) نیز انجام داد در هدر بورد از هر دو قابلیت میتوان استفاده کرد. پورت JTAG را اصطلاحا JtagHeader می گویند

    ۲۰/۰۲/۱۳۹۵ در ۱۹:۱۱
  • hameddd پاسخ

    سلام
    الان بخواییم pcb رو طراحی کنیم میکرو که smd هستش چجوری روی برد سوار میشه؟
    بقیه رو دریل میکنیم وبعدش لحیم.
    اما میکرو چطور؟؟

    ۲۱/۰۲/۱۳۹۵ در ۰۶:۵۵
    • محمد حسین پاسخ

      سلام دوست عزیز بورد ساخته شده و آماده اش موجوده میتونید از طریق ایمیل یا تلگرام سفارش بدید

      ۲۱/۰۲/۱۳۹۵ در ۱۶:۰۶
  • hameddd پاسخ

    اونکه بله ممنون
    فقط میشه بگین چجوری میکرویsmd میره رو pcb ؟

    ۲۱/۰۲/۱۳۹۵ در ۱۶:۳۹
    • محمد حسین پاسخ

      با هویه روی بورد لحیم میشه

      ۲۲/۰۲/۱۳۹۵ در ۰۶:۰۶

پاسخ دهید

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

چهارده − دو =