เป็นวิธีที่ดีสำหรับ mcu เพื่อตรวจสอบว่ารุ่นฮาร์ดแวร์ใดที่ทำงานอยู่?


13

ฉันทำงานเกี่ยวกับการออกแบบผลิตภัณฑ์ใหม่และอาจจะมีการเปลี่ยนแปลง / แก้ไขฮาร์ดแวร์เล็กหรือใหญ่ตลอดอายุของผลิตภัณฑ์ สำหรับการอัพเดตเฟิร์มแวร์ในอนาคตฉันต้องการวิธีการตรวจสอบการแก้ไขฮาร์ดแวร์ กลยุทธ์ที่ดีคืออะไร?

ฉันกำลังดึงพินสำรองสองตัวขึ้น / ลงด้วยตัวต้านทานภายนอกและตรวจสอบรูปแบบ สิ่งนี้อนุญาตสำหรับการแก้ไขฮาร์ดแวร์ 4 ครั้งเท่านั้น แต่อาจเพียงพอสำหรับการใช้งานจริง มันอาจกลายเป็นปัญหาถ้าฉันต้องการพินเหล่านี้หนึ่งอันหรือทั้งสองอย่างในการแก้ไขฮาร์ดแวร์ในอนาคต

ฉันคิดว่าวิธีที่ประหยัดกว่าอาจจะมีตัวต้านทานตัวต้านทานเชื่อมต่อกับขา ADC การแก้ไขฮาร์ดแวร์แต่ละครั้งอาจมีตัวต้านทานค่าที่แตกต่างกัน น่าเสียดายที่ฉันไม่มี ADC สำรองในการออกแบบปัจจุบันของฉัน

ฉันเดาวิธีอื่นสามารถเข้ารหัสหมายเลขรุ่นฮาร์ดแวร์ใน EEPROM หรือแฟลช mcu ในระหว่างการผลิต? (เราไม่มีสิ่งอำนวยความสะดวกนั้นในขณะนี้)

ฉันเดาว่าฉันกำลังมองหาคำแนะนำสำหรับวิธีการที่ยืดหยุ่นและแข็งแกร่ง

[แก้ไข]

เรื่อง ข้อเสนอแนะจาก @ trav1s: ฉันไม่มีบัสแอดเดรสต่อ se แต่ฉันมี 24LCxx EEPROM บนบัส I2C Slave Address 3 บิตต่ำนั้นใช้งานได้ยาก ฉันเดาว่าฉันสามารถเปลี่ยนบิตที่อยู่และค้นหา EEPROM ในระหว่างการเริ่มต้น

คำตอบ:


7

นี่คือสิ่งที่ฉันจัดการอย่างต่อเนื่อง เรามีฮาร์ดแวร์ที่ซับซ้อนมากซึ่งอยู่ในสนามมาเกือบ 10 ปีโดยมีระบบย่อยหลายรุ่น ระบบย่อยบางระบบมีรหัส 2 บิต แต่อย่างที่คุณพูดถึงนั่นไม่เพียงพอเสมอไป

คำแนะนำ EEPROM เป็นสิ่งที่ดี แต่ต้องมีการเขียนโปรแกรม EEPROM และเติมข้อมูลบอร์ดให้ถูกต้อง

สิ่งที่ฉันอยากจะแนะนำคือการลงทะเบียน shift-in-serial out แบบอนุกรมขนาน 8 บิตเช่น 74HC166 หมายเลขเวอร์ชั่นสามารถตั้งค่าที่อินพุตได้โดยบอร์ด PC นั้นจะทำการป้อนอินพุตหรือสูงจากนั้นคุณจะต้องใช้ 3 พินในการโหลดและอ่าน shift shift จาก MCU


ฉันชอบเวอร์ชั่น hw ที่เดินสายบนกระดานด้วยวิธีนี้ฉันต้องการเพียงเฟิร์มแวร์เวอร์ชั่นเดียวเท่านั้นและฉันไม่จำเป็นต้องจัดการ EEPROM ที่มีโปรแกรมไว้ล่วงหน้า ดูเหมือนว่าสามารถลงทะเบียน shift ได้ประมาณ USD 0.1 และก็โอเค
มอร์เทน

2
คุณสามารถใช้ตัวขยายพอร์ต I2C ที่ห้อยอยู่กับบัส I2C ของคุณ แม้ว่ามันอาจจะแพงกว่านิดหน่อย
alex.forencich

8

ฉันจะไม่ใช้หมายเลขรุ่นที่ตั้งโปรแกรมไว้ในไมโครคอนโทรลเลอร์ นอกจากว่าซอฟต์แวร์จะแตกต่างกันสำหรับบอร์ดรุ่นต่าง ๆ แต่จากนั้นเวอร์ชันบอร์ดดูเหมือนจะไม่สำคัญสำหรับฉัน มีซอฟต์แวร์ไมโครคอนโทรลเลอร์ให้น้อยที่สุดเท่าที่จะเป็นไปได้ แต่ละเวอร์ชันที่แตกต่างกันอาจทำให้เกิดปัญหาการขนส่ง

รหัส EEPROM เป็นความคิดที่ดีเพราะจะช่วยให้มีรหัสบอร์ดที่แตกต่างกันมากมาย แต่นำออกมาจากไมโครคอนโทรลเลอร์ในอุปกรณ์แยกต่างหาก EEPROM มีราคาแพงสำหรับความจุขนาดใหญ่ (ราคาแพงกว่าต่อบิตมากกว่า Flash) แต่สำหรับไม่กี่ไบต์คุณสามารถหาได้ในราคาถูก อันนี้เป็นเพียง 16 เซ็นต์ใน 100 และต้องการเพียง 1 I / O บรรทัด

วิธีการลดโอกาสที่จะเกิดข้อผิดพลาดคือมีแพ็คเกจที่แตกต่างกันสำหรับบอร์ดแต่ละเวอร์ชั่น ดังนั้นให้มีชุดของ EEPROM ที่ตั้งโปรแกรมด้วยหมายเลขรุ่น 1 ใน SOT-23, รุ่นถัดไป 2 ใน MSOP เป็นต้นจากนั้นคุณจะไม่สามารถมีรุ่นที่ 1 EEPROM บนกระดานเวอร์ชัน 2


ขอบคุณ. นี่อาจเป็นคำถามที่งี่เง่า แต่ฉันจะได้รับชุดโปรแกรม EEPROM ที่ตั้งโปรแกรมไว้ก่อนที่จะวางลงบนกระดานได้อย่างไร ฉันไม่มีเครื่องมือในการถอด EEPROMS ออกจากเทปเขียนโปรแกรมใส่กลับเข้าไปในเทปแล้วส่งเทปไปยังแอสเซมเบลอร์ PCB
มอร์เทน

@morten - ผู้จำหน่ายของคุณสามารถทำเพื่อคุณ คุณส่งไฟล์ของคุณ (หนึ่งไบต์ :-)) แล้วคุณจะได้ชิ้นส่วนที่ตั้งโปรแกรมไว้ด้านหลังทำเครื่องหมายด้วยเครื่องหมายที่คุณต้องการ ราคาจะขึ้นอยู่กับขนาดแบทช์ คุณจะมีค่าใช้จ่ายคงที่ + ค่าใช้จ่ายต่อชิ้นส่วน เราเคยคำนวณถ้ามันจะไม่ถูกกว่าที่จะเขียนโปรแกรมตัวเอง แต่ในกรณีใด ๆ สำหรับพันมันไม่คุ้มค่า
stevenvh

4

ทางเลือกหนึ่งที่จะใช้พินดิจิตอลเพียงสองตัวเท่านั้นคือ:

แผนภูมิวงจรรวม

โดยการเปลี่ยนค่า R1 และ C1 คุณสามารถมีเวลาในการชาร์จที่แตกต่างกันสำหรับตัวเก็บประจุที่คุณสามารถวัดเพื่อกำหนดรุ่นของฮาร์ดแวร์


Aha, ทางออกที่ฉลาด :-)
morten

2

หากมีที่ว่างที่ไม่ได้ใช้งานในบัสแอดเดรสคุณสามารถทำการลงทะเบียน ROM บนบัสซึ่ง MCU สามารถอ่านได้ การลงทะเบียนจะมีหมายเลขรุ่นของฮาร์ดแวร์ เมื่อ MCU อ่านจากแอดเดรสนั้นรีจิสเตอร์จะเขียนค่าลงในบัสข้อมูล การลงทะเบียนอาจจะเดินสายบนกระดานหรือถ้าคุณต้องการที่จะสามารถเปลี่ยนหมายเลขรุ่นด้วยมือเปล่าของคุณคุณสามารถสร้างหมุดที่สามารถผูกขึ้น / ลงเหมือนที่คุณกำลังทำอยู่ตอนนี้


บางทีฉันอาจใช้ที่อยู่ของ EEPROM เอง ... ดูการแก้ไขคำถาม
มอร์เทน

ตกลง. ไม่ทราบว่ามีบัส I2C บางทีคุณอาจสร้างทาส I2C ขนาดเล็กซึ่งอ่านหมายเลขเวอร์ชันกลับคืนเมื่อ MCU อ่านจากมัน
travisbartley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.