armeducation – Telegram
armeducation
3.58K subscribers
367 photos
326 videos
115 files
370 links
آموزش حرفه ای میکروکنترلرهای ARM

ادمین:
@mzarkoob
مهندس مهدی زرکوب
شروع مطالب :
https://news.1rj.ru/str/armeducation/1
اینستاگرام :
@armeducation
کانال ایتا:
https://eitaa.com/armeducation
همراه :
09359956361
Download Telegram
سخت افزار USB Host .
دو پایه D+ و D- مستقیما به پایه های میکرو متصل شده است.
از دو جامپر برای اینکه پایه D+ و D- یا به Device یا به Host متصل شود، استفاده می شود.
@armeducation
انجام یک کار بزرگ با تقسیم آن به قسمت های کوچک قابل انجام تر است.
قبلا در پست های گذشته ذکر شد که ممکن است افرادی نتوانند پریفرال ها و قسمت های مختلف را با هم ترکیب کنند که منجر به انجام کاری شود.
به عنوان مثال کوچک، قسمتی جزیی از یک کار نمایش عکس روی TFT است. عکس ها در SD یا USB Flash است و سرعت نمایش مهم است. مراحل کار:
- خواندن یک فایل از SD کارت
- نحوه دیکد کردن یک عکس( عکس با فرمت BMP ساده تر و فرمت های دیگری مثل JPG مشکل تر)
- کار با TFT LCD و نحوه عملکرد آن
حال از ترکیب این که چند مرحله یک نمایش عکس ایجاد می شود. در صورت نمایش صحیح با این مسئله مواجه می شوید که چگونه سرعت نمایش را بالا برد!؟ به سراغ بهینه کردین برنامه ها می روید. سعی در استفاده از حداکثر توان CPU خواهید کرد. راه حل های مختلفی را امتحان می کنید . مانند ریختن در یک فضایی و سپس قرار دادن در ال سی دی که نخواهید مستقیما از SD کارت نمایش انجام شود. در صورت مطلوب نبودن ممکن است دنبال یک میکروی قوی تر باشید. اکنون باید برنامه های قبلا نوشته شده را به میکرو جدید منتقل کنید و .....
← چقدر مدت زمان صرف شده تا یک قسمت کوچک به نحو مطلوب انجام شود؟
سایر قسمت ها باقی مانده است! ممکن است همزمان لازم باشد از چند پریفرال استفاده شود. آیا کتابخانه های مورد استفاده این اجازه را می دهد؟ یا خود میکرو چنین امکانی دارد؟
حجمی از دیتا مرتب بایستی منتقل شود و نباید زمان CPU میکرو صرف آن شود چون از انجام سایر کارها باز می مانند. چندین کار بایستی با تقسیم زمان بین آنها انجام شود ....
در اینجا مشخص است که بین راه اندازی اولیه یک یا چند پریفرال تا پیاده سازی یک کار، تفاوت بسیار است.
@armeducation
آیا کتابخانه های مورد استفاده اجازه را می دهد از چند پریفرال همزمان استفاده شود ؟ تا بحال با این مسئله مواجه شده اید؟
به عنوان نمونه برای راه اندازی اولیه کاری با استفاده از توابع RL کیل، قسمت SD کارت و USB را راه اندازی کرده اید. حال می خواهید هر دو با هم کار کند. آیا چنین امکانی با استفاده از توابع RL کیل داده شده است!؟
می خواهید USB و CAN همزمان در STM32 کار کند. آیا چنین امکانی در این میکرو داده شده است!؟
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
اجرای عملی کلاس MSC در usb Host.
اتصال USB Flash به میکروکنترلر LPC1788 و نمایش عکس در TFT LCD.
میکروکنترلر LPC1788 دارای دو usb می باشد.
@armeducation
@armeducation
برای نمایش یک عکس معمولی BMP چگونه بایستی دیکد را انجام داد؟
عکس BMP دیکد خاصی ندارد و فقط کافیست اطلاعات اولیه عکس از ابتدای آن خوانده شده :
https://en.wikipedia.org/wiki/BMP_file_format
و بر اساس آن نمایش از The offset, به بعد انجام شود. اطلاعات مهم قابل استخراج :
The offset
The bitmap width in pixels
the bitmap height in pixels
The number of bits per pixel

@armeducation
سخت افزار USB OTG .
در اینجا OTG می تواند هم هاست باشد و هم دیوایس.
دو پایه D+ و D- مستقیما به پایه های میکرو متصل شده است و دیگه جامپر لازم نیست!
@armeducation
از نرم افزار WinHex می توان برای مشاهده متن فایل ها به صورت هگزادسیمال استفاده کرد.
@armeducation
دستور پیش پردازنده
#ifdef
#ifndef
در مواردی که می خواهید با یک دیفاین سوییچ کردن بین چند مورد را انجام دهید بسیار مفید خواهد بود. در این حالت حجم کدها در حالتی که دیفاین نشده در برنامه در نظر گرفته نمی شود.
به عنوان مثال با تعریف __UART0 از سریال 0 استفاده شده و در غیر این صورت پیش فرض سریال1 خواهد بود :
#ifdef __UART0
#define UART LPC_UART0
#else
#define UART LPC_UART1
#endif
@armeducation
یکی از کاربردهای پورت سریال برای مانیتورینگ برنامه است. بدین ترتیب با خروجی که در هر مرحله داده می شود همین طور اعداد بدست آمده می توان به روند اجرای برنامه نظارت داشت و در صورت بروز مشکل به رفع آن کمک می کند. بهتر است یک کتابخانه ساده داشته باشید که با اضافه کردن آن به پروژه بتوانید نمایش رشته را داشته باشید:
UART0_SendString("\n\r www.arm-education.ir");
در صورتی که لازم باشد از سایر پورت های سریال استفاده شود بعد از اینیشیالیز مربوطه با تغییر کوچک، تابع ارسال رشته تغییر خواهد کرد:
UART1_SendString("\n\r www.arm-education.ir");
در صورتی که نیاز است رشته و متغییر با هم چاپ شود از printf به سادگی می توان با شناساندن به برنامه،استفاده کرد:
R = 3;
M = 3;
S = 1396;
printf("\n\r @armeducation. %i / %i / %i ",S,M,S);
@armeducation
Terminal.exe
330.5 KB
از برنامه ترمینال جهت ارتباط با پورت سریال می توان بین میکرو و PC استفاده کرد.
ابزارهایی این مدل نرم افزارها در اختیار قرار می دهند، باعث سهولت در ارتباط با پورت سریال می شود.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
اجرای عملی استفاده از نرم افزار Hyper Terminal جهت تبادل دیتا در کامپیوتر با پورت سریال .
ساده ترین نرم افزار جهت ارتباط با پورت سریال کامپیوتر، هایپرترمینال است.
@armeducation
Hyper Terminal For Win7.rar
304.8 KB
ساده ترین نرم افزار جهت ارتباط با پورت سریال کامپیوتر، هایپرترمینال است. در ویندوز سون این ابزار وجود ندارد و جداگانه بایستی استفاده شود.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
اجرای عملی استفاده از نرم افزار Terminal جهت تبادل دیتا در کامپیوتر با پورت سریال
ابزارهایی که نرم افزار Terminalو ... در اختیار قرار می دهند، باعث سهولت در ارتباط با پورت سریال می شود.
@armeducation
در پورت سریال در حالت معمول، وقتی دیتایی در حال دریافت است برنامه منتظر می ماند تا دیتا دریافت شود سپس ادامه کار انجام می شود. خوب این جالب نیست که برنامه متتظر بماند و کار دیگری نتواند انجام دهد.
با استفاده از وقفه به محض دریافت هر کاراکتر برنامه وارد زیروال وقفه شده و می توانیم دیتا را دریافت و ادامه اجرای برنامه انجام می شود.
کلیت تنظیم مربوطه فعال کردن یک بیت در یک رجیستر (بنا به نوع میکرو) و فعال کردن زیروال وقفه سریال می باشد.
هر کاراکتر که به سریال میکرو وارد می شود برنامه وارد زیروال وقفه شده، آن را بررسی می کند که اینتر نباشد و در داخل آرایه ای قرار می دهد. در صورت وارد شدن اینتر، می توان یک فلگ را ست کرد تا در طول برنامه از رشته مربوطه استفاده شود.
حال در نظر بگیرید در کاری مرتب دیتا از پورت سریال وارد می شود. به این ترتیب برنامه مرتب بایستی وارد زیروال وقفه شده تا کاراکترها را دریافت کند و .... .فکر می کنید راه حل چیست!؟
@armeducation
مقدار باودریت در سریال با استفاده از تنظیماتی در یک رجیستر در میکروکنترلرها انجام می شود. این تنظیم رابطه مستقیمی با کلاک اعمالی به پریفرال uart دارد که در منوال ذکر شده است. بنابراین در صورتی که تنظیمات کلاک میکرو برروی مقدار مورد نظر نباشد،بدیهیست مقدار باودریت ایجاد شده نیز غلط خواهد بود و در عمل در ترمینال PC چرند دریافت خواهیم کرد.
برای ارتباط بین میکرو و PC لازم است باودریت مقادیر مشخصی باشد مانند 9600 و 115200 و ... . ولی بین ذو میکرو ضرورتی ندارد و می توان مقادیر رند که البته دارای خطای کمتری است، قرار داد.
@armeducation
یک تمرین ساده با پورت سریال :
میکروکنترلر با دریافت متنی از پورت سریال، عملی را انجام دهد:
در صورتی که پیام led1on آمد ال ای دی 1 روشن و وقتی led1off آمد ال ای دی 1خاموش شود. برای led2 نیز همین طور. همچنین با روشن شدن هر ال ای دی متنی به پورت سریال ارسال شود مثلا 1onok یا 1offok ...
حال به جای نرم افزار ترمینال در PC، در ویژال C# یا ... یک برنامه گرافیکی طراحی کنید که ارسال دستورات سریال را با زدن باتونها فراهم کند و با دریافت متن سریال به آن واکنش نشان دهد.
@armeducation
در انتشار یک مطلب علمی و یا آموزشی ، احترام به مالکیت معنوی ایجاب می کند که مطلب ذکر شده همراه با مرجع باشد. مشاهده می شود که در برخی سایت ها،گروهها و ... کاربران ملزم به حذف نام مرجع یک مطلب(علمی و یا آموزشی) خواهند بود و در صورت فوروارد یک مطلب آموزشی، که همراه با مرجع آن می باشد ..... !
همگان می دانیم در انتشار یک مقاله علمی، عدم ذکر نام مراجع کپی برداری محسوب می شود و اصلا قابل پذیرش نیست.
به امید گسترش فرهنگ احترام به تولید کنندگان محتوا
@armeducation
مطالبی که در کانال قرار داده می شود در وب سایت نیز، جهت دسترسی بیشتر قرار داده می شود :
http://www.arm-education.ir/?cat=9
@armeducation
یکی از قابلیت های میکروکنترلرهای ARM ارتباط با SD کارت می باشد.
میکروکنترلرهایی که فقط دارای پریفرال SPI می باشند، با استفاده از رابط SPI با SD کارت ارتباط برقرار می کنند.
میکروکنترلرهایی که دارای پریفرال SDIO می باشند، با استفاده از این رابط با SD کارت ارتباط برقرار می کنند:
https://news.1rj.ru/str/sisoog/35
ساده ترین حالت خواندن و نوشتن در SD کارت، سکتوری است.
با استفاده از توابعی می توان به صورت فایلی با SD کارت کار کرد. یک فایل ایجاد کرد و داخل دیتا قرار داد، فایلی را باز کرد و اطلاعات آن را خواند و ...
توابع RL کیل و همچنین توابع ChaN این قابلیت را ایجاد می کنند که به صورت فایلی با SD کارت کار کرد.
@armeducation
شماتیک اتصال mini SD کارت به میکروکنترلر lpc1768 با رابط SPI.
1- پایه کلاک خارجی SCS : P1.20
2- پایه انتخاب اسلیو SSEL : P1.21
3- پایه داده MISO : P1.23
4- پایه داده MOSI : P1.24

@armeducation
شماتیک اتصال SD کارت به میکروکنترلر lpc1768 بارابط SPI.
میکروکنترلر lpc1768 با استفاده از رابط SPI با SD کارت ارتباط برقرار می کند.
@armeducation