חיישנים · זמן אמת

יחידת חיישן IMU בקצב 2kHz

כרטיס מבוסס STM32G0 שקורא חיישן תנועה מדויק ומזרים את הנתונים למחשב הניווט 2000 פעמים בשנייה, בלי לאבד אף מדידה.

הרקע

מחשב הניווט של המערכת צריך נתוני תנועה מדויקים בקצב קבוע וגבוה. הנתונים מגיעים מחיישן IMU מדויק של Analog Devices (ADIS16465), שמתחבר לכרטיס ייעודי.

האתגר

ב-2000 הרץ יש לכל מחזור 500 מיקרו-שניות: לקרוא את החיישן, לבנות הודעה עם בדיקת CRC ולשדר אותה. כל עיכוב שובר את הקצב. בנוסף, בשלב הרמת הכרטיס החיישן לא הגיב בכלל.

מה בנינו

  • שרשרת DMA: פסיקת "נתון מוכן" מהחיישן מפעילה קריאת SPI ב-DMA, ובסיומה מתחיל שידור ב-DMA. כל השלבים באותה עדיפות, ולכן לא נדרשים קטעי קוד קריטיים.
  • פרוטוקול: הודעה של 84 בתים בפורמט שהלקוח הגדיר, עם CRC-16.
  • איתור תקלות: שתי בעיות שנראו זהות מצד הקוד. הגדרות SPI שגויות כברירת מחדל, ומחבר שחווט הפוך בגלל שרטוט בדאטה-שיט שמציג את הרכיב במבט מלמטה.

התוצאה

הזרמה יציבה של 2000 הודעות בשנייה, בעומס של כ-84% על הערוץ, בלי אף הודעה שאבדה.

יש פרויקט על השולחן?

פגישת היכרות של 30 דקות, ללא עלות וללא התחייבות.

קבעו פגישת היכרות