نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی زمانی

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

296

خب سلام دوباره به همه دوستان : بی مقدمه بعد از 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 تا
مهدی زمانی هستم متنفر از کلیشه های تکراری پادگان انجام پروژه های التیوم و برنامه نویسی میکروکنترلر پذیرفته میشود تلگرام : @stm32f اینستاگرام:zamanimahdi77 ایمیل:timahdizamani@gmail.com
بقیه جلسات : آموزش آرم stm32f103
ارسال دیدگاه
30
نظرات این مطلب بسته شده است.
  1. اشکان

    مهمان

    اشکان

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

  2. موسوی

    مهمان

    موسوی

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

  3. سنگ آنتیک

    مهمان

    سنگ آنتیک

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

  4. homa

    مهمان

    homa

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

      توضیح بیشتری ندادم 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. لیره

    مهمان

    لیره

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

  6. لیره

    مهمان

    لیره

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

  7. mohammad javad

    مهمان

    mohammad javad

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

  8. میلاد

    مهمان

    میلاد

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  9. هونام سنگ

    مهمان

    هونام سنگ

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

      علیک!

  10. بهزاد

    مهمان

    بهزاد

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

  11. بهزاد

    مهمان

    بهزاد

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  12. بهزاد

    مهمان

    بهزاد

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

  13. محسن

    مهمان

    محسن

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  14. محمد

    مهمان

    محمد

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

  15. محمدرضا

    مهمان

    محمدرضا

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  16. محمد صنعتگر

    نویسنده سایت

    محمد صنعتگر

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  17. محمد

    مهمان

    محمد

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

    مشاهده پاسخ ها (1)
    • مهدی زمانی

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

      مهدی زمانی

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

  18. بیگی

    مهمان

    بیگی

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

    مشاهده پاسخ ها (4)
    • مهدی دمرچیلو

      مدیر سایت

      مهدی دمرچیلو

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

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

      مهمان

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

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

      • مهدی زمانی

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

        مهدی زمانی

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

        • لیره

          مهمان

          لیره

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