نظرة سريعة على CST816S
البند | القيمة | المصدر |
|---|---|---|
عنوان I2C (7 بت) | | Espressif esp_lcd_touch_cst816s؛ مثال شجرة الأجهزة (device-tree) في لينكس |
نقاط اللمس | 1 (إصبع واحد) | تعريف Espressif وملف README الخاص به |
بيانات اللمس | تبدأ عند | تعريف hynitron-cst816x في لينكس |
سجل معرّف الشريحة | | تعريف Espressif |
التوافق مع لينكس | | ربط شجرة الأجهزة في لينكس |
قراءة لمسة
يقرأ تعريف لينكس 6 بايتات من السجل 0x01:
السجل | المحتوى |
|---|---|
| رمز الإيماءة |
| عدد الأصابع (0 أو 1) |
| X بترتيب البايتات من الأكبر إلى الأصغر (big-endian)، البتات الـ12 الأدنى |
| Y بترتيب البايتات من الأكبر إلى الأصغر (big-endian)، البتات الـ12 الأدنى |
رموز الإيماءات التي يعالجها تعريف لينكس: 0x01 سحب لأعلى، 0x02 سحب لأسفل، 0x03 سحب لليسار، 0x04 سحب لليمين، 0x0C ضغط مطوّل.
لا يستجيب CST816S إلا بعد لمسه
يحذّر ملف README من Espressif من أن الشريحة "تستجيب لأوامر I2C فقط بعد حدوث حدث، مثل اكتشاف لمسة. لا تتوقع أنها ستستجيب عند التهيئة." لهذا السبب، غالبًا ما لا يجد ماسح I2C عند الإقلاع أي شيء على العنوان 0x15، ولهذا أيضًا يتضمن ESPHome خيار skip_probe الذي يتخطى قراءة معرّف الشريحة عند بدء التشغيل. ويضيف Espressif أن قراءة المعرّف على بعض الشرائح قد تتسبب في فشل التهيئة. المس الشاشة أثناء الفحص، أو تخطَّ التحقق من المعرّف.
إعادة الضبط والمقاطعة
- يُفعّل تعريف لينكس خط إعادة الضبط لمدة 50 ms ثم يحرره وينتظر 100 ms. أما تعريف Espressif فينتظر 200 ms في كل خطوة.
- خط INT اختياري في تعريف Espressif (حيث يمكنه الاستقصاء). أما تعريف لينكس فيطلب مقاطعة ويفشل في الاكتشاف بدونها.
اللمسات الوهمية (الشبحية)
نشر أحد المطوّرين sketch اختباري يُظهر أن CST816D على لوحة Waveshare ESP32-S3-Touch-LCD-2 يبلّغ عن لمسات لم يقم بها أحد، ومعظمها على امتداد الخط المركزي الرأسي، وذلك على لوحتين وباستخدام كود العرض التوضيحي الخاص بـ Waveshare نفسه. لم يتم تأكيد أي إصلاح حتى الآن. إذا لاحظت لمسات وهمية، شغّل أولًا العرض التوضيحي من الشركة المصنّعة للتمييز بين المشكلة في العتاد أو في كودك، ثم تحقّق من تغذية اللوحة والتأريض قبل البدء بترشيح اللمسات برمجيًا.
مت controllers ذات الصلة
يسرد مكوّن cst816 في ESPHome الأنواع CST716 وCST816D وCST816S وCST816T وCST820 وCST826 وCST836. بالنسبة إلى لوحات اللمس المتعدد المقاس 4″–7″ راجع GT911؛ وللشاشات الدائرية مقاس 1.28″ راجع دليلنا الخاص بـ GC9A01 + ESP32.
الأدلة والمقارنات
حل المشكلات والأسئلة الشائعة لـ CST816S
لماذا لا يتم اكتشاف CST816S على ناقل I2C؟
لا يستجيب CST816S لناقل I2C إلا بعد وقوع حدث مثل لمسة، لذا فإن الفحص (scan) عند الإقلاع لا يجد عادةً أي شيء على العنوان 0x15. المس الشاشة أثناء الفحص، وحرّر خط الإعادة (reset) أولًا، وفي ESPHome اضبط skip_probe: true. وتشير Espressif إلى أن قراءة المعرّف (ID) على بعض الشرائح قد يتسبب في فشل التهيئة.
هل يدعم CST816S اللمس المتعدد؟
لا. يُبلِغ عن إصبع واحد فقط؛ إذ يحدّ برنامج التشغيل من Espressif عدد النقاط عند 1. لكنه يُبلغ عن الإيماءات: التمرير لأعلى ولأسفل وليمينًا ويسارًا، والضغط المطوّل. وللمس المتعدد استخدم وحدة تحكم من فئة GT911.
لماذا يُبلغ جهاز CST816 عن لمسات وهمية (ghost touches)؟
يُظهر تقرير عام واحد أن شريحة CST816D على لوحة Waveshare ESP32-S3-Touch-LCD-2 تُبلغ عن لمسات على طول الخط العمودي الأوسط حتى مع الكود التجريبي الخاص بالمصنّع نفسه، ولم يتم تأكيد أي إصلاح حتى الآن. شغّل العرض التجريبي للمصنّع لاستبعاد وجود خلل في كودك، ثم تحقق من التغذية الكهربائية والتأريض قبل اللجوء إلى تصفية اللمسات برمجيًا.
المصادر
- Espressif ESP-BSP: برنامج التشغيل esp_lcd_touch_cst816s
- Espressif ESP-BSP: ملف README لبرنامج التشغيل esp_lcd_touch_cst816s
- نواة Linux: drivers/input/touchscreen/hynitron-cst816x.c
- نواة Linux: ربط شجرة الأجهزة hynitron,cst816x
- ESPHome: شاشة اللمس CST816
- seanuleh: سكتش اختبار اللمسات الوهمية للوحة Waveshare ESP32-S3-Touch-LCD-2 (CST816D)