كيف يمكنني التواصل عبر USB باستخدام Microcontroller LPC1788؟

StackOverflow https://stackoverflow.com//questions/23011390

  •  21-12-2019
  •  | 
  •  

سؤال

أنا أعمل مع متحكم NXP LPC1788 في الوقت الحالي، وأنا أحاول تكوينه للتواصل مع جهاز كمبيوتر يعمل بنظام Windows 7 باستخدام USB. لدي خبرة محدودة مع USB (بدأت تعلم البروتوكول في بداية هذا الأسبوع)، لكنني عملت مع LPC1788 لبعض الوقت ولديك خبرة مع بروتوكولات الاتصال الأخرى (CAN، I2C، SSP).

أريد تكوين microcontroller الخاص بي للعمل كجهاز وعمل كمبيوتر يعمل كمضيف. أشاهد أنني سأحتاج إلى تكوين ميكروكنترولر للتواصل باستخدام تحويلات المقاطعة كاملة السرعة. بالإضافة إلى ذلك، من المحتمل أن أحتاج إلى إنشاء برنامج تشغيل USB خاص بائع البائع الخاص بي لجهاز الكمبيوتر لاحقا - لم أفعل ذلك بعد، ولم يتم تكوين واصفاتي بشكل صحيح.

مشكلتي المحددة هي أنه عندما أقوم بتشغيل البرنامج الخاص بي وبنية / تمكين جهاز USB الخاص بالكمبيوتر المتحكم، أتلقى عرضين USB فقط. حالة مقاطعة الجهاز (Devintst) قيم في كل حالة:

giveacodicetagpre.

في حالة تلقي مقاطعة devstat، قرأت القيمة التالية من محرك الواجهة التسلسلية باستخدام أمر الحصول على حالة الجهاز:

giveacodicetagpre.

باستخدام UslyZer، أحصل على الحزم الأربعة التالية فقط: rel="nofollow"> http://i.imgur.com/wrk7rbv .png .

أتوقع أنه حتى دون تكوين الواصفات أو برنامج تشغيل مطابق بشكل صحيح، يجب أن أتلقى أكثر من هذا. كنت أتوقع أن أتلقى طلب واصف الحصول على نقطة النهاية 0.

وظيفتي الرئيسية تهيئة جهاز USB فقط وحلقاتها إلى أجل غير مسمى.

برمجية إبعاد USB أدناه:

giveacodicetagpre.

وظيفة إعادة تعيين USB:

giveacodicetagpre.

وظيفة عنوان مجموعة USB:

giveacodicetagpre.

وظيفة اتصال مجموعة USB:

giveacodicetagpre.

روتين خدمة مقاطعة USB:

giveacodicetagpre.

إخراج المحطة:

giveacodicetagpre.

تحرير: باستخدام أمر رمز الخطأ SIE الخاص ب SIE، وجدت أنني في نهاية المطاف مع خطأ "حزمة غير متوقعة" بحلول نهاية وظيفة تهيئة USB. ومع ذلك، إذا قرأت تسجيل الاختبار، فأنا أعود 0xa50f كما هو متوقع، مما يعني أن اتصالاتي مع SIE يعمل ويتم تكوين ساعات USB / AHB الخاصة بي بشكل صحيح وتشغيلها.

هل كانت مفيدة؟

المحلول

تمكنت من الحصول على مثال مشروع USB يعمل في Workbench مضمن.بناء على ذلك، قمت بإجراء تغييرتين ثابتتين في الغالب برنامجي:

  • قمت بتغيير تكوين مشروعي من "swhhosted" إلى "SWO" التي جعلت مخرجات الطباعة أسرع بكثير.

  • قمت بإزالة السطر التالي.يبدو أنه من الواضح أن معدل ساعة USB.

    giveacodicetagpre

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top