RGB LED מטריצות עם STM32 ו- DMA


לפני כמה שנים, [Frans-willem] gotten כמה לוחות LED RGB. עשר 32 × 16 פאנלים הם הרבה נוריות, וכדי לנהוג כל לוחות אלה דורש כמה חומרה חזקה מספיק. הוא ניסה לעבוד עם לוח פיתוח FPGA, אבל זה לא היה מספיק זיכרון עבור 24 סיביות צבע. את microcontroller du jour – ti stellaris – לא יכול לקבל הרבה יותר מ 16 פיסות של צבע ללא מהבהב. עם חבורה של נוריות אבל לא דרך להסיע אותם, [פרנס-וילם] לשים את הלוחות בתיבה איפשהו, מחכה ליום שבו הם יכולים לשמש את מלוא יכולתם.

היום הגיע כאשר [פרנס-וילם] הוכנס לסדרת השבבים של ה – STM32 עם לוח גילוי F1. בעת שניסה למצוא כמה playthings אלקטרוניים להשתמש עם הלוח הזה, הוא stumbled על לוחות LED ונתנה להם אחד הרבה יותר לנסות. התוצאות הן מרהיבות, עם 33 פיסות של צבע, עם אנימציות הזרמו על נתב מעל WiFi.

לוחות המדוברים הם HUB75 לוחות LED. ב 32 × 8 פאנלים, ישנם שישה סיכות נתונים – שני כל אחד עבור כל צבע – ארבע סיכות נבחרות שורה, ושלושה סיכות שליטה. השורה בחר סיכות בחר באיזה שורה של פיקסלים פעילה בכל פעם אחת. מחזור דרכם מהר מספיק, וזה ייראה כאילו הם נמצאים בבת אחת. סיכות הבקרה לעבוד די הרבה כמו פינים שליטה של ​​מרשם Shift, עם סיכות נתונים מילוי בתפקיד המתבטא.

הקוד כי למעשה כונני את LEDs כל קורה על STM32F4 בעזרת DMA ו FSMC, או בקר גמיש זיכרון סטטי נמצא על השבב. היקפי זה דואג קווי הבקרה שנמצאו בזיכרון, לכן כאשר אתה מחליף את סטרוב הכתיבה השבב יהיה dump מה הוא על קווי הנתונים לכתובת מסוימת בזיכרון. זוהי דרך מצוינת לטפל בהפקת אות שעון.

עבור שליחת פיקסלים לנהג לתצוגה זה, [Frans-willem] משתמש WR703N הפופולרי של TP-FOR. הוא תכנן במקור לשלוח את כל נתוני הפיקסלים על יציאת ה- USB, אבל היה יותר מדי תקורה, USB 1.1 אינו מהיר מספיק. זה היה קבוע באמצעות UART על הנתב עם נהג חדש וגירסה repomiled של OpenWrt.

כל התוכנה לשכפל פרויקט זה זמין על Github, ויש וידאו נהדר המציג את הפרויקט הושלם יכול לעשות. אתה יכול לבדוק את זה למטה.

Leave a Reply

Your email address will not be published. Required fields are marked *