خب سلام دوباره به همه دوستان : بی مقدمه بعد از 3 روز میریم سراغ قسمت بعدی اموزش؛ تو این جلسه از آموزش stm32 از سری مطالب آموزش آرم، میخوام یکم راجب پین های سخت افزاری stm32 توضیح بدم و یکم از ویزارد stm cube
آموزش stm32f103 جلسه 2 پین های سخت افزاری
عناوین و سرفصل های این مطلب :
- توضیح پایه های تغذیه و کلاک و … میکروکنترلر stm32
- توضیحات کیوب ویزارد stm
تغذیه میکروکنترلر stm32f103
خب همینطوری که میبینید کلا دو نوع تغذیه داریم که برای انالوگ و دیجیتال استفاده میشه :
تغذیه آنالوگ : پین های VDDA و VCCA مربوط به تغذیه انالوگ هستن که به adc ,dac مربوط میشن …
تغذیه دیجیتال : چند تا پین VSS و VDD هم داریم که تغذیه I/O ها و سایر قسمت ها رو تامین میکنن و ما باید همه VCC ها رو + و همه VDD ها رو زمین کنیم ( بهتره برای هر کدوم هم یک خازن 100 نانو فاراد در نظر گرفته بشه و در نزدیک ترین فاصله با میکرو قرار بگیره )
باتری بکاپ : پایه ای داریم به اسم Vbat که برای اتصال به باطری هست، تا در هنگام قطع برق ساعت داخلی دستگاه از کار نیفته و بتونه کار کنه و چون این ایسی ها ایپیرام داخلی ندارن این باطری میتونید قسمتی از ادرس رم رو هم در هنگام قطع برق نگه دارید تا اطلاعات مهم شما ریست نشه ( بعدا راجب این موضوع بیشتر بحث میکنیم )
چند تا پین مهم دیگه هم داریم از جمله پین های ریست و دوتا بوت که پین ریست کاربردش مشخصه برای ریست میکرو و
پین های بوت ( boot0, boot1 ) : برای انتخاب ادرس بوت میکرو هستن که شما با این پینها میتونید حالت های مختلف بوتلودر میکرو رو فعال کنید مثلا یوزارت برای پروگرام و بوت شدن از ادرس ابتدای کد و….
این هم چند تا نکته مهم :
پین NRST با مقاومت پول اپ کنید و با یه خازن 100 نانو به گراند وصل کنید تا میکرو الکی ریست نشه و ریست های نا خاسته رو حذف کنه.
پین BOOT0 پول دان کنید.
سایر موارد هم مرجوع میکنم به رفرنس مانوال که خود شرکت ارایه کرده که میتونید از زیر دانود کنید :
پایه های تامین کننده فرکانس میکرو کنترلر stm32f103
از مهم ترین پینهای ورودی میشه به پین های کریستال اشاره کرد (کریستال ساعت و کریستال اصلی)
اینجا چنتا تفاوت عمده و خیلی بهتر نسبت به AVR داریم که :
- برای تغیر فرکانس میکرو از فیوزبیت ها خبری نیست و شما میتونید با تغیر چندتا ریجیستر کلاک رو عوض کنید .
- یک واحد دارن به نام PLL ( یک جورایی مضرب فرکانس هستش یعنی اینکه شما میتونید با یک کریستال 8 مگا هرتزی انواع فرکانس رو با این واحد تولید کنید مثلا 8MHz*9=72MHz به PLL 9 رو میدیم تا فرکانس ورودی رو 9 برابر کنه و به 72 مگاهرتز برسونه)
- یک ویژگی مهم دیگر هم هست که میتونید به ورودی بخش ها مختلف کلاک های مخلتفی بدید چجوری؟ مثلا جناب تایمر شما با نصف فرکانس اصلی کار کن، یا جناب adc شما با یک چهارم فرکانس اصلی کار کن، و سایر موارد مشابه
نکته ای برای کلاک خارجی stm32f103
میگه که کلاک خارجی حتما باید به پین OSC_IN متصل بشه .
و کریستال به دو تا پین وصل میشه با دوتا خازن 27pf هم پین های کریستال زمین میشن
خب بخش اول اموزش تموم شد میریم سراغ بخش دوم.
شخص شرکت ST یک نرم افزار برای راحتی کار ما ارایه کرده که یک نوع ویزارد هست و فقط کافیه داخلش تنظیمات رو ست کنیم و خروجی پروژه رو دریافت کنیم و کد خودمون رو داخلش پیاده کنیم ( ولی ما ازش استفاده مستقیم نمیکنیم )
خب برنامه رو اجرا میکنیم
با این تصویر مواجه میشیم خب نکته خاصی نداره میگه میخوای پروژه قبلا سیو کردی باز کنی یا جدید بسازی که ما میخوایم جدید بسازیم که new project رو میزنیم
توی این صفحه هم میکروکنترلر مون رو انتخاب میکنیم یا دیسکاوری بردای خود شرکت رو ….
خب من فیلتر ها رو تنظیم میکنم و میکروکنترلر خودمو انتخاب میکنم میکروی من (STM32F103c8t6)هستش.
خب پروژه که ایجاد شد تصویر میکروی انتخاب شده رو میبینید و ترتیب پینها و سمت چپ تصویر هم مجموعه ای از امکانات که راجبشون بحث میکنیم.
خب اولین مبحث ما انتخاب منبع کلاک میکروکنترلر هست که خارجی باشه داخلی باشه که کلا چی باشه، اینجا هم یک ویژگی خیل خوب داریم که توی این سری میکرو ها داریم …
توجه : اگر که هر کدوم از کریستال ها مشکلی براشون پیش بیاد هرگز میکرو توقف نمیکنه و به کار خودش ادامه میده و نهایتا روی کلاک داخلی به صورت اتوماتیک سوییچ میکنه.
خب منوی سمت چپ قسمت RCC مربوط به کلاک خود میکرو هستش که زیر مجموعه اونو باز میکنیم
دو نوع اسیلاتور RC داخلی در هر واحد میکرو وجود دارد با عنوان های HSI و LSI، همونطوری که در عکس بالا دیده میشود.
HSI برابر 8 مگاهرتز (چون کریستال خارجی با 8 مگاهرتز داریم ) و LSI برابر 40 کیلو هرتز میباشد؛ که با تنظیم رجیستر های PLL میشه هرکدوم رو که دوست داشتی به عنوان کلاک خود میکرو انتخاب کنی؛ خب کلاک رو هم روی کریستال خارجی قرار میدیم و نرم افزار دوتا پین کلاک رو از I/O خارج میکنه و به عنوان ورودی کریستال در نظر میگیره که توی تصویر مشخصه :
خب کلاک ما تنظیم شد برای مشاهده جزییات و نمودار گرافیکی تقسیم کلاک میتونید از بالای نرم افزار گزینه clock_configuration رو انتخاب کنید .
این هم نمودار گرافیکی تقسیم کلاک تا الان …
خب حالا وقت اونه بگیم اقای میکرو، pll رو اینقد بکن تا فرکانس کار کلی میکرو ساخته بشه!
حالا از اونجایی که من 72 مگاهرتز رو دوست دارم و میخوام روی این کلاک تنظیمش کنم و کریستال خارجی 8 مگا هرتزی هم دارم پس باید برای به 72 رسیدن PLL رو برابر 9 بزارم (8MHz*9=72MHz)
خب اینجوری PLL رو برابر 9 قرار میدیم و فرکانس خروجی هم نرم افزار برامون محاسبه میکنه 72 مگاهرتز
حالا چون ریجیستر PLL مقادیر بیشتری هم میگیره که اگه انتخاب کنیم فرکانسی بالاتر از توان میکرو ساخته میشه در این صورت نرم افزار به ما ارور میده میگه که فرکانس انتخابی از ماکزیمم میکرو بیشتره
تا اینجا ما کلاک میکرو رو کانفیگ کردیم البته توی کی محیط گافیکی تا دیده بشه الگوریتم کار چجوریه بعد همه اینا رو با توابع spl توی برنامه پیاده میکنیم …
خب حالا اموزش رو تا همینجا نگه میداریم برای جلسه بعد ctrl+s میزنیم و ذخیره میکنیم برای جلسه بعد.
دوستان خسته نباشید “خسته نباشی دلاور خدا قوت پهلوان
”
از استاد خوبمون اقای هادی اسدی تشکر میکنم انشالله زندگی سرشار از موفقیتی داشته باشن
بعد دوستان منو هم دعا کنید (بخصوص اگه اربعین حسینی کربلا هستید )
شاد و پیروز باشد
مهمان
مهندس واقعا سپاسگزارم به خاطر اموزش و روشن کردن. واقعا مطلب عالی گذاشتین و استفاده میکنیم.انشالا همیشه تو زندگی پیروز و موفق و خوشتیپ باشید
مهمان
با سلام. متاسفانه در این آموزش یکی از مهم ترین نکات که انتخاب نوع دیباگر هست مطرح نشده بود. باید در بخش SYS از نرم افزار CubeMX نوع دیباگر رو انتخاب کنید و الا پروگرم کردن میکروکنترلر برای دفعه بعد معضل خواهد شد.
اگر از ST link V2 استفاده می کنید >> Serial Wire
اگر از J link استفاده می کنید بر مبنای شماتیک برد jTag رو انتخاب کنید.
مهمان
سلام و عرض ادب
خیلی ممنون از مطالب آموزشی خوب تون
موفق باشید
مهمان
سلام ممنون از مطالب مفیدتون
راجع به پایه vbat که گفتین میتونیم قسمتی از رم توش ذخیره کنیم کجا توضیح بیشتری دادین ؟
نویسنده این مطلب
توضیح بیشتری ندادم

به فایل های bkp.h و bkp.C برید اسم توابع و رو نوشته که چجوری باهاشون کار کنید نکته اینه که این دیتا ها توی قسمتی از رم نوشته میشن که فقط تا وقتی باطری بکاپ وصل باشه نگه داری میشن ….
این تابع برای نوشتن در ادرس هست
BKP_WriteBackupRegister
و این تابع هم برای خوندن از ادرس
BKP_ReadBackupRegister
ارگومان ها هم به شکل زیر توضیح داده شده
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);
موفق باشید
مهمان
سلام مهندس اموزشاتون عالیه میشه طریقه راه اندازی ال سی دی کاراکتری با همین ماژول stm32f103c8t رو بگین من هرکار کردم که بتونم راه اندازیش کنم روی بردبورد باهمین ماژول جواب نگرفتم
مهمان
سلام مهندس ممنون میشم اکه طریقه راه اندازی ال سی دی کاراکتری رو با STM CUBE هم بگین و همینطور ممنون از اینکه وققتون میزارین مطالب ارزشمندی میگین
مهمان
سلام چرا مانند میکرو کنترلر lpc 1768 ابتدا رجیستر ها رو توضیح ندادین مثلا این میکرو کنترلر چند تا پایه داره ،چند تا پورت داره ،اسم پورت هاش چیه، چند بیتی هستش ،هر پایه چند تا نقش داره ،از چه رجیستری برای ورودی و خروجی ها استفاده میشه و …….
باید مثل اقای مهدی دمرچیلو توضیح میدادین یکم خودمونی خیلی کتابی توضیح دادین
یه مبتدی مثل من بخواد بیاد این میکرو کتترلر رو یاد بگیره که هیچ سر در نمیاره
مهمان
سلام نگفتین توی تنظیمات Setting کدوم Toolchain/Ide رو باید انتخاب کنیم؟ Embitz توی لیست وجود نداره
اصلا کیوب میتونه واسه embitz کد بزنه؟
نویسنده این مطلب
خیر کیوب نمیتونه برای توابع SPL کد بزنه و اساس کیوب hal هستش
مهمان
سام.وبلاگ خوبی دارید.از مطالبش واقعا استفاده کردم.ممنون از زحمات شما دوست عزیز.موفق . پایدار باشید.
مدیر سایت
علیک!
مهمان
ببخشید دوست عزیز من متوجه منظور شما نشدم. موقع ایجاد پروژه توی کیوب که باید حتما نوع میکرو و شرکتش رو مشخص کرد منظور من تنظیمات setting و قسمتی هست که به کیوب گفته میشه با کدوم ide باید پروژه باز بشه.برای کیل وiar و یکی دوتا دیگه هست. یک قسمت other هم فکر کنم داره. نمیدونم کدوم رو باید انتخاب کنم.
مهمان
سلام مهندس
دیروز یه سوال پرسیدم جواب ندادین. توی تنظیمات setting کدوم toolchain/ide رو باید انتخاب کنیم؟ embitz توی لیست وجود نداره
نویسنده این مطلب
نیازی نیست انتخاب کنید موقع ایجاد پروژه میکرو های st رو انتخاب کنید ….. سایر تنظیمات اعمال میشه
مهمان
دوست عزیز شما تنظیمات setting رو نگفتید . اینکه باید کدوم toolchan رو انتخاب کنیم؟ طبیعتا” باید embitz انتخاب بشه ولی توی لیست وجود نداره.
مهمان
سلام
فرق این STM CUBE با HAL چیه؟
نویسنده این مطلب
stmcube ی ویزارده کا کانفیگ هایی که به صورت گرافیکی انجام میدی با توابع HAL میسازه ….
مهمان
خسته نباشی دلاور خدا قوت پهلوان
مهمان
سلام
من stm32f103c8t6 که توسعه آردینو هستش رو خرید کردم ولی ال ای دی متصل به پین 13 کار نمی کنه، در ضمن ال ای دی رو هم تست کردم سالم هست و پین 13 هم با وجود اینکه گذاشتم چشمک بزنه ولی ولتاژ ثابت 1.8 ولت را خروجی می دهد مشکل چیست؟
نویسنده این مطلب
مهندس ما هنوز بلینکر رو ننوشتیم که ثبر کنید جلسه 4 اموزش فردا میاد میتونید بلینکر رو بیازید
اون ولتاژ برای اینه پین وضعیت تعریف نشده ای داره و شناوره
نویسنده سایت
آقا دمت گرم …
خیلی وقته نیت کردم STM32 رو شروع کنم (ریا نشه !)
اما چون منبع درست و حسابی نداره تنبلیم شده . خوشحال شدم دیدم شما آموزششو شروع کردید
موفق باشید
نویسنده این مطلب
شما لطف دارید
مهمان
یه برد آموزشی هم معرفی کنید
در ضمن این میکرو usb داره یعنی ما میتونیم بدون پروگرامر برنامه بریزیم توش
نویسنده این مطلب
سلام بله والا من برد اموزشی چی معرفی کنم شما بر اساس نیاز خودتون برد تهیه کنید بهتره من که یک برد اموزشیی خریدم ولیکن بعدا یک بردی ساختم حالا یکی دیگه هم هست منتهی تست شده نیست اگه اون هم تست کردم بردش جواب داد براتون میزارم
جمله دوم متوجه نشدم خبری بود یا پرسشی ولی اره با یک مبدلی یو اس بی به سریال میتونید پروگرامرش رو روی خود بردتون بزنید ولی من پروگرامر رو ترجیح میدم
مهمان
سلام
از سایتت استفاده بردم ممنون
منم یکی از فرزندان خمینی کبیرم ان شا الله
تو الکترونیک سابقه کاری بالای 15 سال دارم
و پروژه های درست و حسابی انجام دادم
البته بیشتر انالوگ حساب میشم تا دیجیتال
اگه تونستم چیزی یادت بدم خوشحال میشم
با تشکر
بیگی
مدیر سایت
سلام – یه ایمیل دادم خدمتتون.
مهمان
سلام مهندس بیگی
خدا به همراهت باشه
میتوانید در برد STM32L0 مرا کمک کنید؟
لطفا جواب بدهید
تشکر
نویسنده این مطلب
چه کمکی مهندس ؟ با چی کار میکنید ؟ سمپل های خودشو از سایت st بگیرید و این اموزش های جاری رو هم بخونید زیاد تفاوتی ندارن با هم
مهمان
سلام مهندس طریقه راه اندازی lcd کاراکتریم میگین
از اموزشای خوبتونم ممنونم