-
 

راهنمای استفاده از کتابخانه touch قسمت 3 ( بخش اول – تنظیم پریفرالها)

لینک : قسمت معرفی کتابخانه

 

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

 

 

موضوع : راهنمای استفاده از قسمت  مربوط به درایور xpt2046 ( بخش اول – تنظیم پریفرالها)

 

با درود .

در این قسمت تنظیمات مربوط به پریفرالهای مربوط به درایور xpt2046 کتابخانه را توضیح خواهم داد.

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

ولی به دلیل جلوگیری از پیچیده شدن بیش از حد کتابخانه و انعطاف پذیری  آن  پیکربندی اولیه پریفرالها (  فعال سازی باس دیتا و روشن کردن clock  پریفرال )ادرون کتابخانه انجام نشده است و لازم است در بیرون کتابخانه این کار را انجام دهیم .

من ترجیح میدم این کار را به وسیله نرم افزار CubeMx  انجام دهم . که این نرم افزار این کار را به وسیله توابع  HAL و LL  انجام میدهد .

دوستانی که نمیخواهند از توابع HAL استفاده کنند و تمایل دارند کدهای تنظیمات پریفرالها را با استفاده از CMSIS یا توابع SPL یا به هر نحو دیگری بنویسند . لازم است که تنظیمات مربوط را بنا بر  توضیحات زیر انجام دهند.

 

 

تنظیمات پریفرالها :

تنظیمات مربوط به پریفرالها شامل 2 بخش است .

1- GPIO

2 -  واحد SPI

*********************************************************

*********************************************************

1 - تنظیمات مربوط به GPIO :

این کتابخانه به طور معمول به 1 پین GPIO نیاز دارد که برای فعال سازی چیپ xpt2046   استفاده میشود( پایه T_CS ).

اما گاها و بنا به شیوه ی برنامه نویسی ممکن است به یک پین دیگر هم نیاز باشد .( PEN  یا PEN_IRQ ).

*********************************************************

تنظیمات مربوط به پین T_CS  یا همان XPT2046_CS  :

در تصویر زیر تنظیمات مربوط در CubeMX را مشاهده میکنید . ( کادر قرمز)

 

 

*********************************************************

تنظیمات مربوط به پین PEN_IRQ :

عملکرد پین PEN درچیپ   xpt2046 به این صورت است که در صورتی که  کاربر آنرا فعال کرده باشد ( با انتخاب مد توان فعال یا غیر فعال میشود ) هنگام لمس شدن صفحه تاچ  ولتاژ آن low  میشود .

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

 در تصویر زیر تنظیمات مربوط به این پین را مشاهده میکنید .

 

*********************************************************

*********************************************************

1 - تنظیمات مربوط به SPI:

 برای تنظیم  spi  ابتدا لازم است که آنرا به صورت  Full-DuplexMaster  راه اندازی نماییم .

ابتدا به سربرگ pinout  رفته (کادر قرمز ) و سپس واحد SPI را مانند تصویر زیر فعال نمایید (کادر سبز)

 

سپس به سربرگ configuration  ( کادر قرمز ) بروید و SPI  فعال شده را مانند تصویر زیرانتخاب نمایید .

 

 

در این مرحله لطفا  تنظیمات را مانند تنظیم زیر انجام دهید .

و مقدار بادریت ( کادر سبز)   کمتر از 2.5  Mbit/s باشد.

 

 

توجه :

در بعضی نسخه های CubeMx  ( نسخه 4.26 که مورد استفاده خودم هست  )  توابع هال تولید شده برای SPI اشکال دارند و به درستی کار نمیکنند . به همین جهت بهتر است توابع راه اندازی SPI  را به جای HAL روی LL  قرار دهید .

لطفا برای این کار به تصویر زیر توجه نمایید .

 

در اینجا تنظیمات  مربوط یه پریفرالها به پایان رسید.

 

 

لینک قسمت قبلی

لینک قسمت بعدی: در حال تکمیل

راهنمای استفاده از کتابخانه touch قسمت 2 ( راه اندازی)

لینک : قسمت معرفی کتابخانه

 

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

 

با درود مجدد .

 

در قسمت قبل توضیح دادم که وقتی کتابخانه رو خریداری میکنید چه فایلهایی رو دریافت خواهید کرد و هر کدام از اونها مربوط به چه چیزی هست .

در این قسمت قصد دارم در مورد راه اندازی و اجرای کتابخانه روی میکرو کنترلر      stm32    توضیح بدم .

از اونجا که مبحث تاچ با LCD پیوند خورده و lcd  های مختلف با پروتکل های ارتباطی مختلفی در بازار وجود دارد بحث ارئه یک مثال واحد برای راه اندازی   تاچ کمی حالت چالشی دارد .

با توجه به این موضوع 3 راه برای راه اندازی وجود دارد .

 **************************************************

1 -  راه اندازی با استفاده از فایل هگز ارائه شده در صفحه معرفی  ( راه حل آسان)

2 -  راه اندازی با استفاده از پروژه  (مثال ) همراه کتابخانه ( راه حل کمی مشکلتر)

3 -  راه اندازی با استفاده از ساختن یک پروزه و اضافه کردن فایلهای کتابخانه و GUI به آن( راه حل طولانی ) که در واقع میشه همون مطالب مربوط به  راهنمای استفاده از کتابخانه  که  در آینده منتشر خواهم کرد .( فعلا با این روش کاری نداریم )

****************************************************

****************************************************

****************************************************

1- راه اندازی با استفاده از فایل هگز( روش آسان) :

 

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

 در این روش پایه های lcd  وtouch  رو همسان با توضیحات داخل فایل ، به میکرو کنترلر متصل میکنید و فایل هگز را روی میکرو کنترلر بارگزاری میکنید و تمام .

عملکرد برنامه را خواهید دید .

دانلود فایل هگز و راهنما

**************************************************

****************************************************

2 -  راه اندازی با استفاده از مثال همراه کتابخانه :

 

     این مثال یک پروژه ست که با نرم افزار True Studio  تولید شده آما فاقد کتابخانه ای برای lcd  هست و شما باید خودتان یک کتابخانه lcd را اضافه نمایید .

این شامل 2 حالت میشود.

 

****************************************************

 1 - اضافه کردن کتابخانه lcd    که  خودم از اون استفاده کردم :

 

      برای تهیه این کتابخانه و اطلاعات در مورد نوع lcd  و نحوه ی راه اندازی میتوانید به   ( اینجا )   مراجعه کنید . ( پیشنهاد میشود ابتدا کتابخانه را روی میکرو کنترلر راه اندازی نمایید سپس آنرا به مثال تاچ اضافه کنید).

بعد از تهیه فقط کافیست پوشه کتابخانه  lcd  رو به پروزه اضافه نمایید تنظیمات مربوط به lcd   را انجام بدید و پروژه را کمپایل کنید .

چگونگی اتصال پایه های  lcd  و تاچ  به میکرو کنترل در فایل cube MX   همراه پروژه وجود دارد

 .

نمایی از چینش پایه ها را در تصویر زیر میبینید.

 

 

در تصویر زیر پایه های CS , RS . WR ,RST  و   D0…15 مربوط به lcd  هستند.

 و پایه های PEN_IRQ , T_CS و SPI1-MISO  , SPI1-MOSI,  SPI1-SCK     مربوط به تاچ هستند .

 

***********************************************

2 – راه اندازی با یک کتابخانه دلخواه برای LCD :

 

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

با توجه به این موضوع که به دلیل طولانی بودن نمیشه تمام مطالب رو اینجا توضیح بدهم ،بنابر این مطالب اصلی و کلیدی را در این قسمت توضیح میدم و لازم است که بقیه جزئیات رو شما باید با نگاه کردن به کدهای مثال همراه متوجه بشوید. .

 

برای اینکار لطفا مراحل زیر رو دنبال کنید .

 

1 -  ابتدا با استفاده از فایل CUBE MX   همراه پروزه تنظیمات لازم را برای پایه های تاچ و LCD انجام دهید  .

یا حتی روش بهتر این هست که فایل Cube MX  همراه پروژه رو برای استفاده از LCD  خودتان ویرایش کنید و پروژه رو دوباره بسازید .

( پایه های مربوط به تاچ در تصویر بالا توضیح داده شده است )

توجه : SPI  سخت افزاری با توابع هال به درستی کار نمیکند . حداقل در نسخه  CUBE MX  مورد استفاد ه من چنین است . پس بهتر است که در تنظیمات توابع مورد استفاده  SPI را به جای HAL  روی LL تنظیم نمایید.

 

2- ابتدا کتابخانه ی lcd  مورد نظر را به پروژه اضافه نمایید و تتنظیمات مربوطه را انجام دهید. ( بهتر است قبل از استفاده از کتابخانه LCD  آنرا تست کنید تا از عملکرد درست آن مطمئن شوید)

 

3 - در مرحله بعد کتابخانه تاچ و GUI  همراه تاچ ( توی مثال همراه پروژه وجود دارد ) را به پروژه اضافه نمایید و مسیر پوشه ها را به کمپایلر معرفی نمایید .

توجه : برای اضافه کردن کتابخانه تاچ و gui  به پروژه لطفا از فایل main.c کمک بگیرید.

 

 

4 – حالا نوبت به تنظیمات کتابخانه تاچ و اتصال  کتابخانه LCD (یا به عبارت بهتر معرفی توابع مورد نیاز،) به کتابخانه تاچ میرسد .

 

****************************************************

4-1 - تنظیمات قسمت درایور xpt2046  :

 

از پوشه  Xpt2046_Driver   فایل  xpt2046_conf.h  را باز کنید که محتویاتش در تصویر زیر نمایان هست .

 

 

 

ماکروی XPT2046_COR_TYPE ( خط 22)   :

 نوع میکرو کنترلر را انتخاب کنید .

 

ماکروی XPT2046_SPI_UNIT ( خط 27):

     مشخص شده از کدام  SPI استفاده شده است (  نام روبه روی این ماکرو از استاندارد نام گذاری استاندارد پریفرالها (cmsis  )

    استفاده شده است .

 

ماکروی XPT2046_CPU_Fخط(32) :

فرکانس هسته را مشخص میکند.

 

ماکروی XPT2046_CS_PORT  : پورت مورد استفاده پایه CS را مشخص میکند ( برا ساس نام گذاری cmsis )

 

ماکروی XPT2046_CS_PIN : شماره  پین مورد استفاده پایه CS را مشخص میکند( 0 تا 15) .

 

تنظیمات درایور در اینجا تمام شده. حال نوبت به تنظیمات تاچ میرسد.

 

****************************************************

4-2- تنظیمات قسمت touch :

 

از پوشه touch  فایل touch_conf.h را باز کنید . محتویات این فایل را در تصویر زیر میبینید.

  

ماکروی TOUCH_ORIGIN_THAN_LCDORIGIN_FOR_CALIB ( خط 20 ) :

 

این ماکرو زاویه بین مبداlcd  و مبدا touch را به کتابخانه معرفی میکند .

برای تعیین این زاویه لطفا به تصویر زیر توجه کنید .

 

در تصویر زیر جهت چرخش در جهت عقربه های ساعت هست . و از مبدا lcd  شروع میشود .

و جایگاه مبدا تاچ زاویه رو مشخص خواهد کرد .

به طور مثال در تصویر بالا زاویه مبدا تاچ میشه 180 درجه .

 

ماکروی TOUCH_WIDTH ( خط 38):

   این ماکرو تعداد پیکسلهای  عرض( ستون ها ) lcd  را مشخص میکند.

 

     ماکروی       TOUCH_HEIGHT( خط 39) :

این ماکرو تعداد پیکسلهای ارتفاع( سطرهای) lcd  را مشخص میکند.

 

توجه : دو ماکرو بالا را مطابق با ابعاد Lcd مورد استفاده خودتان تغییر دهید.

 

در اینجا تنظیمات قسمت تاچ به پایان رسید

 

****************************************************

4-3 - اتصال کتابخانه lcd  به کتابخانه touch :

 

از همان پوشه touch   لطفا فایل  touch_link.h را باز کنید .

 

محتویات این فایل را در تصویر زیر میبینید .

 

توضیح:

در این فایل است که ما توابع مورد نیاز در ارتباط با lcd رابه کتابخانه touch  معرفی و کتابخانه lcd  را به کتابخانه touch  متصل خواهیم کرد

ابتدا:

خطوط 22 و23 ( کادر قرمز) را به صورت کامنت در بیاورید و به جای آن فایلهای مربوط به کتابخانه lcd  خودتان را پیوست کنید .

 بعد :

در بخش LCD Func   ( کادر سبز)ماکروهایی را میبینید که  با استفاده از آنها توابعی از کتابخانه lcd  را که کتابخانه/touch  از آنها استفاده میکند را به کتابخانه touch  معرفی میکنیم.

شما باید نامهای روبه روی این ماکروها را پاک کنید و به جای آن اسم تابع مورد نظر از کتابخانه lcd  خوددتان را به همراه پرانتز( باید به فرم تابع باشد) را اضافه نمایید .

این ماکروها رو در زیر توضیح میدم .

 

ماکروی touch_alcd_clear()   ( خط32)  :

 تابع پاک کردن صفحه نمایش را معرفی میکند .

 

ماکروی touch_get_lcd_width() ( خط 33):

تابعی که تعداد پیکسلهای عرض ( ستونها )  lcd  را برمیگرداند ،  را به کتابخانه معرفی میکند .

 

ماکروی touch_get_lcd_height()(خط34) :

تابعی که تعداد پیکسلهای ارتفاع ( سطرها)  lcd  را برمیگرداند ،  را به کتابخانه معرفی میکند .

 

توجه : در کتابخانه  lcd  که خودم ارئه کردم  از آنجا که قابلیت چرخش صفحه نمایش را دارد . توابعی که به دو ماکروی بالا معرفی شده اند ،

بر اساس زاویه چرخش lcd ، مقادیر متفاوتی را بر میگردانند.

اگر کتابخانLcd مورد استفاده شما ، قابلیت چرخش صفحه را ندارد ، به جای تابع ، تعداد پیکسلهای ارتفاع و عرض Lcd    را به ماکروهای بالا معرفی نمایید .

اما به خاطر داشته باشید درهنگام اجرای gui   دگمه چرخش را لمس نکنید.

 

ماکروی touch_draw_request_point(color,x1,y1,x2,y2) (خط37)    و touch_draw_accepted_point(color,x1,y1,x2,y2)(خط38)  :

 

توضیحات این 2 ماکرو شبیه هم هست .

زمانی که کالیبراسیون اجرا میشود ، کتابخانه یک نقطه را در Lcd  نمایش میدهد و از کاربر میخواهد که آن نقطه را لمس کند.

من  برای اینکار تابع رسم مسطیل توخالی را به ماکروی touch_draw_request_point معرفی کردم .

هنگامی که کاربر نقطه مورد نظر را لمس کرد کتابخانه دوباره آنرا با یک رنگ متفاوت نمایش میدهد .

من برای این حالت  تابع رسم مستطیل  تو پر را به ماکروی touch_draw_accepted_point معرفی کردم .

 

این 2 ماکرو متغییر هایی دارند که توضیح آنها به شرح زیر هست :

 Color :  کد رنگ

X1  = شمار ستون نفطه  گوشه بالا چپ مستطیل

Y1 :  شماره سطر نقطه گوشه بالا سمت چپ مستطیل

 

X2  = شمار ستون نفطه  گوشه پایین راست مستطیل

Y2 :  شماره سطر نقطه گوشه پایین راست مستطیل

 

هنگامی که تابع مورد نظر را به ماکرو معرفی میکنید نام این متغیر ها رو با توجه به نقش اونها ، در در جای مناسب در تابع قرار دهید به همراه پارامترهای اضافه ای که تابع خودتان ممکن است داشته باشد . ( مثلا  2 که در تابع روبه روی یکی از ماکروها آورده شده است .).

ماکروی TOUCH_REQUEST_POINT_COLOR(خط39 ) :

 رنگ نقطه مورد درخواست رو در هنگام کالیبراسیون به کتابخانه معرفی میکند و روبه روی آن میتوانید کد رنگ مورد نظر خودتانس را بنویسید .

 

ماکروی TOUCH_ACCEPTED_POINT_COLOR(خط40):

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

 

 

در قسمت gui هم از توابع مربوط به کتابخانه lcd  مانند رسم مستطیل ، نوشتن متن و غیره استفاده شده است . نحوه ی مختصات دهی توابع در قسمت gui  هم شبیه ماکروهاای بالا است .

یشنهاد میکنم ابتدا پروژه را کمپایل کنید  .  و سپس هر تابعی را که در قسمت gui  ناشناخته تشخیص داده شد را به صورت ماکرو ( دیفاین ) (شبیه کاری که در بالا توضیح دادم )  برای کمپایلر معرفی نمایید .

 

در فایل bottom_conf.h   ماکروهایی وجود دارد که کد رنگ دگمه های GUI  بوسیله آنها مشخص شده است .

در مقابل انها کدهای رنگ مورد نظر خودتان را بر طبق کتابخانه lcd  مورد استفاده  معرفی نمایید .

 

البته  میتوانید قسمت GUI را حذف کنید که در این صورت فقط قسمت کالیبراسیون اجرا خواهد شد .

 

اگر تمام مراحل بالا رو به درستی انجام داده باشید  پس موفق شدید کتابخانه lcd  خودتان را به کتابخانه  touch  متصل نمایید و تنظیمات لازم را انجام دهید .

 

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

 

امیدوارم توانسته باشید با استفاده از این مطالب کتابخانه   touch  را  راه اندازی کنید .

موفق و پیروز باشید .

 

 

لینک قسمت قبل

لینک قسمت بعد

 

 

 

پستهای مرتبط :

 

راهنمای استفاده کتابخانه  touch قسمت 1

 

لینک : قسمت معرفی کتابخانه

 

لینک : راهنمای استفاده از کتابخانه touch قسمت 2 ( راه اندازی)

لینک :راهنمای استفاده از کتابخانه touch قسمت 3 ( بخش اول – تنظیم پریفرالها)

 

با درود به تمای دوستان .

 

به اولین قسمت از راهنمای استفاده از کتابخانه  touch  خوش آمدید.

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

 

*********************************************************

 

در این قسمت توضیح خواهم داد که بعد از تهیه کتابخانه (  از اینجا   ):

1 -  چه پوشه هایی رو در یافت خواهید کرد .

2 -  پوشه ها به کدام قسمت کتابخانه مربوط میشوند .

3 – نام فایلها پسوند هایی داره که اون پسوند ها ( مثل _conf ,_name ,  _link , _typedef  و غیره ... )  هرکدام به چه معنایی هستند.

4- یک مقدار در مورد سیستم و  نحوه ی کارکرد کتابخانه ( یا در واقع نوع ارتباط پوشه ها )توضیح خواهم داد.

 

*********************************************************

*********************************************************

 

کتابخانه به صورت یک فایل با پسوند RAR در اختیار شما قرار خواهد گرفت .

بعد از  خارج کردن آن از حالت فشرده 2 پوشه خواهید دید .( تصویر زیر )

 

*********************************************************

پوشه example :

 

  یک مثال برای استفاده از کتابخانه تاچ است ( فیلمهایی که شما در قسمت معرفی مشاهده کردید مربوط به همین مثال هست )

پوشه touch_ver_1.0.0 :    این پوشه فایلها و فولدرهای کتابخانه رو در خودش جای داده است.

 

*********************************************************

*********************************************************

محتویات پوشه  touch_ver_1.0.0  :

 

در پوشه  touch_ver_1.0.0  شما 3 پوشه دیگر مشاهده خواهید کرد ( تصویر زیر )

*********************************************************

xpt2046_driver :

 

 این پوشه همانطور که از اسمش پیداست ، درایور و راه انداز  آی سی کنترلر تاچ هست وقابلیتهای آی سی کنترلر xpt2046( فارغ از بحث مربوط به تاچ) از طریق فایلهای این قسمت در اختیار کاربر قرار خواهد گرفت .

 که فایلهاش رو در تصویر زیر میبنید .

 

*********************************************************

 

touch_lib :

این پوشه شامل فایلهای اصلی کتابخانه تاچ هستند و کلیه امکانات تاچ مثل کالیبراسیون تاچ ، خواندن مختصات لمس شده  ، خواندن مقدار فشار و غیره...در این قسمت قرار دارد.

فایلهای این قسمت را در تصویر زیر میبینید.

*********************************************************

 

use_touch :

این قسمت از ضروریات کتابخانه نیست .

واگر کلا حذف بشه اختلالی در کارد کتابخانه به وجود نخواهد آمد .

این قسمت رو برای رفاه کاربران در هنگام استفاده و به طور خاص در هنگام راه اندازی کتابخانه ایجاد کردم .

برای راه اندازی کتابخانه نیاز هست یک متغیرهایی تعریف بشه و یکسری دستوراتی اجرا بشه .

من در این قسمت اون متغیرها رو تعریف کردم و اون مراحل رو به صورت توابعی ایجاد کردم .

پیشنهاد میکنم که این رو حذف نکنید و در صورت نیاز در اون تغیراتی به سلیقه خودتان ایجاد کنید .

فایلهای این قسمت رو در تصویر زیر میبینید .

 

*********************************************************

*********************************************************

 

محتویات پوشه example:

 

در پوشه example   همان پروژه ای قرار دارد که فیلم و تصاویر قسمت معرفی مربوط به اجرای این پروژه هستند .

این پروژه با نرم افزار  True Studio  ( که از کمپایلر GCC استفاده میکند وبرای محیط ویرایشگر آن از نرم افزار Eclips  استفاده شده است ) تولید شده است .

نرم افزار  cube IDE  هم از کمپایلر GCC استفاده میکند اما تا کنون تست نکردم که این پروژه قابل import  شدن در cube IDE  هست یا خیر .

در هر صورت فایلهای این مثال رو در تصویر زیر میبینید.

*********************************************************

فلش قرمز :

 

فایل  Cube MX  مربوط به این پروژه  رو قرار دادم تا شما برای اطلاع از کلیه تنظیمات سخت افزار ابهامی نداشته باشد.

 

*********************************************************

کادر نارنجی :

 

فایلهای کتابخانه هستند .

*********************************************************

کادر آبی :

 

فایل main.c  در این پوشه قرار دارد .

 

*********************************************************

 

کادر سبز :

 

فایل های مربوط به شبه GUI  مورد استفاده در این مثال ( شامل عملکرد نمایش دگمه ها  و واکنش به تاچ دگمه) در این پوشه قرار دارد .

 

*********************************************************

*********************************************************

 

3 – نام فایلها پسوند هایی داره که اون پسوند ها ( مثل _conf ,_name ,  _link , _typedef  و غیره ... )  هرکدام به چه معنایی هستند؟

 

برای این مورد لطفا به   (  اینجا  )  مراجعه کنید .

 

*********************************************************

*********************************************************

4-  توضیح  در مورد سیستم و  نحوه ی کارکرد کتابخانه ( یا در واقع نوع ارتباط پوشه ها) .

 

همانطور که در بالا توضیح دادم کتابخانه از 3 قسمت ( در قالب 3 پوشه ) تشکیل شده است .

این 3 قسمت یک ارتباطی با هم دارند که به شرح زیر هست .

 

به طور خلاصه : 

قسمت use_touch   از  touch_lib  استفاده میکند و touch_lib    از xpt2046_drive  برای ارتباط با کنترلر تاچ بهره میبرد .

 

و به طور دقیقتر:

*********************************************************

 

عملکرد xpt2046_drive  :

این قسمت از کتابخانه هیچ ربطی به موضوع تاچ ندارد . وکاملا مربوط به آی سی xpt2046    میشود .

این آی سی به طور خاص یک کنترلر برای تاچهای مقاومتی هست و روی بعضی از ماژولهای LCD  نصب شده است .

آما فرض کنید که شما این آی سی را از بازار تهیه کردید و میخواهید از قابلیتهای مبدل ADC آن ( بوسیله ADC مختصات تاچ را تشخیص میدهد) استفاده کنید .

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

 

*********************************************************

عملکرد touch_lib :

 

وقتی پای موجودی به اسم تاچ به پروژه شما باز میشه نیاز هست این قسمت به پروژه اضافه شود .

این بخش از کتابخانه برای فرمان دادن به آیسی کنترلر تاچ از قسمت xpt2046_drive  استفاده میکند و  در آن تمام قابلیتهای لازم برای کالیبره کردن تاچ ، دریات مختصات نقطه لمس شده ، چرخش نرم افزاری مختصات تاچ و غیره ....  قرار داده شده است .

و هیچ وابستگی به نوع آی سی کنترلر تاچ یا حتی کتابخانه آن ندارد .

یعنی در صورت نیاز میتوانید قسمت xpt2046  را حذف کنید و به جای آن  از یک کتابخانه مربوط به یک آی سی کنترلر دیگه  استفاده کنید .

اما چطور قسمت touch_lib متوجه میشه که از درایور جدید باید استفاده کنه ؟

 

پاسخ:

 

توابع مورد نیاز این بخش از طریق یک فایل با اضافه  _link  در قالب چند ماکرو  به این بخش touch_lib معرفی میشه .

در واق شما قادر خواهید بود کتابخانه مربوط به درایورهای مختلفی را به قسمت touch_lib  متصل کنید .

البته جزئیات بیشتر در این باره را در قسمتهای بعدی مربوط به راهنمای استفاده  ،  توضیح خواهم داد.

 

*********************************************************

عملکرد use_touch:

 

این بخش از قسمت touch_lib  استفاده میکند و برای استفاده آسان تر ازبخش touch_lib  طراحی شده است .

در حالت برای استفاده از قسمت قبل ( touch_lib  ) نیاز به تعریف متغیرهایی و اینیشال کردن قسمت درایور قبل از استفاده وجود دارد .

در این قسمت این متغیرها به شکل مناسب تعریف  و کارهای  لازم به صورت ماکروها و توابعی خلاصه سازی شده اند .

اتصال این قسمت به قسمت قبلی از طریق یک فایل با اضافه نام   _link انجام میشود .

 

 

*********************************************************

*********************************************************

 

 

در قسمتهای بعد ابتدا نحوه ی راه اندازی مثال همراه کتابخانه رو توضیح خواهم داد و بعد از اون به جزئیات مربوط به هر قسمت خواهم پرداخت .

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

 

مطالب مربوط به قسمت اول در اینجا به پایان رسید .

امیدوارم مورد توجه شما قرار گرفته باشد .

 

با سپاس.

 

لینک قسمت بعد

 

 

 

کتابخانه تاچ ( touch library  )مقاومتی با کنترلر xpt2046 برای stm32

با درورد به تمامی دوستان .

اگر مطالب وبلاگ را دنبال کرده باشید اطلاع دارید که قبلا یک یک کتابخانه درایور برای lcd 3.2 اینچ با کنترلر ili9341 نوشتم ( اینجا ) و این lcd مجهز به تاچ هم بود .

طبق معمول کتابخانه هایی که برای تاچ وجود داشت اصلا راضی کننده نبود و همچنین از بسیاری از قابلیتهای کنترلر تاچ پشتیبانی نمیکردند.

همین باغث شد که دست به کار بشم و کتابخانه ای با مشخصات قابل قبول برای تاچ و برای این کنترلر( xpt2046 ) بنویسم .

البته کتابخانه تاچ قابلیت اتصال به درایورهای دیگر را هم دارد . که در مطالب مربوط به راهنمای استفاده با جزئیات کامل توضیح داده خواهد شد.

این کتابخانه از 3 قسمت تشکیل شده است .

*******************

1- قسمت کتابخانه کنترلر ( xpt2046 ):

که از طریق توابعی کلیه قابلیتهای کنترلر xpt2046 را در اختیار کاربر قرار میدهد .

*******************

2 – قسمت تاچ :

که شامل توابعی است که قابلیتهای خواندن مخنصات تاچ ، فشار لمس ، کالیبراسیون ، چرخش مختصات تاچ و غیره ..... را در اختیار کاربر قرار میدهد.

*******************

3- قسمت user_touch :

که یک لایه روی قسمت تاچ است که برای رفاه کاربر در نظر گرفته شده است .

*************************************************************************

در ادامه قابلیتهای و مشخصات هر کدام از قسمتها توضیح داده خواهد شد.

*************************************************************************

*************************************************************************

مشخصات کتابخانه :

*****************************************

مشخصات کتابخانه کنترلر XPt2046:

1 – قابل اجرا روی میکروکنترلرهای stm32f1xx stm32f0xx stm32f4xx

2 - فرکانس کاری از کمتر از 10 مگاهرتز تا 180 مگاهرتز

2- کمپایلر GCC ( TrueStudio CubeIDE )

3 – زبان برنامه نویسی ( C99 ) زبان C

4- استفاده از spi سخت افزاری در مد 8 بیت برای ارتباط با تاچ( انعطاف لازم برای استفاده از spi نرم افزاری را نیز دارد اما توابع لازم باید توسط کاربر به درایور معرفی شود )

5- برنامه نویسی روالهای اصلی به صورت رجیستری وبدون نیاز به کتابخانه های جانبی ( پیکربندی پریفرالها به صورت رجیستری یا توابع هال یا spl یا غیره .... به انتخاب کاربر )

6 – امکان استفاده از تمام قابلیتهای موجود در آی سی xpt2046 :

در واقع بخش مربوط به درایور جدا از مبحث تاچ میباشد و اگر شما بخواهید از آی سی xpt2046 به طور مستقل استفاده کنید میتوانید از این کتابخانه استفاده نمایید .

*****************************************

مشخصات قسمت تاچ :

1

- زبان : c99 .

2- امکان اتصال درایورهای مشابه با xpt 2046 به قسمت تاچ.

3- امکان معرفی ابعاد lcd مورد استفاده به کتابخانه

4- وجود یک تابع که با اجرای آن مرحله کالیبراسیون اجرا خواهد شد.

5- امکان انتخاب تعداد نقاط برای کالیبراسیون ( تعیین نقاط به صورت تعداد در ستون و تعداد در سطر تنها محدودیت حافظه RAM میکروکنترلر و سایز LCD است)

در تصاویر زیرمثالهایی از کالیبراسیون 4 نقطه و 9 نقطه را میبینید.

کالیبراسیون 4 نقطه را در تصویر زیر میبینید.

تصویر کالیبراسیون 4 نقطه

و در تصویر زیر کالیبراسیون 9 نقطه نمایش داده شده است.

کالیبراسیون 9 نقطه

6- امکان نرمالیزه کردن تاچ نسبت به صفحه نمایش در هنگام کالیبراسیون به طور خودکار:

.( زمانی که نقطه (0.0) صفحه نمایش با نقطه (0و0) مربوط به تاچ منطبق نیست ). این قابلیت مبدا مختصات تاچ و lcd را به طور خودکار برهم منطلق میکند.منظبق بودن مختات تاچ با LCD مزایایی دارد که یکی از آنها این است که هر دگمه ای را که روی صفحه طراحی کنید . مختصات اون دگمه روی تاچ همان مختصاتی هست که روی lcd در نظر گرفتید و نیاز به استفاده از معادلات تبدیل نیست .

و یک مورد دیگه اینکه به راحتی میتونید تاچ و ال سی رو بچرخانید .!!

7- استفاده از روش MMSE برای کالیبراسون ( -Based Multipoint Calibration Algorithm for Touch Screen Applications) که دقت خیلی خوبی رو فراهم میکنه . مقاله مرتبط با این روش رو میتونید از اینجا دانلود کنید .

8- دارای تابعی برای خواندن فشار تماس ( تشخیص لمس بوسیله قلم یا انگشت )

9 – امکان راه اندازی روی lcd های مختلف به وسیله امکان معرفی توابع کتابخانه lcd به قسمت تاچ.

10 - امکان چرخش مختصات تاچ در حین اجرای برنامه .

*****************************************

نمایش قابلیتهای بالا را میتوانید در فیلم زیر ببینید.

لینک تماشای ویدئو باکیفیت خوب در آپارات

*****************************************

3 - - قسمت user_touch :

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

*************************************************************************

*************************************************************************

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

دانلود فایلهگز تست مربوط به کتابخانه تاچ با کنترلر xpt2046 برای میکروکنترلر stm32f103c8t6 ( بورد Blue Pill )

اطلاعات لازم در مورد LCD مورد استفاده در این فایل تست را میتوانید از اینجا به دست آورید.

اگر در راه اندازی فایل هگز تست دچار مشکل شدید لطفا از طریق کامنت یا در گروه تلگرام مطرح نمایید.

**************************************************************

**************************************************************

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

**************************************************************

قیمت کتابخانه touch برای stm32( f0xx ,f1xx ,f4xx): (180,000 تومان )

متعلقات همراه:

یک مثال شامل یک GUI ساده ( عملکردهای نمایش داده شده در ویدئو)که قابلیتهای کتابخانه تاچ را به نمایش گذاشته است .

توجه :

مثال موجود در اين کتابخانه فاقد کتابخانه اي براي LCD ميباشد .

لازم است که شما يا کتابخانه مربوط به LCD مورد استفاده در اين مثال را از اینجا تهيه کنید . يا يک کتابخانه LCD را به انتخاب خودتان به پروژه اضافه نماييد .

نحوه ی خرید با پرداخت مستقیم : برای خرید لطفا اینجا را ببینید

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

در صورت بروز هر گونه مشکل یا سوال در این باره لطفا با شماره 09169252500 تماس بر قرار کنید یا کامنت بگذارید.

برای اطلاع از اخبار جدید و موارد اصلاحی در مورد این کتابخانه خواهشمندم در کانال تلگرام وبلاگ به آدرسس: dastsazemanblogfa@

عضو شوید .

با سپاس.

پستهای مرتبط :

کتابخانه LCD 3.2 با درایور ili9341

کتابخانه lcd نوکیا 1661

نرم افزار تولید فونت برای میکرو کنترلر

مالکیت معنوی: لطفا کتابخانه را در اختیار دیگران قرار ندهید.

کلمات کلیدی : تاچ ، کتابخانه ، میکروکنترلر،xpt2046 , stm32 , touch

 
  BLOGFA.COM