اطلاعیه

Collapse
No announcement yet.

سوال در مورد GPIO و مدهای آن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد GPIO و مدهای آن

    سلام دوستان
    با توجه به اینکه GPIO می تونه روی حالتآ‌های ورودی یا خروجی ست بشن،من میآ‌خواستم دوستان اگه زحمتی نیست یه توضیح مختصری راجع به حالتآ‌های مختلف
    pull up
    pull down
    push pull
    open drain
    بدن ممنون میآ‌شم.

    #2
    پاسخ : سوال در مورد GPIO و مدهای آن

    با سلام

    برای اینکه نخواهیم با رجیستر درگیر بشویم از CMSIS و لایبری PINSEL استفاده میکنیم.

    1- قدم لازمه لایبری اون رو به برنامه اضافه کنیم .

    کد:
    #include"lpc17xx_pinsel.h"
    2- حالا برای استفاده از این لایبری بایستی یک متغیر جدید تعریف کنیم
    این متغیر کمی با متغیرهایی که قبلا دیدید فرق میکند زیرادرcmsisبرای راحتی بیشتر برنامه نویس یه سری متغیر های جدید که همگی از نوع ساختار هستند ایجاد شده است .

    کد:
    PINSEL_CFG_TypeVarName ;
    PINSEL_CFG_Typepincfg
    متغیری که معرفی کردیم دارای چندین پارامتراست که تک تک به آن اشاره میکنیم

    کد:
    pincfg.Portnum= 0 - 4
    این قسمت باید شماره پورت پایه مورد نظر رو بنویسین که بین 0 تا 4 هستش

    کد:
    pincfg.Pinnum=0 - 31
    در این قسمت شماره پایه مورد نظر قرار میگیره که بین 0 تا 31 هستش

    کد:
    pincfg.Funcnum= 0 - 4
    در این قسمت شماره تابعی که میخواهید پین مورد نظر در اون حالت قرار بگیره وارد میشه
    برای تمامی پینهاgpioبه عنوان شماره تابع صفر در نظر گرفته شده.مثلا برایadcدر مثال فرضی بالا عدد2
    و برایsdaشماره تابع 3 در نظر گرفته شده.شما میتونید از روی دیتاشیت بفهمید که شماره تابع مورد نظر چنذمی باشد.

    کد:
    pincfg.Pinmode = 0 -  4
    در این قسمت میتوانیدpullupیاpulldownیاopendrainبودن اون پین رو مشخص کنید
    برایpullupشدن عدد 0
    برایpulldownشدن عدد 3
    برایopendrainشدن عدد2
    می بینید که برای عدد 1 حالتی وجود نداره .

    پارامتر بعدی داریم

    کد:
    pincfg.Opendrain= 0 or 1
    در این حالت تنها اگر در قسمتpincfg.pinmodeعدد 2 رو قرار دادید توی این پارامتر عدد 1 راقراردهید در غیر این صورت عدد 0.که نشاندهنده این است که پین از داخلpullupیاpulldownدارد یا نه.

    تو این مرحله با تابع زیر کارمون رو کامل میکنیم و تغییرات خواسته شده رو به پین مورد نظر اعمال میکنیم.

    کد:
    PINSEL_ConfigPin(&pincfg(

    دیدگاه


      #3
      پاسخ : سوال در مورد GPIO و مدهای آن

      ممنون از اینکه زحمت کشیدین و جوابم رو دادین
      ولی فکر کنم اشتباه یا بد سوالم رو مطرح کردم که منظورم رو اشتباهی متوجه شدین

      من منظورم این بود که در مورد خود این موارد توضیح بدین نه اینکه چطوری میآ‌شه این حالتآ‌ها رو ست کرد؟
      یعنی بیشتر در مورد push-pull و open drain مشکل دارم و فرقشون و کلا معنیآ‌شون رو نمیآ‌فهمم

      ممنون میآ‌شم در این مورد بیشتر راهنمایی بفرمایید.

      دیدگاه


        #4
        پاسخ : سوال در مورد GPIO و مدهای آن

        نوشته اصلی توسط سیدآ‌علی
        ممنون از اینکه زحمت کشیدین و جوابم رو دادین
        ولی فکر کنم اشتباه یا بد سوالم رو مطرح کردم که منظورم رو اشتباهی متوجه شدین

        من منظورم این بود که در مورد خود این موارد توضیح بدین نه اینکه چطوری میآ‌شه این حالتآ‌ها رو ست کرد؟
        یعنی بیشتر در مورد push-pull و open drain مشکل دارم و فرقشون و کلا معنیآ‌شون رو نمیآ‌فهمم

        ممنون میآ‌شم در این مورد بیشتر راهنمایی بفرمایید.
        نه درست گفتین که! حداقل واسه من معلومه.
        خب اینا مربوط به دیجیتاله. البته واسه مرحله بعد چون گفته های این دوستمون بدردتون می خوره جا داره ازش تشکر کنیم. ولی در مورد این دو مورد؛ دو نوع خروجی در میکروکنترلرهای آرم هستش. حداقل واسه میکرو های محصول ST مثل STM32F103RET6 ما 6 عدد خروجی و ورودی داریم. ورودی ها:
        1) Floating
        2) Pull Up
        3) Pull Down
        و خروجی ها:
        1) Analog
        2) open-drain
        3) push-pull

        البته واسه Alternate function هم دو نوع خروجی آخری رو دوباره داریم. متاسفانه براشون صفحه ویکی فارسی ندیدم من که براتون بذارم ولی یه صفحه لاتین خوب دیدم. با انگلیسی که مشکلی ندارید؟


        Understanding Microcontroller Pin Input/Output Modes

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

        دیدگاه


          #5
          پاسخ : سوال در مورد GPIO و مدهای آن

          مرسی اونو خوندم ولی راستش خیلی چیزی دستگیرم نشد.

          دیدگاه


            #6
            پاسخ : سوال در مورد GPIO و مدهای آن

            البته نه اینکه با انگلیسی مشکل داشته باشم
            مشکل اینه که الکترونیک یادم رفته و به کلی مفهومی مثل open drain و push-pull رو نمیآ‌فهمم و احتیاج دارم یه جا باشه که با شکل مداریآ‌شون قشنگ تحلیل کرده باشه که چی هستن و به چه کار میان وگرنه اون لینک مطالب مفیدی داره و تمام مدهای ورودی و خروجی رو کامل توضیح داده.
            بازم ممنون از پاسختون

            دیدگاه


              #7
              پاسخ : سوال در مورد GPIO و مدهای آن

              سلام
              من OPEN DRAIN رو میگم فعلا :

              فرض کن دوتا پایه از دو میکرو به هم وصل شدن ! و به صورت اولیه هر دو دارای یک منطق اولیه هستند مثلا صفر یا یک !

              خب حالا اگه یکی از میکروها وضعیت پایه اش رو تغییر بده چه اتفاقی می افته ؟ یعنی یکی یکه و دیگری صفر ! ؟ خب به عبارت دیگه یعنی اتصال کوتاه بین VCC و GND چرا ؟

              پس درین-باز در وقع حالتیکه هر پایه فقط میتونه خط رو صفر کنه و یک شدن خط از طریق یک مقاومت انجام می شه ! پس توی این شرایط اگه دو میکرو به هم متصل بشن با خیالت راحت می تونن خط رو صفر یا یک کنند !

              معنی پوش -پول رو هم توی منطق دیجیتال حقیقیتا یادم نمیاد ولی توی آنالوگ میدونم یه آاریش از دو ترانزیستور منفی و مثبت هستش

              دیدگاه


                #8
                پاسخ : سوال در مورد GPIO و مدهای آن

                این ها که خیلی ساده است .اگر آرایش پین میکرو به صورت fig a باشه میشه pull down . در حقیقت پول پ و داون یک بافر ولتاز است . ولی اوپن درین شکل دومه و نقش بافر جریان رو داره





                push-pull هم که نقشش ترکیب هر دوتا است .هم بافر جریان و هم بافر ولتاز



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

                دیدگاه

                لطفا صبر کنید...
                X