ככה לא בונים חומרה

כזכור, אני מנסה ליצור עבור הארדואינו מודול זיכרון של 64 קילובייט משני ג'וקים של זיכרון סריאלי, בני 32 קילובייט כל אחד, וזאת באמצעות אותו מספר חיבורים שנדרש עבור ג'וק יחיד בפרוטוקול SPI בו הם עובדים.

בעיקרון, חיבור CS (בחירת ג'וק, או Chip Select) אמור להיות "גבוה" כל הזמן, ולרדת רק למשך פעולת קריאה או כתיבה. הגישה ל-32K נעשית באמצעות כתובות בנות 15 ביטים (32,768 כתובות שונות, מ-0 ועד 32,767), והרעיון שלי היה לנצל את הביט הנוסף בטיפוס הנתונים int (בן 16 הביטים) כדי לבחור לאיזה משני הג'וקים להוריד את ה-CS, וכך להשיג טווח כתובות גדול פי שניים. על הדרך ניסיתי גם לחסוך בחוט ולבצע פעולות קלט ופלט על אותו קו כביכול. זה לא עבד, אבל השאר כן והנה ההוכחה:

כפי שאפשר לראות בסרט, ניתן לכתוב ולקרוא מכתובות בטווח של 16 ביטים, והכתובות 32,676-32,678 הוצגו ספציפית כדי להוכיח שאכן הושגה הפרדה בין הג'וקים: אם לא היתה הפרדה כזו, הם היו מתייחסים לכתובת 32,768 ככתובת 0 בחמישה-עשר ביטים, והערך שהכנסתי קודם לכתובת 0 היה נדרס.

והנה המעגל עצמו. יצרתי אותו על Stripboard, מעין PCB אוניברסלי שבו כל החורים בטור נתון חולקים את אותו פס נחושת מוליך. זה מצריך פחות חיווט ובלגן מאשר PCB אוניברסלי "רגיל", בו כל חור הוא נפרד לגמרי. מצד שני, זה אומר שצריך לתכנן את המעגל מאד בזהירות, ופה ושם צריך לקטוע את פסי הנחושת. לזה יש מכשיר מיוחד, ואומרים שאפשר גם עם מקדח 3 מ"מ, אם כי לי זה לא עבד. אני השתמשתי בסכין יפנית, ואחרי כל קטיעה וידאתי עם מולטימטר שאין שום הולכה בין שני צדי הפס, אפילו בהתנגדות גבוהה מאד. מימין רואים את הצד האחורי של המעגל, עם הפסים, ההלחמות והקטיעות, ומשמאל הרכיבים עצמם והחוטים שמקשרים ביניהם.

Two 23K256 ICs in a Circuit

מודול זכרון 64 קילובייט, לא לבעלי לב חלש – לחצו להגדלהבתחתית המעגל שני פסי חיבורים. הימני הוא למתח – 3V ו-Ground – והשמאלי ל-SPI. חסר שם חיבור ל-Output, כי כאמור ניסיתי בהתחלה לאחד אותו עם ה-Input. החיבור נמצא גבוה יותר, קצת מתחת לג'וק השמאלי. שני הג'וקים הקטנים הם רכיבי הזיכרון מדגם 23K256, ואילו הגדול הוא ג'וק של שערי NOT. חיבור ה-CS פוצל: חלק אחד עבר כמו שהוא לג'וק השמאלי, והשני, דרך שער NOT, לג'וק הזיכרון הימני. הסיגנל עצמו נקבע על פי הביט ה-16 בכתובת. כדי למנוע מצב בו ה-CS של ג'וק מסוים נשאר נמוך לאורך זמן, התוכנה דואגת "לפרפר" אותו מדי פעם באופן אקראי.

אז אם הכל עובד, מה הקטע עם הכותרת של הפוסט? הקטע הוא שהמעגל הזה הוא נס רפואי. הג'וקים אמנם מקבלים מתח ראשי של 3V כנדרש, אבל הסיגנלים שנשלחים אליהם (CS, שעון וקלט) הם ב-5V הסטנדרטי של הפינים של הארדואינו, וזה הרבה מעבר למקסימום שמוגדר במפרט! לפי כל הגיון הג'וקים היו אמורים להישרף או להשתגע, והעובדה שזה טרם קרה היא אות כבוד לחברת Microchip שמייצרת אותם.

אף על פי כן, אני מתכוון לבנות מעגל חדש שיעבוד "לפי הספר". את הנמכת המתח לכניסות אבצע באמצעות דיודות (דיודה פשוטה בטור מפילה כ-0.7 וולט), ולמרות כל האזהרות והסימנים, אולי אנסה שוב לצמצם את חוטי הקלט/פלט לאחד באמצעות דיודות ממוקמות היטב… המשך יבוא!

להרשמה
הודע לי על
0 Comments
Inline Feedbacks
הראה את כל התגובות