فرق تسد ، أو تكتب ببطء - اقرأ بسرعة


في أحد مشاريعي ، كانت هناك حاجة للتسجيل المتسلسل لمجموعات البيانات الرقمية من 3 قنوات من ADC. يجب تخزين نتائج القياس بسرعة 6 كيلوبايت / ثانية ، بينما يمكن أن تكون مدة دورة جمع البيانات يومًا أو أكثر. وبالتالي ، كان إجمالي كمية المعلومات التي يلزم تخزينها 500 ميغابايت أو أكثر. كجهاز تخزين ، فقد تقرر اختيار بطاقة SD.


كانت المهمة معقدة بسبب حقيقة أن ميزات تصميم الجهاز الذي تم إنشاؤه لم تسمح باستخراج بطاقة لقراءة البيانات. لم يكن لدى وحدة التحكم XMega128A4U ، التي تم تنفيذ المهمة عليها في ذلك الوقت ، دعم أجهزة SDIO ، لكن سمح لها بالعمل مع البطاقة عبر واجهة SPI ، التي كان من الممكن تمامًا كتابة النطاق الترددي فيها بالسرعة المطلوبة ، ولكن قراءة كمية من البيانات في الكمبيوتر عبر سلسلة بطاقة SD -> تحكم -> كان محول USB-Com كئيبًا إلى حد ما واستغرق وقتًا طويلاً.


بعد تفكير (ومحاولات فاشلة لرفع تردد التشغيل قليلاً عن الحزمة المذكورة أعلاه) ، تقرر استخدام وحدة تحكم قارئ بطاقة SD ، تم اختيار شريحة GL823 التي تدعم USB 2.0. الآن كان من الضروري توفير وصول منفصل إلى بطاقة SD من وحدة التحكم عن طريق SPI أثناء جمع البيانات ومن الكمبيوتر عبر SDIO ، عبر GL823 أثناء القراءة عالية السرعة. تم تنفيذ هذا الفصل باستخدام اثنين من 2X1 4 قنوات المضاعفات.



يتم توصيل خطوط التبديل بين U2 و U3 مع البادئة "STM" بوحدة التحكم ، ويتم توصيل الأسطر التي تحتوي على البادئة "SD" ببطاقة SD. للسيطرة على الدائرة ، يتم استخدام إشارات SD2MCU ، وتبديل بطاقة SD بين MCU و GL823 و GL823_PWR ، وتحويل الطاقة GL823 من خلال mosfet .


في البداية ، نظرت إلى هذا النهج كنوع من "عكاز" ، ولكن ، لدهشتي الكبيرة ، اتضح أنه كان عملي للغاية بالنسبة لي وأكدته ممارسة تشغيل الجهاز بنجاح لعدة سنوات.


علاوة على ذلك ، في التطورات التالية المستندة إلى STM32F407 ، والتي لديها دعم SDIO للوصول إلى البطاقة ، وإمكانية رفع USB 2.0 HS MSD (على الرغم من واجهة ULPI الموازية) ، فإن إمكانية استخدام حل GL823 يعتمد على الناقل .


باستخدام حزمة STM32F407 مع PHY USB3300 خارجي ، كان من الممكن تحقيق سرعة قراءة بطاقة تبلغ حوالي Mbit / s 41 ، بينما عند استخدام قارئ بطاقة الأجهزة ، تصل السرعة إلى ~ 150 ميجابت / ثانية ، وكل الأشياء الأخرى متساوية. تم إجراء قياسات من خلال قراءة ملف 128 ميجابايت من بطاقة SD تم تنسيقها في FAT32. كلا النهجين لهما فروق دقيقة في الاستخدام ، لكن يبدو لي أن كليهما لهما "حق في الحياة". بالنسبة للفروق الدقيقة: في حالتي ، عند التكرار التالي لتطوير هذا الجهاز ، يجب وضع الجهاز على لوحة بعرض 26 مم.


تخطيط PCB لـ LQFP100 لحالة STM32F407 في هذه الحالة صعب إلى حد ما ، ولكن موقع "الأخ الأصغر" STM32F405 في علبة LQFP64. لكن STM32F405 يفتقر إلى ULPI ، وبالتالي فإن USB 2.0 HS غير متاح له ، ويفقد تطبيق MSD FS الكثير في سرعة قراءة البيانات من البطاقة. باستخدام نفس الحل الموضح أعلاه ، يمكنك الحصول على سرعة كافية للوصول إلى SD من الكمبيوتر أثناء قراءة البيانات من الجهاز.


سأكون سعيدًا إذا كانت تجربتي مفيدة لشخص ما.


Source: https://habr.com/ru/post/ar440308/


All Articles