More Related Content
More from Mohammad Amin Amjadi
More from Mohammad Amin Amjadi (15)
Az Micro
- 2. 2
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
مقدمه
کنترلر میکرو با کار و میکروکنترلر کاربرد و مفاهیم با ریزپردازنده درس درavr. شدیم آشنا
میکروکنترلر با خواهیم می حالArm. دهیم انجام عملی بصورت را شده مطرح مباحث و شویم آشنا
معرفی به اینجا درLpc2368: پردازیم می
میکروLpc2368میکروکنترلرهای سری ازARM 7نوع از آنها هسته که ،ARM7TDMIنوع از آن معماری وARMv4T
واحدپردازش دارای و32کاری فرکانس با بیتی72MHZ. باشد می
میکروکنترلر این011میکرو داخلی واحدهای به که ، بوده پایهجمله ازPLL،GPIO،ethernet،CAN،SPI،UART
،USB،c2
i،s2
i،ADC،DAC،PWM،SSP. اند شده داده اختصاص
: جانبی دستگاه اتصال
نیازمند ، نمائیم متصل جانبی دستگاه یک به را میکرو بتوانیم اینکه برایآنمق میکرو های پایه به ، بتوانیم تا هستیمبدهیم دار
واحد از استفاده با منظور بدین ، بخوانیم را آنها مقدار یا وGPIOدسترسی میکرو های پایه بهخواهیمداشت.
واحد در که باشید داشته توجهGPIOفقط ،“0”و“1”. )است دیجیتالی واحد یک ( است شده شناخته منطقی
رجیسترهای و خروجی و ورودی با ریزپردازنده درس درDDR،PORTوPINدرavrرجیسترها این عملکرد ، شدیم آشنا
درavrواحد با کار همانندGPIOدرARM. باشد می
آنالوگ واحدهای نیازمند آنالوگ خروجی یا ورودی داشتن جهتADCیا )دیجیتال به آنالوگ (مبدلDACدیجیتال (مبدل
)آنالوگ بهکه ، هستیمLpc2368. باشد می دارا را واحدها این
پر یک از که جانبی های دستگاه به اتصال جهتوهمچون خاص تکلethernet،c2
i،CAN،USB،s2
i،SPIاستفاده
توسط ها پروتکل این تمامی که ، نمود استفاده مربوطه پروتکل از باید ، کنند میLpc2368شود می پشتیبانی.
- 3. 3
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
Keil
افزار نرم ازKeilیک کهIDEمی استفاده میکرو روی ریزی برنامه قابل خروجی فایل ساخت و نویسی برنامه برای ، باشد می
. شود
همچون دیگری کامپایلرهایIAR،ADS،Cross Work،Win ArmوFlow Codeدارد وجود نیز.
نحوهCrackنمودنKeil:
0.آیکون رویگزینه سپس و نمائید کلیک راست. نمائید انتخاب را
بود فعال صورت درنUAC(User Account Controlویندوزهای در فرض پیش بصورت که ، ویندوز )Vista
،Seven،Win 8وWin 8.1(Blue)حالت در که برنامه به دادن اجازه جهت ای پنجره ، است فعال
administatorگزینه و ، شود می باز شود اجراYes. نمائید انتخاب را
2.منوی ازگزینه. نمائید انتخاب را
3.پنجره راست سمت در، شده بازCID. نمائید کپی آنرا ، است رویت قابل
4.فایلCrack، نمائید اجرا راقسمت در وCID،CIDرا شده کپیPaste. نمائید
5.قسمت درTargetگزینه ،ARM: نمائید انتخاب را
6.گزینه. نمائید انتخاب را
7.: نمائید کپی را شده ایجاد کد
8.در را کدKeilقسمت وPaste: نمائید
9.گزینه. نمائید انتخاب را
- 4. 4
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
با کار شروعKeil
0.نمودن باز از پسKeil،منوی ازگزینه. نمائید انتخاب را
2.، نمود انتخاب را پروژه ذخیره محل باید حال، نمائید ایجاد خود پروژه ذخیره برای پوشه یک نظرتان مورد مسیر در
سپس وگزینه و نموده وارد را خود پروژه نام. نمائید انتخاب را
3.نوع باید ، شده باز پنجره درCPUنمائیم می استفاده آن از که است میکرویی مدل همان که ، نمائیم انتخاب را خود
شاخه وارد ،گزینه سپس و شدهانتخاب رانمودهروی سپس وکلیک
. نمائید
4.شده باز پنجره در. نمائید انتخاب را
5.: بنویسیم آن در را خود اصلی برنامه تا ، نمائیم ایجاد فایل یک باید حال
آیکون روی برمنوی از یا و نمائید کلیکگزینهبا که ، نمائید انتخاب را
بر میان کلیدCtrl + N. است فراخوانی قابل
یکTabهمانند ،. است شده ایجاد که است جدیدی فایل دهنده نشان که ، شود می ایجاد
6.آیکون روی برمنوی از یا و نمائید کلیکگزینهبا که ، نمائید انتخاب را
بر میان کلیدCtrl + S. است فراخوانی قابل
7.باشید داشته توجه فقط ، نمائید ذخیره دلخواه اسمی با را فایل این ، اید نموده ذخیره را خود پروژه که ای پوشه در
باید خود نظر مورد نام آخر در که“.c”یا“.cpp”را خود فایل نام بخواهیم اگر مثال ؛ نمائید وارد را“main”
باید بگذاریم“main.c”یا و“main.cpp”وار راسپس و نمائیم د. نمائید انتخاب را
8.: نمائیم اضافه خود پروژه به را شده ذخیره فایل باید حال
درقسمت برنامه چپ سمتProject: دارد وجود
- 5. 5
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
توان مییدگروه به را خود کدگروه یک یا واضافه جدیدنمائید.
( موجود های گزینه از یکی روی گروه یک ایجاد برایTarget 1،Source Group 1یا وLPC2300.sراست )
: نمائید کلیک
گزینهنمائید انتخاب ران سپس و ،سپس و نمائید وارد را شده ایجاد گروه امEnter. بزنید را
گزینه سپس و نمائید کلیک راست خود نظر مورد گروه روی بر: نمائید انتخاب را
روی وسپس انتخاب را اید نموده ذخیره و ایجاد که را فایلی حال. بزنید
9.اینجا (در برنامه اصلی فایل درmain.cخود برنامه کد باید ): نمائید وارد را زیر کد ؛ بنویسیم را
#include "Lpc23xx.h"
int main()
{
while(1)
{
}
}
01.ششم گام (در نمائید ذخیره را خود کد. )است شده ذکر نمودن ذخیره های روش
00.هیچ کدمان آیا که ، ببینیم خواهیم می حالerrorیاwarning: نه یا دارد ای
آیکون()یا(): نمائید اتخاب را
منوی از یا وگزینهیا. نمائید انتخاب را
که باشید داشته توجهولی کند می اسمبل و کامپایل را ، اند کرده تغییر که هایی فایل
فایل دو هر و کند می اسمبل و کامپایل را ها فایل تمامobjectخروجی به مربوط که
(فایل سازند می را است کامپایلhexتوضیحات ، شود می ساخته روش دو هر در پروژه بودن تنظیم صورت در نیز
نم تنظیم به مربوطفایل ساخت جهت پروژه ودنhex)است شده ذکر بعدی گام در میکرو نمودن پروگرام برای
- 6. 6
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
نتیجه ، برنامه درپایینbuild( پروژهerror،warning،Program Size: است مشاهده قابل )
02.فایل تا نمائیم تنظیم را پروژه خواهیم می حالhex: شود ساخته میکرو روی نمودن پروگرام جهت
آیکون(منوی از یا و نمائید انتخاب را )گزینه
بر میان کلید با که نمائید انتخاب راAlt+F7فراخوانی قابل
استقسمت از اگر دوم روش در که باشید داشته توجه ؛Project،کدنویسی حال در یا و باشد انتخاب
، باشیمTarget Optionsقسمت از مثال اگر و ، شود می بازProject،سپس و نمائیم انتخاب راAlt
+ F7فایل به مربوط تنظیمات همان که انتخابی گزینه به مربوط تنظیمات ، بفشاریم راmain.c. شود می باز است
سربرگ شده باز پنجره درسپس و نموده انتخاب رابه مربوط تیکسپس و نمائید فعال را
. نمائید انتخاب را
اگر حالگزینهBuild(گام نمائید انتخاب را02همنام فایلی ، اید نموده ذخیره را خود پروژه که جایی همان در ، )
پسوند با پروژه با“.h”ایجاد، شود می. شود می استفاده میکرو روی نمودن پروگرام برای که
- 7. 7
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
و نویسی برنامه نکاتKeil
0.زبان به باید ، نویسیم می که ای برنامهcباشدو ؛زبان کدنویسی برایc++توسط که مناسب گرامر بهKeilپشتیبانی
. نمود دقت باید ، شود
2.درKeil 5فایل یک بخواهیم اگر: نمود طی را زیر مراحل توان می ، نمائیم اضافه پروژه به و ایجاد
2.0.روی بر: نمائید کلیک راست فایل نمودن اضافه و ایجاد جهت نظر مورد گروه
2.2.گزینه. نمائید انتخاب را
2.3.فایل نام و نوع ، شده باز پنجره درنمائید انتخاب را خود نظر موردسپس و. نموده انتخاب را
3.با واال ، باشند داشته خالی خط یک خود آخر خط در باید شوند می اضافه پروژه به که های فایل تمامwarningزیر
: شویم می مواجه
4.روی که وقتیBuild. شوند می بررسی سپس و شوند می ذخیره خودکار بصورت ها فایل ، میزنیم
5.وقکدمان در که تی،خطنویسیم می را زیرفایل ،“lpc23xx.h”خود هدرهای در بایدKeil. باشد موجود
#include <Lpc23xx.h>
- 8. 8
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
6.، کدمان در که وقتیفایل ، نویسیم می را زیر خط“lpc23xx.h”خود هدرهای در بایدKeilمربوط پوشه در یا و
پروژه به. باشد موجود
#include “Lpc23xx.h”
7.درKeil،V5.0.5.15فایل همانند میکروها به مربوط هدر های فایل ،“lpc23xx.h”مشخصات وCPUبه که ها
از نسخه این با توان نمی پس ، ندارد وجود ، نمودیم می انتخاب پروژه یک ایزد هنگامKeil، نمود ایجاد را پروژه یک
آنرا بتوان کهBuildهمچون نیاز مورد های فایل خودمان آنکه مگر ، نمود“lpc23xx.h”پ در راکپی پروژه وشه
یا و ، نمائیممجبوریمنسخه با را خود پروژه4! نمائیم ایجاد
8.حلقه یک ، نویسیم می میکرو برای که ای برنامه در شود می توصیهwhileتا ، بنویسیم پایان بدونcpu، میکرو
. باشد داشته اجرا برای دستوری همیشه
9.داخل ، شود تعریف زیر بصورت متغییری که وقتیSRAM: شود می ذخیره میکرو
int x ;
که اکنونxحافظه داخلSRAM، است شده تعریف. است دهی مقدار و تغییر قابل برنامه اجرای طول در
01.حافظه داخل ، شود تعریف زیر بصورت متغییری که وقتیFlash: شود می ذخیره
const int x = 1 ;
constحافظه در متغییر ذخیره دهنده نشانFlashمتغییر و ، باشد میمقدار حتما باید تعریف با همراهشود دهی
آن تغییر امکان وکه متغییری به اگر و ، ندارد وجود برنامه اجرای طول درConstبا بدهیم مقدار استerrorزیر
: شویم می مواجه
00.که صورتی درxبصورتconstبا ، باشد نشده اولیه دهی مقدار و ، است شده تعریفwarningمی مواجه زیر
: شویم
02.با ، نشود استفاده آن از و ، شود تعریف متغییر یک که صورتی درwarning: شویم می مواجه زیر
03.متغییرهاو شوند تعریف بالک ابتدای در بایدتعریف بالک ابتدای در متغییری اگرنبا ، شودwarningمواجه زیر
: شویم می
04.حلقه نوشتن در ، قبل نکته به توجه باfor؟ است درست بنظرتون زیر کد ، باشیم داشته دقت باید
int main()
{
//My Code 1
for(int i = 0 ; i < 100 ; i++)
{
//My Code 2
}
}
- 9. 9
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
، که است این قبل صفحه در شده نوشته کد مشکلint iبدنه داخل راforنکته به توجه با ، ایم نموده تعریف
: است زیر بصورت درست کد پس ، شوند تعریف بالک ابتدای در باید متغییرها قبل
int main()
{
int i;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
//My Code 2
}
}
به بستگی و ، هستند درست دو هر که نوشت توان می زیر صورت دو به ، باشیم داشته تودرتو حلقه دو اگر حال
: بنویسیم صورت کدام به که دارد کدمان
int main()
{
int i;
int j;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
//My Code 2
for(j = 100 ; j > i ; j--)
{/*My Code 3*/}
}
}
int main()
{
int i;
//My Code 1
for(i = 0 ; i < 100 ; i++)
{
int j;
//My Code 2
for(j = 100 ; j > i ; j--)
{/*My Code 3*/}
}
}
05.هیچ به و شود اجرا مدام که بنویسیم حلقه یک اگروجه، بنویسیم حلقه این از بد کدی اگر ، نشویم خارج حلقه از
با که ، زیر کد همانند ، شد نخواهند اجرا هرگزwarning: شویم می مواجه
int main()
{
//My Code 1
while(1)
{
//My Code 2 , without break
}
// My Code 3 . never execution
}
06.با ، شود تعریف بار یک از بیش متغییر یک اگرerror: شویم می مواجه زیر
int main()
{
int x;
int x;
}
- 10. 11
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
که است واضح ، قبل صفحه کد درxنباید متغییر یک اینکه به توجه با ، است شده تعریف دوبارتعر یکبار از بیشیف
را فایل یک وقتی ، باشیم داشته توجه باید پس ، شودincludeآن متغییرهای با همنامی متغییر هیچ ، کنیم می
. باشیم نداشته فایل
07.متغییر یک به دهی مقدارint: است پذیر امکان زیر های بصورت
عدد خواهیم می029یک در راintعدد به دهیم قرار029: نمائید توجه
4 bit : L(Low)4 bit : H(High)
Bit#01234567
10000001
1H(Hex)8H(Hex)
07.0.: دهی ده ، دهی مقدار
int x = 129 ;
07.2.مقداردهی: شیفت عملگر طریق از ها بیت به
int x = (1 << 0) | (1 << 7);
07.3.مبنای در دهی مقدار16(Hex: )عددHexنماد از بعد را“0x”: نویسیم می
int x = 0x81;
08.یابد کاهش برنامه کد حجم تا شود استفاده مناسب نوع از متغییر تعریف برای شود سعی.
: است مشاهده قابل ، دارند را کاربردها بیشترین که متغییرهایی انواع زیر جدول در
Size (bits)Type
8char
16short
32int
32long
64long long
32float
64double
64long double
32pointers
- 11. 11
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
پروگرامر
: پروگرامر نمای
روی را است متصل آنها به سفید و سبز های سیم باال شکل در که هدر پین دو ، ابتدا درMini Lpc Programmerلحیم
حدود ولتاژی دارای سبز سیم به متصل پین ، نمائید5vسبز سیم متصل پین و بودهGnd. بوده
- 12. 12
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
پروگرامر وسایل اتصال محل
خازن منفی و مثبت های پایه به10uf. نمائید دقت
سوئیچ دیپ2های پایه اتصال برای ، تایی98و99بهMini Lpc Programmerپروگرام هنگام به فقط و ، باشد می
از استفاده یا و نمودنUART0باید کامپیوتر با ارتباط برایONکه شود می توصیه واال باشندoff. باشد
سوئیچ دیپ4: تایی
کلید0اتصال برقرای برای :GNDباال شکل در که هایی پین بهGndشده درج کنارشان در
کلید2اتصال برای :3.3vباال شکل در که هایی پین به3.3شده درج کنارشان در
کلید3نمودن پروگرام برای :
کلید4میکرو نمودن روشن برای :
- 14. 14
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو نمودن پروگرام
از اینجا در نمودن پروگرام برایMini Lpc Programmerبرنامه وFlash Magic. نمائیم می استفاده
: باشند زیر جدول طبق باید ها پایه وضعیت ، میکرو نمون پروگرام برای
پایه89پایه به اتصالRx،Mini Lpc Programmer
پایه88پایه به اتصالTx،Mini Lpc Programmer
پایه71پایه به اتصالRst،Mini Lpc Programmer
پایه35به اتصالGnd
، جدول در شده ذکر های پایه اتصال از پسMini Lpc Programmerکه نمائید توجه ، نمائید متصل کامپیوتر به را
Driverاتصال از پس ، باشید نموده نصب خود سیستم روی بر را آنMini Lpc Programmerپورت یک ، کامپیوتر به
COMپورت شماره ، شود می ساختهCOM. باشید داشته نظر در را
پورت شماره مشاهده برایCOMبهDevice Manager. نمائید مراجعه ویندوز
برنامهFlash Magic: دهید انجام را زیر تنظیمات و نمائید اجرا را
0.گزینهSelect: نمائید انتخاب را
شاخه زیر،. نمائید انتخاب را
2.پورت شمارهCOMبه مربوط ،Mini Lpc Programmer: نمائید انتخاب را
3.( بیت انتقال نرخBaud Rate: نمائید انتخاب را )
بین معموال ، انتقال نرخ19200و115200. شود می انتخاب
4.: نمائید وارد را میکرو به متصل کریستال مقدار
5.تیک نه یا است شده پروگرام درستی به میکرو آیا که شود بررسی ، میکرو شدن پروگرام از بعد اینکه جهت
. نمائید فعال را
6.تیکحافظه ، میکرو شدن پروگرام از قبل تا ، نمائید فعال راFlash. شود پاک
توانید میتیک، هستند نیاز مورد که حافظه از هایی بالک فقط تا ، نمائید فعال را
. شوند پاک
- 15. 15
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکنیم چک حالکشود می شناخته میکرو آیا ه؟منوی از، گزینه: نمائید انتخاب را
زیر شکل همانند ای پنجره در ، شود شناخته میکرو اگرDevice IDوBootloader Ver: است مشاهده قابل
برنامه تنظیمات که صورتی درFlash Magicباشد خراب میکرو یا و باشد نشده انجام درستی بهمیکرو های پایه اتصال یا و
وMini Lpc Programmer، نباشد برقرار بدرستی: شویم می مواجه زیر شکل همانند خطایی با
شماره که صورتی درپورتCOMدرFlash Magicاتصال یا و باشد نشده انتخاب درستی بهMini Lpc Programmer
: شویم می مواجه زیر خطای با ، شود قطع کامپیوتر با
ب میکرو روی را خود برنامه خواهیم می حال: ریزیم
0.روی برفایل و بروید خود پروژه ذخیره محل به ، نمائید کلیک“.h”. نمائید انتخاب را
2.روی بر. نمائید کلیک
3.! باشید صبور میکرو شدن پروگرام تا
- 17. 17
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو داخلی واحدهای
با مرتبط رجیسترهای با باید واحد هر با کار برای ، است مشاهده قابل میکرو داخلی واحدهای ، قبل صفحه دیاگرام بالک در
نمود کار واحد آن.
به بیشتر اطالعات کسب جهت توانید می که ، است خود خاص آدرس و عمکلرد دارای رجیستر هرUser Manualمیکرو
؛ نمائید مراجعهسری رجیسترهای تمام زیر جدول درLpc23xx: است مشاهده قابل
رجیسترها شماره در که باشید داشته توجه(a:b)اعداد از یکی جایگذاری معنای بهaتاb، همچنین و است(a,b)معنای به
جایگذاریaیاb: ً مثال ، استPINSEL(0:10)رجیسترهای وجود معنای بهPINSEL0،PINSEL1،PINSEL2،
PINSEL3و ..... ،PINSEL10همچنین و استIO(0,2)_INT_EN_Rرجیسترهای وجود معنای بهIO0_INT_EN_R
وIO2_INT_EN_R. است
Vectored Interrupt Controller (VIC)
VICVectAddr(0:31)VICIntEnClrVICIRQStatus
VICVectCntl(0:31)=
VICVectPriority0(0:31)
VICSoftIntVICFIQStatus
VICSoftIntClrVICRawIntr
VICProtectionVICIntSelect
VICSWPrioMaskVICIntEnable
Pin Connect Block
PINMODE(0:9)PINSEL(0:10)
General Purpose Input/Output (GPIO)
IOCLR(0:1)IOSET(0:1)IOPIN(0:1)
IODIR(0:1)
GPIO Interrupt Registers
IO(0,2)_INT_STAT_RIO(0,2)_INT_EN_FIO(0,2)_INT_EN_R
IO_INT_STATIO(0,2)_INT_CLRIO(0,2)_INT_STAT_F
PARTCFG
Fast I/O setup
FIO(0:4)PINFIO(0:4)MASKFIO(0:4)DIR
FIO(0:4)DIR(0:3,L,U)FIO(0:4)CLRFIO(0:4)SET
FIO(0:4)SET(0:3,L,U)FIO(0:4)PIN(0:3,L,U)FIO(0:4)MASK(0:3,L,U)
FIO(0:4)CLR(0:3,L,U)
- 18. 18
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
Memory Accelerator Module (MAM)
MEMMAPMAMTIMMAMCR
Phase Locked Loop (PLL)
PLLSTATPLLCFGPLLCON
PLLFEED
Power Control
PCONPPCON
Clock Divider
CLKSRCSELUSBCLKCFGCCLKCFG
PCLKSEL(0:1)
External Interrupts
EXTMODEINTWAKEEXTINT
EXTPOLAR
Reset, reset source identification
RSIR
RSID, code security protection
CSPR
AHB configuration
AHBCFG(1:2)
System Controls and Status
SCS
- 19. 19
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
MPMC(EMC) registers
DYNAMIC_MEM(0:3)_BASESTATIC_MEM(0:3)_BASE
External Memory Controller (EMC)
EMC_CONFIGEMC_STATEMC_CTRL
Dynamic RAM access registers
EMC_DYN_RD_CFGEMC_DYN_RFSHEMC_DYN_CTRL
EMC_DYN_SREXEMC_DYN_RASEMC_DYN_RP
EMC_DYN_WREMC_DYN_DALEMC_DYN_APR
EMC_DYN_XSREMC_DYN_RFCEMC_DYN_RC
EMC_DYN_CFG(0:3)EMC_DYN_MRDEMC_DYN_RRD
EMC_DYN_RASCAS(0:3)
static RAM access registers
EMC_STA_WAITOEN(0:3)EMC_STA_WAITWEN(0:3)EMC_STA_CFG(0:3)
EMC_STA_WAITWR(0:3)EMC_STA_WAITPAGE(0:3)EMC_STA_WAITRD(0:3)
EMC_STA_WAITTURN(0:3)
Timer (0:3)
T(0:3)TCT(0:3)TCRT(0:3)IR
T(0:3)MCRT(0:3)PCT(0:3)PR
T(0:3)CR(0:3)T(0:3)CCRT(0:3)MR(0:3)
T(0:3)CTCRT(0:3)EMR
Pulse Width Modulator (PWM) (0:1)
PWM(0:1)TCPWM(0:1)TCRPWM(0:1)IR
PWM(0:1)MCRPWM(0:1)PCPWM(0:1)PR
PWM(0:1)CR(0:3)PWM(0:1)CCRPWM(0:1)MR(0:6)
PWM(0:1)CTCRPWM(0:1)LERPWM(0:1)PCR
- 20. 21
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
Universal Asynchronous Receiver Transmitter (0,2,3) (UART(0,2,3))
U(0,2,3)DLLU(0,2,3)THRU(0,2,3)RBR
U(0,2,3)IIRU(0,2,3)IERU(0,2,3)DLM
U(0,2,3)LSRU(0,2,3)LCRU(0,2,3)FCR
U(0,2,3)ICRU(0,2,3)ACRU(0,2,3)SCR
U(0,2,3)TERU(0,2,3)FDR
Universal Asynchronous Receiver Transmitter 1 (UART1)
U1DLLU1THRU1RBR
U1IIRU1IERU1DLM
U1MCRU1LCRU1FCR
U1SCRU1MSRU1LSR
U1TERU1FDRU1ACR
I2C Interface (0:2)
I2(0:2)DATI2(0:2)STATI2(0:2)CONSET
I2(0:2)SCLLI2(0:2)SCLHI2(0:2)ADR
I2(0:2)CONCLR
SPI0 (Serial Peripheral Interface 0)
S0SPDRS0SPSRS0SPCR
S0SPINTS0SPCCR
SSP(0:1) Controller
SSP(0:1)SRSSP(0:1)DRSSP(0:1)CR(0:1)
SSP(0:1)RISSSP(0:1)IMSCSSP(0:1)CPSR
SSP(0:1)DMACRSSP(0:1)ICRSSP(0:1)MIS
A/D Converter 0 (AD0)
AD0INTENAD0GDRAD0CR
AD0STATAD0DR(0:7)
D/A Converter
DACR
- 21. 21
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
Real Time Clock (RTC)
RTC_CCRRTC_CTCRTC_ILR
RTC_CTIME(0:2)RTC_AMRRTC_CIIR
RTC_HOURRTC_MINRTC_SEC
RTC_DOYRTC_DOWRTC_DOM
RTC_CISSRTC_YEARRTC_MONTH
RTC_ALHOURRTC_ALMINRTC_ALSEC
RTC_ALDOYRTC_ALDOWRTC_ALDOM
RTC_PREINTRTC_ALYEARRTC_ALMON
RTC_PREFRAC
Watchdog
WDFEEDWDTCWDMOD
WDCLKSELWDTV
CAN CONTROLLERS AND ACCEPTANCE FILTER (1:2)
CAN_SFF_GRP_SACAN_SFF_SACAN_AFMR
CAN_EOTCAN_EFF_GRP_SACAN_EFF_SA
CAN_TX_SRCAN_LUT_ERRCAN_LUT_ERR_ADR
CAN(1:2)MODCAN_MSRCAN_RX_SR
CAN(1:2)ICRCAN(1:2)GSRCAN(1:2)CMR
CAN(1:2)EWLCAN(1:2)BTRCAN(1:2)IER
CAN(1:2)RIDCAN(1:2)RFSCAN(1:2)SR
CAN(1:2)TFI(1:3)CAN(1:2)RDBCAN(1:2)RDA
CAN(1:2)TDB(1:3)CAN(1:2)TDA(1:3)CAN(1:2)TID(1:3)
MultiMedia Card Interface(MCI) Controller
MCI_ARGUMENTMCI_CLOCKMCI_POWER
MCI_RESP(0:3)MCI_RESP_CMDMCI_COMMAND
MCI_DATA_CTRLMCI_DATA_LENMCI_DATA_TMR
MCI_CLEARMCI_STATUSMCI_DATA_CNT
MCI_FIFOMCI_FIFO_CNTMCI_MASK(0:1)
- 22. 22
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
I2S Interface Controller (I2S)
I2S_TX_FIFOI2S_DAII2S_DAO
I2S_DMA(1:2)I2S_STATEI2S_RX_FIFO
I2S_RXRATEI2S_TXRATEI2S_IRQ
General-purpose DMA Controller
GPDMA_INT_TCCLRGPDMA_INT_TCSTATGPDMA_INT_STAT
GPDMA_RAW_INT_TCSTATGPDMA_INT_ERR_CLRGPDMA_INT_ERR_STAT
GPDMA_SOFT_BREQGPDMA_ENABLED_CHNSGPDMA_RAW_INT_ERR_STAT
GPDMA_SOFT_LSREQGPDMA_SOFT_LBREQGPDMA_SOFT_SREQ
GPDMA_SYNCGPDMA_CONFIG
DMA channel (0:1) registers
GPDMA_CH(0:1)_LLIGPDMA_CH(0:1)_DESTGPDMA_CH(0:1)_SRC
GPDMA_CH(0:1)_CFGGPDMA_CH(0:1)_CTRL
USB Controller
USB_INT_STAT
USB Device Interrupt Registers
DEV_INT_CLRDEV_INT_ENDEV_INT_STAT
DEV_INT_PRIODEV_INT_SET
USB Device Endpoint Interrupt Registers
EP_INT_CLREP_INT_ENEP_INT_STAT
EP_INT_PRIOEP_INT_SET
USB Device Endpoint Realization Registers
MAXPACKET_SIZEEP_INDEXREALIZE_EP
USB Device Command Reagisters
CMD_DATACMD_CODE
- 23. 23
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
USB Device Data Transfer Registers
RX_PLENGTHTX_DATARX_DATA
USB_CTRLTX_PLENGTH
USB Device DMA Registers
DMA_REQ_SETDMA_REQ_CLRDMA_REQ_STAT
EP_DMA_ENEP_DMA_STATUDCA_HEAD
DMA_INT_ENDMA_INT_STATEP_DMA_DIS
EOT_INT_SETEOT_INT_CLREOT_INT_STAT
NDD_REQ_INT_SETNDD_REQ_INT_CLRNDD_REQ_INT_STAT
SYS_ERR_INT_SETSYS_ERR_INT_CLRSYS_ERR_INT_STAT
USB Host Controller
HC_CMD_STATHC_CONTROLHC_REVISION
HC_INT_DISHC_INT_ENHC_INT_STAT
HC_CTRL_HEAD_EDHC_PERIOD_CUR_EDHC_HCCA
HC_BULK_CUR_EDHC_BULK_HEAD_EDHC_CTRL_CUR_ED
HC_FM_REMAININGHC_FM_INTERVALHC_DONE_HEAD
HC_LS_THRHLDHC_PERIOD_STARTHC_FM_NUMBER
HC_RH_STATHC_RH_DESCBHC_RH_DESCA
HC_RH_PORT_STAT(1:2)
USB OTG Controller
OTG_INT_SETOTG_INT_ENOTG_INT_STAT
OTG_I2C_RXOTG_TIMEROTG_INT_CLR
OTG_I2C_CTLOTG_I2C_STSOTG_I2C_TX
USBPortSelOTG_I2C_CLKLOOTG_I2C_CLKHI
USBClkStUSBClkCtrl
- 24. 24
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو رجیسترهای
USB Device Data Transfer Registers Ethernet MAC (32 bit data bus)
MAC_IPGRMAC_IPGTMAC_MAC(1:2)
MAC_SUPPMAC_MAXFMAC_CLRT
MAC_MCMDMAC_MCFGMAC_TEST
MAC_MRDDMAC_MWTDMAC_MADR
MAC_COMMANDMAC_SA(0:2)MAC_MIND
MAC_RXSTATUSMAC_RXDESCRIPTORMAC_STATUS
MAC_RXCONSUMEINDEXMAC_RXPRODUCEINDEXMAC_RXDESCRIPTORNUM
MAC_TXDESCRIPTORNUMMAC_TXSTATUSMAC_TXDESCRIPTOR
MAC_TSV(0:1)MAC_TXCONSUMEINDEXMAC_TXPRODUCEINDEX
MAC_FLOWCONTROLSTSMAC_FLOWCONTROLCNTMAC_RSV
MAC_RXFILTERWOLCLRMAC_RXFILTERWOLSTSMAC_RXFILTERCTRL
MAC_INTSTATUSMAC_HASHFILTERHMAC_HASHFILTERL
MAC_INTSETMAC_INTCLEARMAC_INTENABLE
MAC_MODULEIDMAC_POWERDOWN
- 25. 25
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
General Purpose Input/Output ports(GPIO)
بین از011، میکرو پایه71واحد به پایهGPIO. است شده داده اختصاص
GPIOکه71داده اختصاص آن به میکرو از پایهدارای ، است شده5پورتPORT0الیPORT4. باشد می
به و شده داده اختصاص )(فیزیکی خارجی پایه برخی به که ، بوده ها پین از ای مجموعه پورت هرنشده داده اختصاص برخی
. است
و خارجی پایه دارای کنیم می کار آن با که ای پین که ، باشیم داشته توجه باید جانبی دستگاه اتصال و نویسی برنامه برای
. نمود وصل سیم آن به بتوان تا باشد فیزیکی
پورت و پین شماره از باید و ، نیست شده شناخته پایه نام به چیزی نویسی کد در. نمود استفاده
پایه از برخیهاپایه مثال ، است مشترک میکرو واحد چند بین98شماره پین ،2واحد به مربوط که باشد می صفر پورت از
GPIOبه مربوط پایه این همچنین و بودهTXD0واحدUART0. باشد می نیز
: پورت هر اطالعات
های جدول دربعد صفحه،هر اطالعاتPORT. است مشاهده قابل
در پایه آن که است هایی سایرنقش کننده مشخص همچنین و پین شماره ، پایه شماره ، پورت شماره شامل اطالعات این
. نماید می ایفا میکرو
به اطالعات: است شده داده نمایش صوت این
پایه شماره |میکرو در پایه نقش
: مثالقسمت درPort 0دردومینداریم سطر:
47 | P0 1,TD1,RXD3,SCL1
پایه71میکرو
P0,1صفر پورت از یک پینواحد به مربوطGPIO
TD1اطالعات ارسال پایهواحد به مربوطCAN 1
SCL1ورودی/خروجی کالکواحد به مربوطc 12
i
- 26. 26
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
پورت هر اطالعات
PORT 0PORT 1PORT 2
46 | P0 0,RD1,TXD3,SDA1
47 | P0 1,TD1,RXD3,SCL1
98 | P0 2,TXD0
99 | P0 3,RXD0
81 | P0 4,I2SRC,RD2,CAP20
80 | P0 5,I2SRW,TD2,CAP21
79 | P0 6,I2SRD,SSEL1,MAT20
78 | P0 7,I2STC,SCK1,MAT21
77 | P0 8,I2STW,MOSO1,MAT22
76 | P0 9,I2STD,MOSI1,MAT23
48 | P0 10,TXD2,SDA2,MAT30
49 | P0 11,RXD2,SCL2,MAT31
62 | P0 15,TXD1,SCK0,SCK
63 | P0 16,RXD1,SSEL0,SSEL
61 | P0 17,CTS1,MISO0,MISO
60 | P0 18,DCD1,MOSI0,MOSI
59 | P0 19,DSR1,MCICLK,SDA1
58 | P0 20,DTR1,MCICMD,SCL1
57 | P0 21,RI1,MCIPWR,RD1
56 | P0 22,RTS1,MCIDAT0,TD1
9 | P0 23,AD00,I2SRC,CAP30
8 | P0 24,AD01,I2SRW,CAP31
7 | P0 25,AD02,I2SRD,TXD3
6 | P0 26,AD03,AOUT,RXD3
25 | P0 27,SDA0
24 | P0 28,SCL0
29 | P0 29,USB_D+
30 | P0 30,USB_D-
95 | P1 0,ENET_TXD0
94 | P1 1,ENET_TXD1
93 | P1 4,ENET_TX_EN
92 | P1 8,ENET_CRS
91 | P1 9,ENET_RXD0
90 | P1 10,ENET_RXD1
89 | P1 14,RX_ER
88 | P1 15,ENET_REF_CLK
87 | P1 16,ENET_MDC
86 | P1 17,ENET_MDIO
32 | P1 18,USBLED,PWM1
1,CAP10
33 | P1 19,CAP11
34 | P1 20,PWM12,SCK0
35 | P1 21,PWM13,SSEL0
36 | P1 22,MAT10
37 | P1 23,PWM14 , MISO 0
38 | P1 24,PWM15 , MISI 0
39 | P1 25,MAT11
40 | P1 26,PWM16,CAP00
43 | P1 27,CAP01
44 | P1 28,PCAP10,MAT00
45 | P1 29,PCAP11,MAT01
21 | P1 30,VBUS,AD04
20 | P1 31,SCK1,AD05
75 | P2 0,PWM11,TXD1
74 | P2 1,PWM12,RXD1
73 | P2 2,PWM13,CTS1
70 | P2 3,PWM14,DCD1
69 | P2 4,PWM15,DSR1
68 | P2 5,PWM16,DTR1
67 | P2 6,PCAP10,RI1
66 | P2 7,RD2,RTS1
65 | P2 8,TD2,TXD2
64 | P2 9,USBCON,RXD2,EXTIN0
53 | P2 10,INT0
52 | P2 11,INT1,MCID1,I2STC
51 | P2 12,INT2,MCID2,I2STW
50 | P2 13,INT3,MCID3,I2STD
PORT 3PORT 4
27 | P3 25,MAT00,PWM12
26 | P3 26,MAT01,PWM13
82 | P4 28,MAT20,TXD3
85 | P4 29,MAT21,RXD3
- 27. 27
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
های ویژگیGPIO
های پورت0,1مد درFastغیر وFast(Slow)و هستند استفاده قابلPORT 2,3,4مدکاری دارای فقطFastمی
. باشند
مد از فقط اینجا در ماFast. نمائیم می استفاده
: استفاده مورد رجیسترهای
به مربوط های رجیستر ، نموده استفاده آن به مربوط رجیسترهای از باید میکرو واحد هر با کار جهتGPIOدر توانید می را
: نمائید مشاهده زیر جدولاز منظور رجیستر نام درxتا صفر از که پورت شماره4. باشد می ، بوده
ها پینورودی/خروجیدسترسی امکاننمودن یکنمودن صفرخواندن
PIN 0 - 31FIOxDIRFIOxMASKFIOxSETFIOxCLRFIOxPIN
PIN 0 – 7FIOxDIR0FIOxMASK0FIOxSET0FIOxCLR0FIOxPIN0
PIN 8 - 15FIOxDIR1FIOxMASK1FIOxSET1FIOxCLR1FIOxPIN1
PIN 16 – 23FIOxDIR2FIOxMASK2FIOxSET2FIOxCLR2FIOxPIN2
PIN 24 - 31FIOxDIR3FIOxMASK3FIOxSET3FIOxCLR3FIOxPIN3
PIN 0 - 15FIOxDIRLFIOxMASKLFIOxSETLFIOxCLRLFIOxPINL
PIN 16 - 31FIOxDIRUFIOxMASKUFIOxSETUFIOxCLRUFIOxPINU
. بوده صفر ، فرض پیش بصورت رجیسترها مقدار
باید ، کنیم کار آنها با بخواهیم که هایی پینMASKشانباشد صفرمقدار که باشید داشته توجه ،MASKدر ها پین تمام
رجیستر در تغییر به نیازی پس ، باشد می صفر ابتداMASKواحد و ها پین با کار جهتGPIO؛ نداریمجهت کدها در البته
بودن صفر دادن نشان و اطمینانMASK، ها پین تمامMASK. دهیم می قرار صفر با مساوی را
اگرDIR. باشد می خروجی باشد یک اگر و ورودی ، باشد صفر پین یک
اینکه برایPORT0وPORT1مد درFastفوق رجیسترهای با بتوانیم و بگیرند قرارپورت برای0و1بیت باید کارنمائیم
رجیستر از اولSCS: نمائیم یک را
SCS = 1; // Enabel Fast Port( P0 , P1)
نکتهرجیستر از بیتهایی شدن یک با :FIOxSETخواهند تغییر بدون ها پین سایر و شوند می یک ، متناظرشان های پین ،
رجیستر و ؛ ماندFIOxCLRنخواهند تغییر ها پین سایر و کند می صفر را ، اند شده یک که هایی بیت با متناظر های پین
. کرد
ازFIOxPINپس ، شود می استفاده نیز ها پین به مستقیم مقداردهی و دسترسی جهترجیستر این به که مقداری هر
. شود می داده نسبت بیت آن متاظر های پین به ، شود داده
: مثال
- 28. 28
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
صفر پورت های پین کل ، مثال این درو شوند می صفر ثانیه یک سپس و ، یک ثانیه یک ،این. شود می تکرار روند
#include "Lpc23xx.h"
#include "delay.h"
int main()
{
SCS = 1;
FIO0MASK = 0;
FIO0DIR = 0xffffffff;
while(1)
{
FIO0SET = 0xffffffff;
delay_ms(500);
FIO0CLR = 0xffffffff;
delay_ms(500);
}
}
رجیستر هر بیت هر که نمائید توجهبه مربوط شده ذکرواحدGPIO: بوده پین یک به مربوط
Px.0Px.1Px.2Px.3Px.4Px.5……………………..Px.31
های پین بخواهیم اگر0و3و4به که مقداری ، نمائیم یک را صفر پورت ازFIO0SET: با است برابر دهیم می نسبت
01011000
: نوشت توان می که
FIO0SET = 50;
FIO0SET = 0x32;
FIO0SET = (1 << 1) | (1<<3) | (1<<4);
رجیسترهای توان میFIOxSETوFIOxCLRرجیستر با راFIOxPIN: نمود معادل زیر بصورت
int value = 0x85 // دلخواه مقدار
FIO1PIN |= value;FIO1SET = value ; =>
FIO1PIN &= ~ value;FIO1CLR = value ; =>
FIOxPIN |= value;FIOxSET = value ; =>
FIOxPIN &= ~ value;FIOxCLR = value ; =>
- 29. 29
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
داخلی های مقاومت
رجیستر از کار این برای ، نمود مشخص را آنها وضعیت توان می که ، هستند داخلی مقاومت دارای میکرو های پین از کدام هر
PINMODEyشود می استفادهپورت شماره اگر کهxمقدار ، باشدyباید ،2xیا2x+1باشد:
رجیسترمربوطهپین شمارهپورت شماره
PINMODE0تا صفر05صفر پورت
PINMODE106تا30
PINMODE2تا صفر05یک پورت
PINMODE306تا30
PINMODE4تا صفر05دو پورت
PINMODE506تا30
PINMODE6تا صفر05سه پورت
PINMODE706تا30
PINMODE8تا صفر05چهار پورت
PINMODE906تا30
پورت برایxباید کهازPINMODE(2x)وPINMODE(2x+1): نمائیم استفاده
PINMODE(x)0123……3031
صفر پینیک پین……پین05
PINMODE(2x+1)0123……3031
پین06پین07……پین30
، بخواهیم اگر مثالPINMODEپین به مربوط17های بیت باید دهیم تغییر را یک پورت از2و3ازPINMODE3را
. دهیم تغییر
به که مقداریPINMODEنسبت پین هرمی: شود می مشخص زیر جدول اساس بر ، دهیم
مقاومت وضعیتبه متصلپینمقدارPINMODEپین به مربوط
PullUp00
نامعتبر01
پین به مقاومت اتصال عدم(Open Collector)10
PullDown11
توجهرجیستر مقدار :PINMODEفرض پیش بصورت ها پین تمام پس ، است صفر فرض پیش بصورت نیزPullUp
پین مقدار ، نشود اعمال پین به ولتاژی و ، باشند ورودی عنوان به که حالتی در و هستند"1". بود خواهد
- 30. 31
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
پین بخواهیم اگر مثال بطور5پورت از0راPull Down: نمائیم
مقدارxبرابر است پورت شماره نمودیم داد قرار که0: استx=1
مقدار باید پسy(برایPINMODEy، )2xو2x+1، یعنی ، باشدyباید2یا3. باشد
چون، کنیم می کار آن با که ای پین شماره5از و بوده16از باید است کمترPINMODE2. نمائیم استفاده
مساوی بزرگتر پین شماره اگر06از باید باشدy=2x+1شود می اینجا در که ، نمائیم استفادهPINMODE3.
های بیت شماره واماPINMODE2. دهیم تغییر باید را بیت دو کدام که ، ماند می
پین شماره اگرمقدار راzمربوطه های بیت شماره ، بگیریم نظر در2(z%16)و2(z%16)+1. بود خواهد
پین شماره اینجا درz=5های بیت باید پس ، بوده01و00ازPINMODE2پین این خواهیم می چون ، بدهیم مقدار را
Pull Downمقدار بیت دو هر به باید ، شود0بنویسیم کدمان در باید پس ، دهیم نصب را:
PINMODE2 |= (1 << 10) | (1 << 11) ;
استفاده موارد:
باید ورودی داشتن جهتPINMODEنمود تنظیم رانوع وPINMODEبهنوعورودیدارد بستگی.
0.Pull Up)ولتاژ به اتصال با و ، باشد یک همیشه پین مقدار بخواهیم که زمانی"1"از ، بگیرد صفر مقدارPullUp
: نمائیم می استفاده
( صفر پورت از دو پین مقدار ، شود بسته سوئیچ وقتی ، زیر مدار درP0.2باید پین این پس ، شد خواهد صفر ، )
(باشد داشته یک مقدار همیشهPullUp. دهیم تشخیص را سوئیچ شدن بسته تا ، )باشد
سوئیچ شدن بسته با ، باشد صفر همیشه پین مقدار اگر،مقدا بازرا سوئیچ شدن بسته توان نمی و است صفر پین ر
. دهیم تشخیص
- 31. 31
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
2.PullDownولتاژ به اتصال با و ، باشد صفر همیشه پین مقدار بخواهیم که زمانی )"0"مقداریکاز ، بگیرد
PullDown: نمائیم می استفاده
( صفر پورت از دو پین مقدار ، شود بسته سوئیچ وقتی ، زیر مدار درP0.2، )یکباید پین این پس ، شد خواهد
مقدار همیشهصفر(باشد داشتهPullDown. دهیم تشخیص را سوئیچ شدن بسته تا ، )باشد
همیشه پین مقدار اگریکپین مقدار باز ، سوئیچ شدن بسته با ، باشدیکرا سوئیچ شدن بسته توان نمی و است
. دهیم تشخیص
3.Open Collector)حالت دو بهPullUpوPullDownحالت در ، نمائید دقتPullUpمقدار با ورودی توان می
حالت در و ، داد تشخیص را صفرPullDownی مقدار با ورودی. داد تشخیص توان می را ک
از اگر ، نماید ارسال را یک یا و صفر تواند می میکرو هر ، نمائیم متصل یکدیگر به بخواهیم را میکرو دو کنید فرض
حالتPullDownحالت از از اگر و صفرها ، نمائیم استفادهPullUpخواهند تشخیص غیرقابل ها یک نمائیم استفاده
پین که وقتی ، بودOpen Collector(کلکتورباتوانند می میکروها ، باشد )ز. باشند ارتباط در بایکدیگر بدرستی
- 32. 32
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو داخلی واحدهای با کار
میکرو داخلی واحدهایدردیاگرام بالکصفحه06واحد آن های خروجی و ورودی همراه به. است مشاهده قابل ،
برایب واحد هر از استفادهعملکرد چه واحد آن که بدانیم ایدواحد آن به رجیسترهایی چه و دارد هایی خروجی و ورودی چه و
شده داده اختصاصباید را واحد آن سازی فعال نحوه همچنین و است. بدانیم
: نیازمندیم زیر جدول در شده ذکر رجیسترهای همچنین و واحد آن مخصوص رجیسترهای به واحد هر کنترل برای
، میکرو انداز راه کالک تنظیمات جهت رجیسترها این( تغذیه تنظیمات و داخلی واحدهای کالکPowerواحدهای و میکرو )
به نیازی که ، باشند می ... و داخلی، پروژه انجام برای نیاز صورت در و ، باشد نمی ها آزمایش انجام برای آنها دانستن
. باشد می دانشجو خود عهده بر آن کامل یادگیری
- 33. 33
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو های پایه نقش
، میکرو های پایه از برخیپایه مثال ، بوده منظوره تک02عنوان به فقط میکروVREFها پایه از بسیاری ولی ، باشد می
چن به و ، بوده چندمنظورهپایه مثال ، بوده متصل میکرو داخلی واحد دین98عنوان به هم میکروP0,2واحد به (مربوط
GPIOعنوان به هم و )صفر پورت از دو پین ،TXD0واحد فرستنده (پایهUART0)مباشد ی.
واحد به فرض پیش بصورت که را پین یک ، بخواهیم اینکه برای حالGPIOاز نمائیم متصل دیگری واحد به ، بوده متصل
رجیسترPINSELرجیستر همانند ، نمائیم می استفادهPINMODEاز بیت دو پین هر بهPINSELاست شده داده اختصاص
پورت برای و ،xپین وzرجیستر از بایدPINSEL(2x)یاPINSEL(2x+1)از کمتر پین شماره اگر ، نمائیم استفاده06
بااز ، شدPINSEL(2x)اگربزرگترمساوی و06از باشدPINSEL(2x+1)های بیت از همچنین و نموده استفاده2(z%16)و
2(z%16)+1. نموده استفاده
بخواهیم اگر مثالP0.2: صفر (پورتx=0پین و2:z=2واحد به فرض پیش بصورت که ، )GPIOواحد به ، بوده متصل
UART0های بیت مقدار باید کند ایفا را فرستنده پایه نقش ، شود متصل4و5ازPINSEL0. دهیم تغییر را
مقادیر ازای به اینکه00،01،10و11رجیستر ازPINSELبوده متصل واحد کدام به آن متناظر پایه ، پین یک به مربوط
بوده متفاومت پین هر برای ، کند می ایفا را نقشی چه و.
PINSEL0های پین ، صفر پورت :0تا15:
- 36. 36
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
PINSEL5پورت :2های پین ،16تا31:مربوطه های پین : دسترس غیرقابلنیزبوده دسترس غیرقابل
PINSEL6پورت :3های پین ،0تا15بوده دسترس غیرقابل نیز مربوطه های پین : دسترس غیرقابل :
PINSEL7پورت :3های پین ،16تا31های پین فقط :25و26: بوده استفاده قابل
PINSEL8پورت :4های پین ،0تا15بوده دسترس غیرقابل نیز مربوطه های پین : دسترس غیرقابل :
PINSEL9پورت :4های پین ،16تا31بوده دسترس غیرقابل نیز مربوطه های پین : دسترس غیرقابل :
PINSEL10:
رجی این از سوم بیت فقطواسط کنترل برای و دسترس در سترETM. گیرد می قرار استفاده مورد ها پین
ETM : EmbeddedTrace Module
واسط ازETMهسته با مستقیم ارتباط برایARM. شود می استفاده
طریق از ، ها روش سایر درBUSبه هاARMهسته به مستقیم دسترسی نه و داریم دسترسیARM.
- 37. 37
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
واحد اندازی راهDAC
DACیاDigital-to Analog Converterدی تبدیل برایزیر های ویژگی دارای و شود می استفاده آنالوگ به جیتال
است:
0.مبدل01دقت حداکثر : آنالوگ به دیجیتال ، بیت01است بیت
2.مقاومتی رشته معماری دارای
3.توان کاهش حالت دارای
4.تغذیه از استفاده با سرعت کنترل و تنظیم
به ، خواهیم می واقع درمخت ولتاژهای ، میکرو از ای پایهواحد از استفاده با که باشید داشته توجه ، نمائیم اعمال را لفیGPIO
مقدار ولی ، داد مقدار ها پایه به شود می هممنطقی یک و صفر به محدود آنباشد می.
واحد عملکرد ، زیر جدول درDAC: است مشاهده قابل
AOUTواحد خروجی :DACشماره پایه که بوده6و میکرو ازP0.26. باشد می
واحد خروجی اینکه برایDACپایه روی را6به فرض پیش بصورت که را پایه این باید ، باشیم داشته میکروGPIOمتصل
پین ( بوده26واحد به را ) صفر پورت ازDACهای بیت باید پس ، نمائیم متصل21و20ازPINSEL1تغییر رابر و دهیم
صفحه جدول اساس34ها بیت این مقدار باید“10”: نویسیم می کدمان داخل پس ، شود
PINSEL1 |= (1 << 21) ; // 0x200000
: با است برابر خروجی ولتاز مقدار
AOUT = خروجی =
Value
1024
∗ Vref
VREFپایه و دارد خروجی مقدار در تاثیر که ، واحد مرجع ولتاژ :12دیگری نقش پایه این چون و بوده میکرو
تغییر به نیاز ، کند نمی ایفا راPINSELو نداردPINSEL. ندارد کاربردی آن برای
DDAVولتاژ :3.3. شود می استفاده واحد این تغذیه برای که
- 38. 38
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
SSAV:. واحد این گراند عنوان به
DDAVوSSAV. باشند داشته را خطا و نویز حداقل باید ، شود می استفاده واحد این تغذیه برای که
. بوده نویز رساندن حداقل به برای ، پروگرامر مدار در خازن از استفاده دالیل از یکی
رجیسترDACR:
واحد کنترل جهت رجیستر اینDAC. باشد می
های بیت6تا05که رجیستر این01همان ، بودهValueمقدار ، بخواهیم اگر مثال ، دارد تاثیر خروجی میزان در که است
Valueبرابر500: نویسیم می باشد
DACR = 500 << 6 ;
که باشید داشته توجهValueباید10بین مقدارش عبارتی به یا و ، بیتی0تا1023. باشد
بیت16امرجیستر ،DACR. باشد می خروجی جریان حداکثر و واحد سرعت حداکثر تنظیم جهت
: کد نمونه
#include "LPC23xx.h"
#include "delay.h"
int main (void)
{
unsigned long value = 0;
PINSEL1 = 0x200000;/* set p0.26 to DAC output */
while ( 1 )
{
for(value = 500 ; value < 1024 ; value++)
{
DACR = (value << 6);
delay_ms(20);
}
}
}
- 39. 39
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
واحدADC
واحد ازADCاس دیجیتال به آنالوگ تبدیل جهت: است زیر های ویژگی دارای و ، شود می تفاده
0.معادل تبدیل دقت01بیت
2.روی شده پلکس مالتی ورودی6پین
3.توان کاهش حالت دارای
4.تا صفر بین گیری اندازه محدوده3v
5.تبدیل زمان حداقل01بیت2.44 usبوده
واحد وسیله بهDACمی )مشخص (ولتاژی آنالوگ مقداری پایه یک بهواحد توسط و ، دادیمADCیک توانیم میورودی
ولتاژ (سطح آنالوگمشخص ی. بخوانیم را )
: ها پین
درLpc 2368داری که6کانالADCواحد های ورودی زیر های پین ، استADC: هستند
مقدارPINSELرجیسترPINSELمربوطهپورت و پینپایه شمارهپین عنوانواحد ورودیADC
01PINSEL1[15:14]P0.239AD00ADC 0
01PINSEL1[17:16]P0.248AD01ADC 1
01PINSEL1[19:18]P0.257AD02ADC 2
01PINSEL1[21:20]P0.266AD03ADC 3
11PINSEL3[29:28]P1.3021AD04ADC 4
11PINSEL3[31:30]P1.3120AD05ADC 5
VREFپایه همان که ،02تغییر به نیازی و ، بوده مرجع ولتاژ عنوان به ، است میکروPINSELمنظوره تک ای (پایه ندارد هم
) است
- 41. 41
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
رجیسترAD0CR:
کانال انتخاب برای رجیستر اینADCخود برنامه ابتدای در باید و ، است واحد این مدکاری وواحد از استفاده از (قبلADC)
پی را رجیستر ایننمو کربندی: د
- 42. 42
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
رجیسترAD0GDR:
به آنالوگ مقدار اینکه از پسدر خودکار صورت به سپس و رجیستر این در )(نتیجه دیجیتال مقدار ، شد تبدیل دیجیتال
. گردد می ذخیره شده تنظیم کانال با متناظر رجیستر
رجیسترAD0STAT:
های کانال تمام وضعیت بررسی امکان و اجازه رجیستر اینADC. دهد می ما به را
وضعیت به مربوط های بیت رجیستر این درDONEوOVERRUNواحد وقفه پرچم به مربوط بیت همچنین و کانال هر
ADCکهORبیت ،DONEتما. دارد وجود ، باشد می ها کانال م
- 43. 43
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
رجیسترAD0INTEN:
اینهای کانال وقفه کنترل اجازه ما به رجیسترADCیک کانال هر دیجیتال به آنالوگ تبدیل اتمام از پس تا ، دهد می را
. دهد رخ وقفه
رجیسترهایAD0DR(0:5):
کانال به مربوط های رجیستر این از کدام هرADC(0:5): بوده
- 44. 44
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
: کد نمونه)نمائید بررسی را (کد
#include "LPC23xx.h"
#define led1 0x1
#define set_led1 (FIO0SET=led1)
#define clr_led1 (FIO0CLR=led1)
void ADC0Handler (void) __irq
{
unsigned long stat_backup;
unsigned long value;
stat_backup = AD0STAT & 0x000000FF;
if (stat_backup==1){ //channel 0 is ready
value = ( AD0DR0 >> 6 ) & 0x3FF; //you code is here for save converted data
if (value>500)
set_led1;
else
clr_led1;
}
AD0STAT=0;
AD0GDR=0;
VICVectAddr = 0;
AD0CR|=0x00200301;
AD0CR|=0x01000000;
}
int main(void){
SCS |=0x00000001;
FIO0MASK=0x00000000;
FIO0DIR=led1;
FIO0CLR=led1;
PINMODE0 = (1 << 2) | (1 << 3);
PINSEL1|=0x4000;
AD0CR=0x00200301;
AD0CR|=0x01000000;
VICIntSelect=0x00000000;
VICIntEnable=(1<<18); //set ADC0 to IRQ
VICVectAddr18=(unsigned long)ADC0Handler;
AD0INTEN=257;
clr_led1;
while(1);
}
- 45. 45
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
واحدUART (0,2,3)
واحد ازUART، نمائیم می استفاده سریال ارتباط جهتتوان می واحد این از استفاده بامیکر یک به را میکروی و دیگر وا
: است زیر های ویژگی دارای که ، نمود متصل کامپیوتر
0.06رجیستر بایتFIFO(Firt in First Out)دریافت و ارسال برای
2.خودکار تنظیم قابلیتBaud) داده انتقال نرخ (
3.UART3مد از پشتیبانی امکانIrDAاست قرمز مادون ارتباط برای
: ها پین
مقدارPINSELرجیسترPINSELمربوطهپورت و پینپایه
01PINSEL0[7:6]P0.399RXD0
گیرنده
UART0
01PINSEL0[5:4]P0.298TXD0
فرستنده
01PINSEL0[23:22]P0.1149RXD2
گیرنده
UART2
01PINSEL0[21:20]P0.1048TXD2
فرستنده
10PINSEL0[3:2]P0.147RXD3
گیرنده
UART3
10PINSEL0[1:0]P0.046TXD3
فرستنده
- 47. 47
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
رجیسترهایU(0,2,3)RBR:
رجیسترهایU(0,2,3)THR:
رجیسترهایU(0,2,3)DLLوU(0,2,3)DLM:
رجیسترهایU(0,2,3)IER:
- 56. 56
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
با ( : نمونه کدBaudRate،19200)
#include "LPC23xx.h"
#include "string.h"
#define RDR 1
#define OE 2
#define PE 4
#define FE 8
#define BRI 16
#define THRE 32
#define TEMT 64
#define RXFE 128
void sendline (unsigned char *BufferPtr, unsigned long length);
void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word);
unsigned char getchar (void);
void putchar (unsigned char cin);
int main (){
char *strin="In The Name Of Allah";
char *strin1;
PINSEL0=0x50; //set p0.2 and p0.3 to TXD0 and RXD0
U0LCR=0x83; //set frmae=8n1 and DLAB=1
U0DLL=0x34; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk
U0DLM=0x0; //baud rate=19200bps @12MHz crystal, 32MHz cclk,16MHz Pclk
U0LCR=0x03; //DLAB=1
U0FCR=0x07; // enable RX fifo and TX fifo
sendline((unsigned char *)strin,strlen((const char *)strin));
while(1){
strin="type your text:";
sendline ((unsigned char *)strin,strlen((const char *)strin));
getline((unsigned char *)strin1,0x00000032,0x0D);
strin="your text is:";
sendline((unsigned char *)strin,strlen((const char *)strin));
sendline((unsigned char *)strin1,strlen((const char *)strin1));
}
}
- 57. 57
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
void sendline (unsigned char *BufferPtr, unsigned long length){
unsigned long len;
for (len=0;len<length;len++){
putchar(*BufferPtr);
BufferPtr++;
}
putchar(0x0D);
putchar(0x0A);
}
void getline (unsigned char *BufferPtr, unsigned long length, unsigned char sens_word){
unsigned long len;
unsigned char in;
for (len=0;len<length;len++){
in=getchar();
if (in==sens_word) {
*BufferPtr=0x0;
break;}
*BufferPtr=in;
BufferPtr++;
}
}
unsigned char getchar (void){
while(!(U0LSR & RDR));
return (U0RBR);
}
void putchar (unsigned char cin){
while(!(U0LSR & THRE));
U0THR=cin;
}
- 58. 58
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
میکرو با سریال ارتباط برای شارپ سی در سریال پورت
برنامه که است کافی سریال پورت طریق از کامپیوتر و میکرو ارتباط جهتUART 0سپس و نمائید پروگرام میکرو روی را
پایه ( نمائید خارج پروگرام حالت از را میکرو53قطع را اتصال این ، باشد متصل زمین به باید کردن پروگرام هنگام به که
نمائیداتصال که باشید داشته توجه ؛های پایهRST،RxوTxو میکرو بینMini Lpc Programmer) شود قطع نباید
. نماید ارسال و دریافت را اطالعات بتواند تا داریم نیاز کامپیوتر روی برنامه یک به حال
پوشه داخلSerialPort. دارد وجود سریال ارتباط جهت شارپ سی پروژه
را پروژه ابتداتوسطVisual Studioگزینه روی سپس و نمائید بازداخل ازSolution Explorer
گزینه سپس و کلیک راستباز را فرم که است این دیگر راه ، نمائید انتخاب را
یا و نموده انتخاب را گزینه همین سپس و کلیک راست سپس و نمودهF7. دهید فشار را
: بوده مشاهده قابل زیر متد دو
public void WritedE(object sender , EventArgs e)
{
PortEventArgs er =(PortEventArgs)e;
MessageBox.Show(er.Msg);
}
public void ReadE(object sender, EventArgs e)
{
PortEventArgs er = (PortEventArgs)e;
MessageBox.Show(er.Msg);
}
متد شود ارسال برنامه در سریال پورت طریق از اطالعاتی که زمانیWritedEاز را اطالعاتی برنامه زمانی همچنین و شده اجرا
متد نماید دریافت پورت طریقReadE. شود می اجرا
متد دو هر داخلer.Msg، باشد داشته درستی آن به راحتی به توانید می که ، است شده دریافت یا ارسال اطالعات حاوی
توانید می خود پروژه در نیاز صورت در حالer.Msg. شود انجام نظرتان مورد عملیات تا نموده بررسی یا و پردازش را
کام روی که پورتی باید برنامه اجرای از بعد که باشید داشته توجهبه پیوترMini Lpc Progرا است شده داده اختصاص
و انتخابBaud Rateمیکند کار آن با میکرو که مقداری رابرنامه اساس (برUART)سپس و دهید قرارPortراOpen
. نمائید
- 59. 59
amjadima.ir amjadima@gmail.com ریزپردازنده آزمایشگاه1–امجدی امین ّدممح
LCDگرافیکی
برایاندازی راه و تغذیهLCDهای پایه باید ، گرافیکیVddوLEDAبه مربوط ،LCDبه راولتاژ3.3پایه و ، ولتGndرا
به(پایه . نمود وصل گراندLEDAصفحه نور شدن روشن جهتLCD)باشد می
LCDدارای گرافیکی06(معادل بیت06)پایهداده خطو5(معادل بیت5)پایهباشد می کنترلی خطمیکرو به باید که
. شوند متصل
برای ها پایه ترین مناسب06، دیتا خطوط بیتبا متناظر های پایههای پین06تا30در همگی که باشند می یک پورت از
. هستند دسترس
قرار اختیارتان در که (کدیبه دیتا خط برای ، است شده داده06میکرو در که داریم نیاز سرهم پشت پینLpc 2368مناسب
های پین ، ها پین ترین06تا30مد تغییر با توان می ولی ، هستند دسترس در که بوده یک پورتLCDاز ، کدها تغییر و
جای به یا و سرهم پشت غیر های پین06از بیت8)نمود استفاده دیتا خط بیت
فایل درtftlcd_functions.hبهخطوط31و30: نمائید توجه
#define TFTLCD_DATAPORT_1
#define TFTLCD_DATAPORT_OFFSET 16
TFTLCD_DATAPORT_1،. است شده متصل یک پورت به دیتا خط که معناست بدان
TFTLCD_DATAPORT_OFFSET 16پین از دیتا خطوط به مربوط های پین که معناست بدان ،06. شوند می شروع
برای5با متناسب توان می کنترلی بیتگرفت نظر در بیت هر برای را دلخواهی های پایه ، میکرو به متصل قطعات سایر و مدار
. باشند یکسانی پورت از باید متناظرشان پین ، ها پایه تمامی البته ،)برد بین از را وابستگی این کدها تغییر با توان می (
فایل درtftlcd_functions.hخطوط به33تا38: نمائید توجه
#define TFTLCD_CONTROLPORT_1
#define TFTLCD_CS 0
#define TFTLCD_RS 1
#define TFTLCD_WR 4
#define TFTLCD_RD 8
#define TFTLCD_RST 9
های پایه از کدام هر و بشود باید متصل یک پورت به کنترلی خط ، کدها به باتوجهCs،Rs،WR،RD،RSTترتیب به
های پین به1،0،4،8و9. اند متصل