اطلاعیه

Collapse
No announcement yet.

[دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

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

    [دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

    با سلام

    چند وقت پیش به دنبال درایور آیسی XPT2046 بودم که متاسفانه کتابخانه مناسبی نتونستم پیدا کنم.این شد که نشستم و خودم یه کتابخانه نوشتم و حالا جهت استفاده کاربران عزیز ECA این جا قرار میدم. البته به همراه توضیحات مناسب.
    یکی از انواع درایور تاچ اسکرین های مقاومتی آیسی XPT2046 هست که تقریبا کارکردی مثل AD7843 دارد و میتوان این آیسی را جایگزین آن کرد. البته ناگفته نماند که این آیسی امکانات بیشتری نسبت به مدل AD7843 دارد که در جای خود میتواند کاربردی باشد مثل:

    1-امکان استفاده از ADC 12بیت داخلی برای یک سیگنال آنالوگ مجزا از تاچ اسکرین
    2- امکان اندازه گیری دمای محیط (البته دقت مناسبی ندارد!)
    3- در کاربردهایی که باتری پشتیبان استفاده میشود میتوان میزان شارژ باتری را توسط این چیپ اندازه گیری کرد
    تمام قابلیت های بالا بوسیله مالتیپلکسر داخلی آیسی انجام میشه و تنها راه ارتباطی ما با آیسی استفاده از spi است.

    ابتدا به بررسی pinout بپردازیم:
    این آیسی در سه نوع پکیج تولید میشه که البته پکیج TSSOP از همه رایج تر هست:


    یکی از مزایای این چیپ این هست که میتونه در رنج ولتاژ وسیعی کار کنه در نتیجه نیازی به تبدیل سطح سیگنال نداریم.



    در ادامه گفته که ولتاژ کاری مناسب بازه 2.5V تا 5.5V هست.

    اینم از توضیحات مربوط به هر پین:



    با توجه با کاربردی که شما مدنظرتون هست تعدادی از این پین ها ممکنه استفاده نشن.
    توضیحات جدول کافی هست فقط من درمورد PENIRQ یه توضیح مختصر میدم:
    این پین فقط در صورتی فعال هست که شما بخاید از تاچ اسکرین دیتا بگیرید. در موارد دیگه مثل مبدل ADC خارجی و دریافت دما و اندازه گیری شارژ باتری این پین غیرفعال میشه.
    نحوه کارکردش به این صورت هست که همیشه در مقدار 1 قرار داره و هنگام فشرده شدن تاچ مقدار 0 میگیره...پس اگر مایل به استفاده از وقفه بودید میتونید وقفه رو درلبه پایین رونده (برای حالتی که به محض فشرده شدن تاچ فعالیت اطلاعات خونده بشه) یا در لبه بالارونده ( برای وقتی که با برداشتن فشار از روی تاچ اطلاعات دریافت بشه) تنظیم کنید.
    حتی میتونید از اینتراپت استفاده نکنید و مقدار این پین رو مثل یک I/O معمولی چک کنید تا وقتی تاچ فشرده شد دستورات مدنظرتون اجرا بشه.

    توضیحات تخصصی تر:
    مبدل آنالوگ به دیجیتال داخلی این چیپ میتونه در دو مد 8بیتی یا 12 بیتی کار کنه.از طرف دیگه میتونه در مد Single Ended یا Differential کار کنه. پیشنهاد خود دیتا شیت برای استفاده از تاچ اسکرین انتخاب مد Differentia هست. بنده هر دو مد رو تست کردم و در در حالت تفاضلی (Differential) پرشهای کمتری نسبت به حالت تک خروجی (Single Ended) مشاهده کردم.
    تفاوت این دو مد در این هست که در حالت تفاضلی ولتاژی به هر دو طرف تاچ اسکرین اعمال میشه و خروجی گرفته میشه.ولی در حالت تک خروجی از ولتاژ رفرنس ADC (2.5V) استفاده میشه و به این صورت هست که یک پین به رفرنس و پین دیگه به زمین متصل میشه.
    تصویر زیر که مربوط به حالت تک خروجی هست رو ببینید:


    اینم حالت تفاضلی:



    به همین سادگی بود!

    در ادامه به اندازه گیری دما میرسیم:
    اندازه گیری دما به این صورت انجام میشه که از یک دیود یک جریان مشخص رو عبور میدن و ولتاژش رو اندازه میگیرن. حالا این روش خودش دو حالت داره:
    1- اندازه گیری فقط از یک دیود انجام بشه که درنتیجه نیاز به کالیبره کردن داره
    2- اندازه گیری در دو دیود با جریان های متفاوت (یک دیود با جریانی 91 بار بزرگتر از دیود دیگری) که کالیبره نیاز نداره

    من حالت دوم رو انتخاب کردم:


    کافیه که شما ولتاژ هر دو دیود رو بخونید و از روی اختلافشون و از طریق فرمول زیر دما رو بدست بیارید:



    اندازه گیری باتری و ورودی کمکی (Auxiliary Input) رو به کتابخانه اضافه نکردم. در صورت استقبال شما و درخواست از طرف شما اضافه میشه.
    اینم دیاگرام اینترفیس دیجیتال برای علاقه مندان:



    خب بریم سراغ توابع و تنظیمات کتابخانه:
    فایل رو که دانلود کنید یه فولدر به اسم xpt2046 میرسید که داخلش سه تا فایل داره به نام های xpt2046.h و xpt2046.c وxpt2046_configs.h .
    تنها کاری که از طرف شما نیاز هست اینه که فایل سوم رو باز کنید و تنظیماتتون رو اونجا اعمال کنید.
    داخل فایل ابتدا باید پین ها متناظر با spi میکرو خودتون رو معرفی کنید.
    در مرحله بعد میتونید به دلخواه استفاده از پین PENIRQ رو تعیین کنید.اگر دیفاین مربوط به شماره پین میکروکنترلر رو کامنت کنید تنظیمات مربوط به تعریف ورودی و پول آپ کردن اون پین غیرفعال میشه.

    مرحله سوم تنظیمات اصلی آیسی قرار داره.برای اینکه تمام تنظیمات پوشش داده بشه سعی کردم همه رو در کنار هم قرار بدم:

    با استفاده از XPT_ADC_RESOLUTION میتونید تعیین کنید که رزولوشن ADC 8بیت باشه یا 12 بیت.

    با دیفاین XPT_ADC_REFERENCE_MODE میتونید مد تفاضلی یا تک خروجی رو تنظیم کنید.

    بوسیله XPT_ADC_REFERENVE_VOLTAGE_SOURCE میتونید ولتاژ رفرنس ADC رو تنطیم کنید. توجه کنید که این کاربرد فقط در استفاده از مد Single Ended کاربرد داره و میتونید تعیین کنید که ولتاژ رفرنس مبدل داخلی از پین خروجی دریافت بشه یا از ولتاژ 2.5V داخلی تامین بشه.

    اگر دیفاین XPT_PEN_INTERRUPT مقدار 1 داشته باشه در موارد ذکر شده در قبل اینتراپت فعال خواهد بود. اگر مقدار 0 بگیره پین PENIRQ به حالت HIGH-IMPDANCE خواهد رفت.

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

    دقت کنید که از طرف شما نیازی به تغییرات تنظیمات spi نیست و در هر بار خوندن خودش توابع spi رو متناسب با کارکرد خودشون تنظیم میکنند و در انتها تنظیمات spi رو به حالت قبل برمیگردانند.در نتیجه شما میتونید از spi برای کارهای جانبی خودتون استفاده کنید بدون هیچ گونه نگرانی از تغییر تنظیمات spi .
    خب شما در کل از سه متد استفاده خواهید کرد:

    1-
    void xpt2046_init();

    در ابتدای برنامه این تابع رو صدا بزنید تا تنظیمات ابتدایی رو انجام بده.
    2-
     xpt2046_get_xy(unsigned int *x,unsigned int *y );

    هرجا که این متد صدا زده بشه مقدار x و y فعلی رو به شما میده. دقت کنید که آرگومان های از نوع اشاره گر هستند و شما باید آدرس متغیرهای x و y موجود در برنامه تون رو وارد کنید.
    3-
    float xpt_get_temperature();

    اگر خواستید دما رو بدست بیارید این متد رو اجرا کنید.

    نکته: اگر قصد استفاده از AD7843 رو دارید باید ولتاژ رفرنس داخلی رو غیر فعال کنید

    فایل ها:

    دانلود کتابخانه
    جدیدترین ویرایش توسط Mahdi.Faani; ۲۱:۰۳ ۱۳۹۵/۰۶/۰۹.
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


    ساخت کنترلر دما PID فازي با AVR [آموزشی]

    #2
    پاسخ : [دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

    ممنون که زحمت کشیدین و این کتابخانه رو قرار دادین ولی یه موردی که هست اینه که هیچ موردی رو برای کالیبره کردن اصن قرار ندادین و حقیقتن توابع و... بقیه اش موجوده و اینکه برای استفاده در تاچ lcd بکار نمیاد منظورم بخاطر تابع کالیبره کردن تاچ بود البته بازم ممنون
    جدیدترین ویرایش توسط amintanharpd; ۱۹:۳۷ ۱۳۹۵/۰۹/۰۵.

    دیدگاه


      #3
      پاسخ : [دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

      سلام خسته نباشید
      برای lpc1768 شما هدر فایل هم دارید؟

      دیدگاه


        #4
        پاسخ : [دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

        نوشته اصلی توسط Mahdi.Faani نمایش پست ها
        سلام من از لایبری که شما زحمت کشیدید استفاده کردم و جواب گرفتم .
        فقط عدد ها خیلی پرش دارد - حدود 70 تا کم و زیاد می شود ، این طبیعی است؟
        و این که چه دلیلی داشته شما از ss برای cs استفاده نکرده اید ؟ با این روش که رفتید دو پایه ی میکرو درگیر هست ....

        دیدگاه


          #5
          پاسخ : [دانلود] [کتابخانه] کتابخانه کامل درایور تاچ اسکرین xpt2046

          کاش یه پروژه واسه ما بیسوادا میذاشتی

          دیدگاه

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