การเข้ารหัสรุ่นหรือการกำหนดค่าบน PCB


10

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

ตัวเลือกใดบ้างที่เป็นไปได้และอะไรคือข้อดี / ข้อเสีย?


1
นอกจากนี้ยังมีคำถามจากหลังคำตอบคล้ายกับคำตอบที่ได้รับ (ซึ่งเป็นสิ่งที่ดี!): electronics.stackexchange.com/questions/41757/…
awjlogan

คำตอบ:


14

วิธีแก้ปัญหาง่ายๆสองอย่างที่อยู่ในหัวของฉัน

  1. มีnเส้นติดอยู่กับ GPIO ของไมโครคอนโทรลเลอร์ของคุณ ผูกสูงหรือต่ำเหล่านี้ขึ้นอยู่กับรุ่นกระดานของคุณ นี่จะให้ตัวเลือกการกำหนดค่าบอร์ดนี่จะใช้nหมุดบนไมโครคอนโทรลเลอร์ของคุณ การจับสลากปัจจุบันคงไม่มีความสำคัญ2n
  2. มีอินพุตของ ADC ของไมโครคอนโทรลเลอร์และใช้ตัวแบ่งแรงดันไฟฟ้าที่มีค่าต่างกันขึ้นอยู่กับการกำหนดค่าของบอร์ด นี่จะใช้ไมโครคอนโทรลเลอร์พินตัวเดียวเท่านั้น สิ่งนี้มีข้อเสียที่จะมีการจับกระแสไฟฟ้าสถิตย์ผ่านตัวแบ่ง นอกจากนี้ยังมีแนวโน้มที่จะเกิดข้อผิดพลาด BOM ในขณะที่ข้อเสนอแนะแรกยากที่จะเชื่อมต่อกับบอร์ด

คำแนะนำทั้งสองนี้มีจุดอ่อนที่ผู้ใช้สามารถเปลี่ยนแปลงได้ง่ายกล่าวเพื่อเปิดคุณสมบัติ "ล็อค" นี่อาจไม่ใช่สิ่งที่คุณกังวล แต่เป็นสิ่งที่ควรคำนึงถึง


1
นอกจากนี้ยังมีการรวมกันของ [1] และ [2] คุณสามารถใช้ไมโครคอนโทรลเลอร์หนึ่งพินสำหรับ ADC แต่ใช้ส่วนประกอบค่าเดียวกันที่เชื่อมต่อแบบขนานเพื่อสร้างตัวแบ่งแรงดันไฟฟ้า ตัวอย่างเช่นคุณสามารถมีตัวต้านทาน 10k สี่ตัวสร้าง 10k / float (pull to vcc), float / 10k (pull to gnd), 10k / 10k (vcc / 2), 5k / 10k (2/3 of vcc), 10k / 5k (1/3 ของ vcc) ดังนั้นในระยะสั้น: หนึ่งบรรทัดใน BOM เพียงปริมาณที่แตกต่างและหนึ่งอินพุต ADC ที่จำเป็น นอกจากนี้ยังช่วยให้มองเห็น
โสกราตีส

2
คุณสามารถกำจัดการจับกระแสคงที่ของโซลูชัน ADC หากคุณสามารถสำรองพินที่สอง: แทนตัวแบ่งแรงดันไฟฟ้าระหว่าง VCC และ GND ให้แทนที่ VCC หรือ GND ด้วยพินที่สองคุณต้องอ่านการกำหนดค่าบอร์ดเพียงครั้งเดียว เมื่อเริ่มต้นโปรแกรมให้ตั้งค่าพินสูง / ต่ำตามที่ต้องการเพื่อเปิดใช้งานตัวแบ่งแรงดันไฟฟ้าทำการวัด ADC จากนั้นสลับขาเพื่อให้ปลายทั้งสองของตัวแบ่งแรงดันไฟฟ้ามีศักยภาพเท่ากันและไม่มีกระแสไฟฟ้าไหล
Aleksi Torhamo

1
รุ่น GPIO ยังมีแนวโน้มที่จะเกิดข้อผิดพลาด BOM เพราะโดยทั่วไปแล้วสิ่งนี้จะถูกกำหนดค่าด้วยการเชื่อมโยงศูนย์โอห์ม คุณสามารถทำมันในแผนผังและรูปแบบ แต่ที่มีราคาแพงกว่า (เวลารูปแบบค่าใช้จ่าย )
เกรแฮม

1
นั่นคือสิ่งที่เราได้ใช้กับผลิตภัณฑ์ที่ฉันใช้งานอยู่ในปัจจุบัน คุณต้องระวังความทนทานของตัวต้านทาน หากตัวต้านทานสองตัวของคุณมีความทนทาน 1% แรงดันอาจสูงถึง 2% ดังนั้นอย่างมากคุณจะได้ 50 ขั้นตอนที่สามารถแก้ไขได้ ในทางปฏิบัติมันปลอดภัยกว่าที่จะลดลงครึ่งหนึ่ง ดังนั้นหากคุณมีตัวต้านทาน 1% และช่วง 5V บน ADC ของคุณคุณต้องการให้รายงานเวอร์ชันในขั้นตอน 0.2V
เกรแฮม

9

ฉันใช้ shift shift กับหมุดผูกสูงและต่ำเพื่อเข้ารหัสการปรับปรุงบอร์ดก่อนหน้านี้ถ้าคุณใช้ SPI สำหรับบางสิ่งบางอย่างบนบอร์ดของคุณมันไม่สำคัญที่จะอ่าน

หากคุณต้องการที่จะสามารถเปลี่ยน ID ในขณะใช้งานได้การใช้จัมเปอร์แทนที่จะคาดว่าอินพุตที่มีการติดตามจะเป็นความคิดที่ดี


ฉันกำลังค้นหา IC หมายเลขซีเรียลที่ไม่ซ้ำกันของ googling แต่นี่เป็นทางเลือกที่ชาญฉลาด โดยเฉพาะอย่างยิ่งถ้าคุณรวมเข้ากับ IO แผ่ลวดเดียว
Jeroen3

7

ตัวเลือกบางอย่างที่ฉันคิดได้: -

ลิงค์ PADS / O OHM ของ SMD ใช้ระบบไบนารีสำหรับการกำหนดค่าฮาร์ดแวร์เพื่อลดจำนวนพินสำหรับโปรเซสเซอร์ของคุณ

จัมเปอร์ บอร์ดจะเชื่อมต่อพิน 2xN เพิ่มจัมเปอร์ไปที่พินด้านขวาจะให้คุณเลือกการกำหนดค่าของคุณ ข้อผิดพลาดง่ายต่อการแก้ไข อาจมีค่าใช้จ่ายเล็กน้อยและใช้พื้นที่บอร์ดเพิ่มขึ้นตามจัมเปอร์

หากคุณมี EEPROM บนบอร์ดอาจเป็นไปได้ที่คุณจะฝังการกำหนดค่าลงในหน่วยความจำ

เป็นไปได้ไหมที่คุณจะเปลี่ยนเฟิร์มแวร์ด้วย #define หรือคล้ายกัน? จากนั้นคุณไม่จำเป็นต้องมีพื้นที่บอร์ดและหมุดพิเศษสำหรับการตรวจจับเวอร์ชัน


1

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

ข้อดีอื่น ๆ รวมถึงคุณสมบัติที่มีประโยชน์เช่นรับประกันหมายเลขซีเรียลที่ไม่ซ้ำกัน

ตัวเลือกนี้ใช้ในหลาย ๆ ระบบเช่นโพรบออสซิลโลสโคปและแบตเตอรี่เนื่องจากต้องการเพียงสายข้อมูลเดียว EEPROM สามารถใช้พลังงานจากสายดาต้าเองได้

ข้อเสียเปรียบหลักคือต้นทุน ราคาไม่สูง แต่สำหรับผลิตภัณฑ์ที่ผลิตเป็นจำนวนมากมีค่าใช้จ่ายไม่กี่เซ็นต์

ตัวอย่างของ EEPROM เช่นนั้นคือ DS2431 ซึ่งเก็บ 1kb

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