ترفندی برای کم اثر کردن شکستن قفل میکروکنترلر

اگر می‌خواهید محصول خود را که مبنی بر میکروکنترلر است، به بازار یا به هر دلیلی به افرادی، ارائه دهید و در عین حال نگران کپی شدن آن و هدررفتن زحماتتان هستید. احتمالاً خواندن این مطلب برای شما خالی از لطف نباشد. در ادامه می‌خواهم برای شما از روشی صحبت کنم که حتی اگر کسی با شکستن قفل میکروکنترلر به کد هگز برنامه شما دسترسی پیدا کرد، نتواند به راحتی از آن استفاده کند. اگرچه توضیحاتی که در ادامه خواهید دید به طور خاص برای میکروکنترلر STM32 نوشته شده است، اما اصل روش برای سایر میکروکنترلرها نیز کاربردی است.

ادامه ی مطلب

چقدر طول می‌کشد تا UART اطلاعاتم را بفرستد؟ – محاسبه زمان ارسال / دریافت با baud rate

در برنامه‌ای نیاز بود تا بدانیم هر بار ارسال 10 بایت دیتا از طریق UART، چقدر زمان می‌برد. می‌خواستیم با یک حساب سرانگشتی از طریق baud rate – باودریت – تعیین شده، حدود این زمان -چرا حدود؟- را به دست آوریم.

در این برنامه پورت سریال به صورت 8N1 یا به عبارتی هشت بیت دیتا، بدون هیچ پریتی و یک بیت برای پایان تنظیم شده بود. همچنین baud rate هم بر روی 19200 قرار داشت.

اما این اطلاعات چه به ما می‌دهند و از طریق آن‌ها چگونه می‌توانیم زمان مورد نیاز را محاسبه کنیم؟

ادامه ی مطلب

انتخاب پین‌های مناسب برای پریفرال ( remap ) به کمک STM32CubeMX

یک ویژگی فوق العاده در میکروکنترلرهای STM32 این است که گاهی می‌توانید پین‌های پریفرال مورد نیاز خود را عوض کنید. به این کار اصطلاحاً remap کردن می‌گویند.  این کار می‌تواند دست شما را در کشیدن PCB و یا طراحی مدار بازتر کند.

ادامه ی مطلب

آموزش میکروکنترلر STM32 – افزایش پایه های میکروکنترلر

در این پست می خواهیم به این موضوع بپردازیم که افزایش پایه های میکروکنترلر یا بطور دقیق تر، افزایش خروجی های میکروکنترلر چگونه ممکن است؟

اگر تمرین پست های قبلی(+ +) را انجام داده باشید، تا الان باید بتوانید با کلید، پیکسل یک ردیف مشخص از دات ماتریکس را جابجا کنید. اما در ادامه میخواهیم یک گام فراتر برویم و کاری کنیم که پیکسل روشن ما بتواند در هر جهتی که کاربر میخواهد حرکت کند. قاعدتاً بهتره که کلیدها را به 4 کلید افزایش دهیم و هر کدام  را برای حرکت بالا، پایین، چپ و راست پیکسل مشخص کنیم. از آنجا که می خواهیم بر روی حرکت پیکسل در ردیف های مختلف هم کنترل داشته باشیم، در نتیجه باید هر 16 پایه‌ی دات ماتریکس را کنترل کنیم.

ادامه ی مطلب

تابلو روان چگونه کار می کند؟

در پست خروجی کردن GPIO کمی در خصوص اینکه دات ماتریکس چیست و ساختار داخلی آن چگونه است، توضیحات مختصری دادم. دیدیم که تنها با تعداد کمی پایه می توان بر هر LED از دات ماتریکس که می خواهیم کنترل داشت و آن را خاموش یا روشن کرد. کاری که در آنجا مورد نیازمان بود کنترل یک ردیف LED از دات ماتریکس بود اما اگر قرار باشد که هم زمان بر دو ردیف (یا بیشتر) کنترل داشته باشیم. این کار چگونه امکان پذیر خواهد بود؟

ادامه ی مطلب

آموزش میکروکنترلر STM32 – ورودی کردن GPIO

در پست قبل یاد گرفتیم چگونه می‌توان پایه میکرو را به صورت GPIO_Output کانفیگ کرد و در ادامه با ساخت پروژه led چشمک زن چیزهایی که یاد گرفتیم را در معرض آزمون قرار دادیم. در این قسمت می‌خواهیم به نحوه‌ی ورودی کردن GPIO بپردازیم. مثال ساده‌ای هم که برای این قسمت در نظر گرفتم، خواندن وضعیت یک کلید – از نوع tactile button– است. برای ارجاع راحت‌تر، نام مثال این قسمت را هم پروژه کنترل led با تک سوئیچ می‌گذاریم.

ادامه ی مطلب

آموزش میکروکنترلر STM32 – خروجی کردن GPIO

قبلاً در این خصوص که GPIO  چیست صحبت کردیم و گفتیم در صورتیکه بخواهیم یک پایه را به شکل دلخواه صفر یا یک کنیم باید آن را در حالت GPIO_Output ، و به طور برعکس اگر بخواهیم صفر یا یک اعمال شده به آن را بخوانیم باید آن را به صورت GPIO_Input ، پیکربندی کنیم. در ادامه مبحث آموزش میکروکنترلر STM32 قصد دارم نحوه‌ی خروجی کردن GPIO را به همراه یک مثال عملی شرح دهم.

ادامه ی مطلب

GPIO چیست؟

از مفاهیم ابتدایی کار با میکروکنترلرها یا میکروپروسسورها، راه‌اندازی GPIO است. اما گاهی اوقات در آی‌سی‌های خاص هم این واژه را در کارکرد پایه‌ها می‌بینیم. در این پست به بررسی مفهوم GPIO می‌پردازیم تا در آینده بهتر بتوانیم در خصوص راه‌اندازی آن در میکروکنترلرهای STM32 صحبت کنیم.

ادامه ی مطلب

کتابخانه SPL ، HAL یا CMSIS ؟

اغلب افراد ابتدای یادگیری کار با میکروکنترلرهای STM32 این سؤال برایشان پیش می‌آید که با کدام‌یک از کتابخانه‌های HAL ، SPL  یا CMSIS کار کنند؟ تفاوت این‌ها با یکدیگر در چیست؟ هرکدام چه مزیتی نسبت به هم دارند؟ و …. در ادامه می‌خواهیم به توضیح این مفاهیم بپردازیم.

ادامه ی مطلب

نرم افزار CubeMX چیست؟

نرم افزار STM32CubeMX که به اختصار به آن CubeMX -کیوب ام ایکس- نیز می‌گویند، به جهت ساده‌تر کردن و سرعت بخشیدن به برنامه نویسی میکروکنترلرهای STM32 ایجاد شده است. ایجاد پروژه و راه‌اندازی واحدهای مختلف میکروکنترلرهای STM32 به صورت گرافیکی از جمله مهمترین وظایف این نرم‌افزار است. اگرچه کارکردهای دیگری چون تخمین میزان مصرف توان میکروکنترلر را نیز دارد. این نرم‌افزار در نسخه‌های ابتدایی آن باگ‌های زیادی داشت، اما به مرور شرکت ST با بازخوردی که از کاربران می‌گرفت آن را بهبود بخشید. بطوریکه اوضاع کنونی آن در وضعیت به مراتب مطلوب‌تری قرار دارد. در ادامه به تشریح چند ویژگی این نرم افزار خواهیم پرداخت.

ادامه ی مطلب