نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
Avatar

آموزش stm32f103 جلسه 2 پین های سخت افزاری

خب سلام دوباره به همه دوستان : بی مقدمه بعد از 3 روز میریم سراغ قسمت بعدی اموزش؛ تو این جلسه از آموزش stm32 از سری مطالب آموزش آرم، میخوام یکم راجب پین های سخت افزاری stm32 توضیح بدم و یکم از ویزارد stm cube
آموزش stm32f103 جلسه 2 پین های سخت افزاری

آموزش stm32f103 جلسه 2 پین های سخت افزاری


 
عناوین و سرفصل های این مطلب : 

  1. توضیح پایه های تغذیه و کلاک و … میکروکنترلر stm32
  2. توضیحات کیوب ویزارد stm

 

تغذیه میکروکنترلر stm32f103

تغذیه میکروکنترلر stm32f103خب همینطوری که میبینید کلا دو نوع تغذیه داریم که برای انالوگ و دیجیتال استفاده میشه :
تغذیه آنالوگ : پین های VDDA و VCCA مربوط به تغذیه انالوگ هستن که به adc ,dac مربوط میشن …
تغذیه دیجیتال : چند تا پین VSS و VDD هم داریم که تغذیه I/O ها و سایر قسمت ها رو تامین میکنن و ما باید همه VCC ها رو + و همه VDD ها رو زمین کنیم ( بهتره برای هر کدوم هم یک خازن 100 نانو فاراد در نظر گرفته بشه و در نزدیک ترین فاصله با میکرو قرار بگیره )
 
باتری بکاپ : پایه ای داریم به اسم Vbat که برای اتصال به باطری هست، تا در هنگام قطع برق ساعت داخلی دستگاه از کار نیفته و بتونه کار کنه و چون این ایسی ها ایپیرام داخلی ندارن این باطری میتونید قسمتی از ادرس رم رو هم در هنگام قطع برق نگه دارید تا اطلاعات مهم شما ریست نشه ( بعدا راجب این موضوع بیشتر بحث میکنیم )
 
چند تا پین مهم دیگه هم داریم از جمله پین های ریست و دوتا بوت که پین ریست کاربردش مشخصه برای ریست میکرو و
پین های بوت ( boot0, boot1 ) : برای انتخاب ادرس بوت میکرو هستن که شما با این پینها میتونید حالت های مختلف بوتلودر میکرو رو فعال کنید مثلا یوزارت برای پروگرام و بوت شدن از ادرس ابتدای کد و….
 
این هم چند تا نکته مهم :
پین NRST با مقاومت پول اپ کنید و با یه خازن 100 نانو به گراند وصل کنید تا میکرو الکی ریست نشه و ریست های نا خاسته رو حذف کنه.
پین BOOT0 پول دان کنید.
سایر موارد هم مرجوع میکنم به رفرنس مانوال که خود شرکت ارایه کرده که میتونید از زیر دانود کنید :

 

پایه های تامین کننده فرکانس میکرو کنترلر stm32f103

از مهم ترین پینهای ورودی میشه به پین های کریستال اشاره کرد (کریستال ساعت و کریستال اصلی)
اینجا چنتا تفاوت عمده و خیلی بهتر نسبت به AVR داریم که :

  1. برای تغیر فرکانس میکرو از فیوزبیت ها خبری نیست و شما میتونید با تغیر چندتا ریجیستر کلاک رو عوض کنید .
  2. یک واحد دارن به نام PLL ( یک جورایی مضرب فرکانس هستش یعنی اینکه شما میتونید با یک کریستال 8 مگا هرتزی انواع فرکانس رو با این واحد تولید کنید مثلا 8MHz*9=72MHz به PLL 9 رو میدیم تا فرکانس ورودی رو 9 برابر کنه و به 72 مگاهرتز برسونه)
  3. یک ویژگی مهم دیگر هم هست که میتونید به ورودی بخش ها مختلف کلاک های مخلتفی بدید چجوری؟ مثلا جناب تایمر شما با نصف فرکانس اصلی کار کن، یا جناب adc شما با یک چهارم فرکانس اصلی کار کن، و سایر موارد مشابه smile

 
نکته ای برای کلاک خارجی stm32f103
کلاک خارجی stm32f103
میگه که کلاک خارجی حتما باید به پین OSC_IN متصل بشه .
و کریستال به دو تا پین وصل میشه با دوتا خازن 27pf هم پین های کریستال زمین میشن
خب بخش اول اموزش تموم شد میریم سراغ بخش دوم.
 

توضیحات کیوب ویزارد stm

شخص شرکت ST یک نرم افزار برای راحتی کار ما ارایه کرده که یک نوع ویزارد هست و فقط کافیه داخلش تنظیمات رو ست کنیم و خروجی پروژه رو دریافت کنیم و کد خودمون رو داخلش پیاده کنیم ( ولی ما ازش استفاده مستقیم نمیکنیم laugh )

توجه : این نرم افزار با java نوشته شده پس باید یک نرم افزار دیگه هم کنارش نصب بشه تا اجرا بشه اون هم میتونید از زیر دانلود کنید :
 
خب برنامه رو اجرا میکنیم
نرم افزار کیوب
با این تصویر مواجه میشیم خب نکته خاصی نداره میگه میخوای پروژه قبلا سیو کردی باز کنی یا جدید بسازی که ما میخوایم جدید بسازیم که new project رو میزنیم
ایجاد پروژه جدید در نرم افزار کیوب
توی این صفحه هم میکروکنترلر مون رو انتخاب میکنیم یا دیسکاوری بردای خود شرکت رو ….
خب من فیلتر ها رو تنظیم میکنم و میکروکنترلر خودمو انتخاب میکنم میکروی من (STM32F103c8t6)هستش.
STM32F103c8t6
خب پروژه که ایجاد شد تصویر میکروی انتخاب شده رو میبینید و ترتیب پینها و سمت چپ تصویر هم مجموعه ای از امکانات که راجبشون بحث میکنیم.
 
خب اولین مبحث ما انتخاب منبع کلاک میکروکنترلر هست که خارجی باشه داخلی باشه که کلا چی باشه، اینجا هم یک ویژگی خیل خوب داریم که توی این سری میکرو ها داریم …
توجه : اگر که هر کدوم از کریستال ها مشکلی براشون پیش بیاد هرگز میکرو توقف نمیکنه و به کار خودش ادامه میده و نهایتا روی کلاک داخلی به صورت اتوماتیک سوییچ میکنه.
خب منوی سمت چپ قسمت RCC مربوط به کلاک خود میکرو هستش که زیر مجموعه اونو باز میکنیم
منبع کلاک میکروکنترلر
دو نوع اسیلاتور RC داخلی  در هر واحد میکرو وجود دارد با عنوان های HSI و LSI، همونطوری که در عکس بالا دیده میشود.
HSI برابر 8 مگاهرتز (چون کریستال خارجی با 8 مگاهرتز داریم ) و LSI برابر 40 کیلو هرتز میباشد؛ که با تنظیم رجیستر های PLL میشه هرکدوم رو که دوست داشتی به عنوان کلاک خود میکرو انتخاب کنی؛ خب کلاک رو هم روی کریستال خارجی قرار میدیم و نرم افزار دوتا پین کلاک رو از I/O خارج میکنه و به عنوان ورودی کریستال در نظر میگیره که توی تصویر مشخصه :
کریستال خارجی
خب کلاک ما تنظیم شد برای مشاهده جزییات و نمودار گرافیکی تقسیم کلاک میتونید از بالای نرم افزار گزینه clock_configuration رو انتخاب کنید .
کامپایلر embitz
این هم نمودار گرافیکی تقسیم کلاک تا الان …
خب حالا وقت اونه بگیم اقای میکرو، pll رو اینقد بکن تا فرکانس کار کلی میکرو ساخته بشه!
حالا از اونجایی که من 72 مگاهرتز رو دوست دارم و میخوام روی این کلاک تنظیمش کنم و کریستال خارجی 8 مگا هرتزی هم دارم پس باید برای به 72 رسیدن PLL رو برابر 9 بزارم (8MHz*9=72MHz)
واحد pll میکروکنترلر
خب اینجوری PLL  رو برابر 9 قرار میدیم و فرکانس خروجی هم نرم افزار برامون محاسبه میکنه 72 مگاهرتز
حالا چون ریجیستر PLL مقادیر بیشتری هم میگیره که اگه انتخاب کنیم فرکانسی بالاتر از توان میکرو ساخته میشه در این صورت نرم افزار به ما ارور میده میگه که فرکانس انتخابی از ماکزیمم میکرو بیشتره
 آموزش آرم
تا اینجا ما کلاک میکرو رو کانفیگ کردیم البته توی کی محیط گافیکی تا دیده بشه الگوریتم کار چجوریه بعد همه اینا رو با توابع spl توی برنامه پیاده میکنیم …
 
خب حالا اموزش رو تا همینجا نگه میداریم برای جلسه بعد ctrl+s میزنیم و ذخیره میکنیم برای جلسه بعد.
دوستان خسته نباشید smile “خسته نباشی دلاور خدا قوت پهلوان rofl
از استاد خوبمون اقای هادی اسدی تشکر میکنم smile انشالله زندگی سرشار از موفقیتی داشته باشن
بعد دوستان منو هم دعا کنید (بخصوص اگه اربعین حسینی کربلا هستید )
شاد و پیروز باشد heart  victory

گروه پرسش و پاسخ الکترونیکی در سروش
تعداد مطالب : 20 تا
Avatar به شما توصیه میکنم سربازی نرید / با این قیمت دلار نمیشه الکترونیک کار کرد / برای مهاجرت به USA با لاتاری سال 2020 برنامه هایی دارم افرادی که در این ضمینه با من موافق هستن (تحقیقات کامل خودتون رو از اینترنت انجام بدید و سوالت رو از من نپرسید) برای ایجاد کمپین و مهاجرت دسته جمعی مشخصات ارتباطی خودتون برای من ایمیل کنید zamanimahdi@icloud.com در سابجکت ایمیل حتما بنویسید "لاتاری" به امید موفقیت :)
ارسال دیدگاه
30

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    اشکان

    مهندس واقعا سپاسگزارم به خاطر اموزش و روشن کردن. واقعا مطلب عالی گذاشتین و استفاده میکنیم.انشالا همیشه تو زندگی پیروز و موفق و خوشتیپ باشید wink

  2. Avatar

    مهمان

    موسوی

    با سلام. متاسفانه در این آموزش یکی از مهم ترین نکات که انتخاب نوع دیباگر هست مطرح نشده بود. باید در بخش SYS از نرم افزار CubeMX نوع دیباگر رو انتخاب کنید و الا پروگرم کردن میکروکنترلر برای دفعه بعد معضل خواهد شد.
    اگر از ST link V2 استفاده می کنید >> Serial Wire
    اگر از J link استفاده می کنید بر مبنای شماتیک برد jTag رو انتخاب کنید.

  3. Avatar

    مهمان

    سنگ آنتیک

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

  4. Avatar

    مهمان

    homa

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

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      توضیح بیشتری ندادم sad
      به فایل های 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);
      موفق باشید give_rose

  5. Avatar

    مهمان

    لیره

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

  6. Avatar

    مهمان

    لیره

    سلام مهندس ممنون میشم اکه طریقه راه اندازی ال سی دی کاراکتری رو با STM CUBE هم بگین و همینطور ممنون از اینکه وققتون میزارین مطالب ارزشمندی میگین

  7. Avatar

    مهمان

    mohammad javad

    سلام چرا مانند میکرو کنترلر lpc 1768 ابتدا رجیستر ها رو توضیح ندادین مثلا این میکرو کنترلر چند تا پایه داره ،چند تا پورت داره ،اسم پورت هاش چیه، چند بیتی هستش ،هر پایه چند تا نقش داره ،از چه رجیستری برای ورودی و خروجی ها استفاده میشه و …….
    باید مثل اقای مهدی دمرچیلو توضیح میدادین یکم خودمونی خیلی کتابی توضیح دادین
    یه مبتدی مثل من بخواد بیاد این میکرو کتترلر رو یاد بگیره که هیچ سر در نمیاره wacko

  8. Avatar

    مهمان

    میلاد

    سلام نگفتین توی تنظیمات Setting کدوم Toolchain/Ide رو باید انتخاب کنیم؟ Embitz توی لیست وجود نداره
    اصلا کیوب میتونه واسه embitz کد بزنه؟

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      خیر کیوب نمیتونه برای توابع SPL کد بزنه و اساس کیوب hal هستش

  9. Avatar

    مهمان

    هونام سنگ

    سام.وبلاگ خوبی دارید.از مطالبش واقعا استفاده کردم.ممنون از زحمات شما دوست عزیز.موفق . پایدار باشید. heart

    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      علیک!

  10. Avatar

    مهمان

    بهزاد

    ببخشید دوست عزیز من متوجه منظور شما نشدم. موقع ایجاد پروژه توی کیوب که باید حتما نوع میکرو و شرکتش رو مشخص کرد منظور من تنظیمات setting و قسمتی هست که به کیوب گفته میشه با کدوم ide باید پروژه باز بشه.برای کیل وiar و یکی دوتا دیگه هست. یک قسمت other هم فکر کنم داره. نمیدونم کدوم رو باید انتخاب کنم.

  11. Avatar

    مهمان

    بهزاد

    سلام مهندس
    دیروز یه سوال پرسیدم جواب ندادین. توی تنظیمات setting کدوم toolchain/ide رو باید انتخاب کنیم؟ embitz توی لیست وجود نداره

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      نیازی نیست انتخاب کنید موقع ایجاد پروژه میکرو های st رو انتخاب کنید ….. سایر تنظیمات اعمال میشه

  12. Avatar

    مهمان

    بهزاد

    دوست عزیز شما تنظیمات setting رو نگفتید . اینکه باید کدوم toolchan رو انتخاب کنیم؟ طبیعتا” باید embitz انتخاب بشه ولی توی لیست وجود نداره.

  13. Avatar

    مهمان

    محسن

    سلام
    فرق این STM CUBE با HAL چیه؟

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      stmcube ی ویزارده کا کانفیگ هایی که به صورت گرافیکی انجام میدی با توابع HAL میسازه ….

  14. Avatar

    مهمان

    محمد

    خسته نباشی دلاور خدا قوت پهلوان

  15. Avatar

    مهمان

    محمدرضا

    سلام
    من stm32f103c8t6 که توسعه آردینو هستش رو خرید کردم ولی ال ای دی متصل به پین 13 کار نمی کنه، در ضمن ال ای دی رو هم تست کردم سالم هست و پین 13 هم با وجود اینکه گذاشتم چشمک بزنه ولی ولتاژ ثابت 1.8 ولت را خروجی می دهد مشکل چیست؟

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      مهندس ما هنوز بلینکر رو ننوشتیم که ثبر کنید جلسه 4 اموزش فردا میاد میتونید بلینکر رو بیازید
      اون ولتاژ برای اینه پین وضعیت تعریف نشده ای داره و شناوره

  16. Avatar

    نویسنده سایت

    محمد صنعتگر

    آقا دمت گرم …
    خیلی وقته نیت کردم STM32 رو شروع کنم (ریا نشه !)
    اما چون منبع درست و حسابی نداره تنبلیم شده . خوشحال شدم دیدم شما آموزششو شروع کردید
    موفق باشید

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      شما لطف دارید give_rose

  17. Avatar

    مهمان

    محمد

    یه برد آموزشی هم معرفی کنید
    در ضمن این میکرو usb داره یعنی ما میتونیم بدون پروگرامر برنامه بریزیم توش

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      سلام بله والا من برد اموزشی چی معرفی کنم شما بر اساس نیاز خودتون برد تهیه کنید بهتره من که یک برد اموزشیی خریدم ولیکن بعدا یک بردی ساختم حالا یکی دیگه هم هست منتهی تست شده نیست اگه اون هم تست کردم بردش جواب داد براتون میزارم
      جمله دوم متوجه نشدم خبری بود یا پرسشی ولی اره با یک مبدلی یو اس بی به سریال میتونید پروگرامرش رو روی خود بردتون بزنید ولی من پروگرامر رو ترجیح میدم

  18. Avatar

    مهمان

    بیگی

    سلام
    از سایتت استفاده بردم ممنون
    منم یکی از فرزندان خمینی کبیرم ان شا الله
    تو الکترونیک سابقه کاری بالای 15 سال دارم
    و پروژه های درست و حسابی انجام دادم
    البته بیشتر انالوگ حساب میشم تا دیجیتال
    اگه تونستم چیزی یادت بدم خوشحال میشم
    با تشکر
    بیگی

    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      سلام – یه ایمیل دادم خدمتتون.

    • Avatar

      مهمان

      سید محمد فاطمی

      سلام مهندس بیگی
      خدا به همراهت باشه
      میتوانید در برد STM32L0 مرا کمک کنید؟
      لطفا جواب بدهید
      تشکر

      • Avatar

        نویسنده این مطلب

        مهدی زمانی

        چه کمکی مهندس ؟ با چی کار میکنید ؟ سمپل های خودشو از سایت st بگیرید و این اموزش های جاری رو هم بخونید زیاد تفاوتی ندارن با هم

        • Avatar

          مهمان

          لیره

          سلام مهندس طریقه راه اندازی lcd کاراکتریم میگین
          از اموزشای خوبتونم ممنونم