ไม่กี่ปีที่ผ่านมาฉันคุ้นเคยกับไมโครคอนโทรลเลอร์ของรัสเซียจาก Milandr ในปี 2013 เมื่อวิศวกรอภิปรายอย่างจริงจังเกี่ยวกับผลลัพธ์แรกของโครงการเป้าหมายของรัฐบาลกลาง "การพัฒนาฐานชิ้นส่วนอิเล็กทรอนิกส์และอุปกรณ์อิเล็กทรอนิกส์วิทยุ" สำหรับปี 2008-2015 ในเวลานั้น คอนโทรลเลอร์ K1986BE9x (คอร์ Cortex-M3) ได้เปิดตัวแล้ว และคอนโทรลเลอร์ 1986BE1T (คอร์ Cortex-M1) เพิ่งเปิดตัว ในกล่องพลาสติก LQFP-144 มีการกำหนด K1986BE1QI (การบิน) ในเอกสารประกอบ และการกำหนด MDR32F1QI บนตัวชิป บนเว็บไซต์ของผู้ผลิต มีคำต่อท้ายว่า "อากาศ" เนื่องจากมีอินเทอร์เฟซเฉพาะสำหรับอุตสาหกรรมอากาศยาน (ARINC 429, MIL_STD_1553)
น่าแปลกที่ในช่วงเวลาของการแจกจ่ายคอนโทรลเลอร์เหล่านี้ บริษัท Milander ได้เตรียมชุดตรวจแก้จุดบกพร่องและไลบรารีของรูทีนย่อยสำหรับการทำงานกับอุปกรณ์ต่อพ่วง "แต่ไม่มีการรับประกันและข้อผูกมัดเพิ่มเติมใดๆ เกี่ยวกับความถูกต้องของไลบรารี" ไลบรารีนี้คล้ายกับ Standard Peripheral Library จาก STMicroelectronics โดยทั่วไปแล้ว คอนโทรลเลอร์ ARM ทั้งหมดที่สร้างบนแกน Cortex-M มีหลายอย่างที่เหมือนกัน ด้วยเหตุนี้ความคุ้นเคยกับตัวควบคุมใหม่ของรัสเซียจึงดำเนินไปอย่างรวดเร็ว และสำหรับผู้ที่ซื้อชุดแก้ไขจุดบกพร่องที่เป็นกรรมสิทธิ์ จะมีการสนับสนุนด้านเทคนิคระหว่างการใช้งาน
ชุดตรวจแก้จุดบกพร่องสำหรับไมโครคอนโทรลเลอร์ 1986BE1T, © Milandr
อย่างไรก็ตามเมื่อเวลาผ่านไป "โรคในวัยเด็ก" ของชิปและไลบรารีใหม่เริ่มปรากฏขึ้น ตัวอย่างการทดสอบของเฟิร์มแวร์ทำงานโดยไม่มีปัญหาที่มองเห็นได้ แต่ด้วยการแก้ไขที่ล้มเหลวและข้อผิดพลาดที่ลดลงอย่างมาก "กลืน" ครั้งแรกในการปฏิบัติของฉันคือความล้มเหลวที่อธิบายไม่ได้ในตัวควบคุม CAN หนึ่งปีต่อมา พบปัญหากับโมดูลในตัวควบคุม 1986BE1T (อากาศ) ของการแก้ไขก่อนหน้า
คุณลักษณะที่ไม่พึงประสงค์คือจำเป็นต้องทำงานและจัดการกับข้อผิดพลาดที่ไม่ได้อยู่บนกระดานดีบั๊ก แต่อยู่บนกระดานของอุปกรณ์ต้นแบบที่วางแผนไว้สำหรับการผลิตในโรงงานแบบอนุกรม นอกจากตัวเชื่อมต่อ JTAG แล้ว มักจะไม่มีอะไรอยู่ที่นั่น การเชื่อมต่อกับเครื่องวิเคราะห์ลอจิกเป็นเรื่องยากและไม่สะดวก และมักจะไม่มีไฟ LED และหน้าจอ ด้วยเหตุนี้เอง ความคิดที่จะสร้าง debug board ของตัวเองจึงปรากฏขึ้นในหัวของฉัน
ในแง่หนึ่ง มีชุดดีบักที่มีตราสินค้าอยู่ในตลาด รวมถึงบอร์ดที่ยอดเยี่ยมจาก LDM-Systems จาก Zelenograd ในทางกลับกัน ราคาของผลิตภัณฑ์เหล่านี้ทำให้คนมึนงง และฟังก์ชันพื้นฐานที่ไม่มีการ์ดเอ็กซ์แพนชันไม่เป็นไปตามความคาดหวัง บอร์ดที่มีคอนโทรลเลอร์บัดกรีและพินเฮดเดอร์นั้นไม่น่าสนใจสำหรับฉัน และบอร์ดที่น่าสนใจมีราคาแพง
บอร์ดพัฒนา MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems
บริษัท "Milandr" มีนโยบายการกำหนดราคาและการตลาดที่ไม่เหมือนใคร ดังนั้นจึงเป็นไปได้ที่จะได้รับตัวอย่างของไมโครเซอร์กิตฟรี แต่มีให้เฉพาะนิติบุคคลเท่านั้นและเกี่ยวข้องกับภารกิจของข้าราชการ โดยทั่วไปแล้ว ไมโครเซอร์กิตในแพ็คเกจโลหะเซรามิกจะมีสีทองทั้งในแง่ตัวอักษรและเชิงอุปมาอุปไมย ตัวอย่างเช่นคอนโทรลเลอร์ 1986BE1T มีค่าใช้จ่ายในมอสโกตั้งแต่ 14 ถึง 24 รูเบิล ชิปหน่วยความจำแบบคงที่ 1645RU6U มีราคาตั้งแต่ 15000 รูเบิล และนี่คือลำดับของราคาสำหรับผลิตภัณฑ์ทั้งหมด เป็นผลให้แม้แต่สถาบันวิจัยเฉพาะทางที่มีคำสั่งของรัฐก็ประหยัดเงินและหลีกเลี่ยงราคาดังกล่าว ชิปในกล่องพลาสติกสำหรับการใช้งานพลเรือนมีราคาถูกกว่ามาก แต่ไม่มีจำหน่ายจากซัพพลายเออร์ยอดนิยม นอกจากนี้สำหรับฉันแล้วคุณภาพของชิปในกล่องพลาสติกนั้นแย่กว่า "ทอง" ตัวอย่างเช่น ฉันไม่สามารถเรียกใช้คอนโทรลเลอร์ K1986BE1QI ที่ 128MHz โดยไม่เพิ่มการตั้งค่าเวลาแฝงแฟลช ในเวลาเดียวกัน อุณหภูมิของตัวควบคุมนี้เพิ่มขึ้นเป็น 40-50C แต่คอนโทรลเลอร์ 1986BE1T ("ทอง") เริ่มต้นที่ 128 MHz โดยไม่มีการตั้งค่าเพิ่มเติมและยังคงเย็นอยู่ เขาเป็นคนที่ดีจริงๆ
ไมโครคอนโทรลเลอร์ "Gold" 1986BE1T, (c) Milandr
ฉันโชคดีที่ไมโครคอนโทรลเลอร์ในกล่องพลาสติกยังหาซื้อได้ที่ร้านค้าปลีกจาก LDM Systems และแผงวงจรทั้งหมดมีให้ฟรี สิ่งที่ไม่ดีคือบนเว็บไซต์บนรูปภาพของคอนโทรลเลอร์มีเครื่องหมายที่ระบุว่านี่คือการแก้ไขครั้งที่ 4 ของปี 2014 เช่น มีข้อบกพร่อง ฉันคิดอยู่นานว่าจะซื้อหรือไม่ซื้อ หลายปีผ่านไป...
แนวคิดในการสร้างบอร์ดแก้ไขข้อบกพร่องไม่ได้หายไปไหน ฉันสร้างข้อกำหนดทั้งหมดทีละน้อยและคิดว่าจะวางทั้งหมดนี้ไว้บนกระดานเดียวได้อย่างไรเพื่อให้มีขนาดกะทัดรัดและไม่แพง ฉันสั่งส่วนประกอบที่ขาดหายไปจากชาวจีน ฉันไม่รีบร้อน - ฉันทำทุกอย่างเพื่อตัวเอง ซัพพลายเออร์ชาวจีนขึ้นชื่อเรื่องความสะเพร่า ฉันต้องสั่งสิ่งเดียวกันจากที่ต่างๆ เพื่อให้ได้ทุกสิ่งที่ต้องการ ยิ่งไปกว่านั้นชิปหน่วยความจำบางส่วนกลายเป็นของมือสอง - เห็นได้ชัดว่าบัดกรีจากอุปกรณ์ที่เสียหาย สิ่งนี้กระทบฉันในภายหลัง
การซื้อไมโครคอนโทรลเลอร์ Milandr K1986BE1QI (การบิน) ไม่ใช่เรื่องง่าย ในร้าน Chip and Dip เดียวกันในส่วน "ตำแหน่งที่จะสั่งซื้อ" ฉันพบ K1986BE92QI เพียง 740 รูเบิล แต่มันไม่เหมาะกับฉัน ทางเลือกเดียวคือซื้อการแก้ไขที่ไม่ใหม่จากระบบ LDM ในราคา 2000 รูเบิล เนื่องจากฉันไม่สามารถหาสิ่งทดแทนได้จากที่อื่น ฉันจึงตัดสินใจซื้อสิ่งที่มีอยู่ ด้วยความประหลาดใจที่น่ายินดี พวกเขาขายคอนโทรลเลอร์รุ่นใหม่ล่าสุดในเดือนธันวาคม 2018 รุ่นปรับปรุง 6+ (1820) ให้ฉัน และไซต์ยังมีรูปถ่ายเก่าอยู่และในขณะที่เขียนตัวควบคุมไม่พร้อมใช้งาน ...
ไมโครคอนโทรลเลอร์ K1986BE1QI (การบิน) ในบรรจุภัณฑ์เทคโนโลยี (c) ภาพถ่ายโดยผู้เขียน
ข้อกำหนดทางเทคนิคหลักของบอร์ดพัฒนาของฉัน เอ็มดีบี1986 ต่อไปนี้:
- ดีบักเกอร์โปรแกรมเมอร์ในตัวเข้ากันได้กับ J-Link และ CMSIS-DAP;
- หน่วยความจำคงที่ 4Mbit (256k x 16, 10 ns);
- ชิปหน่วยความจำแฟลช 64Mbit, Winbond 25Q64FVSIG;
- ตัวรับส่งสัญญาณอินเตอร์เฟส RS-232 พร้อมสาย RTS และ CTS
- อินเทอร์เฟซและตัวเชื่อมต่อสำหรับ Ethernet, USB, CAN;
- ตัวควบคุมการแสดงผล 7 ส่วน MAX7221;
- ขั้วต่อพินสำหรับทำงานกับ MCIO (MIL_STD_1553) และ ARINC429
- โฟโต้ทรานซิสเตอร์ Everlight PT17-21C;
- ไฟ LED ห้าสี ปุ่มรีเซ็ตและปุ่มผู้ใช้สองปุ่ม
- ใช้พลังงานจากพอร์ต USB 5 โวลต์
- ขนาดแผ่นวงจรพิมพ์ 100 x 80 มม
ฉันชอบบอร์ดของซีรีส์ STM-Discovery เพราะมี ST-Link โปรแกรมเมอร์ดีบักเกอร์ในตัว ST-Link ที่เป็นกรรมสิทธิ์เฉพาะใช้งานได้กับคอนโทรลเลอร์ STMicroelectronics เท่านั้น แต่เมื่อสองสามปีที่ผ่านมา มันเป็นไปได้ที่จะอัปเดตเฟิร์มแวร์ใน ST-Link และรับ SEGGER J-Link OB (on-board) Debugger ตามกฎหมายแล้ว มีข้อจำกัดในการใช้ดีบักเกอร์ดังกล่าวกับบอร์ด STMicroelectronics เท่านั้น แต่ในความเป็นจริงแล้ว ศักยภาพไม่ได้ถูกจำกัด ดังนั้น เมื่อมี J-Link OB คุณสามารถมีโปรแกรมเมอร์-ดีบักเกอร์ในตัวบนบอร์ดดีบั๊กได้ ฉันทราบว่าผลิตภัณฑ์ระบบ LDM ใช้ตัวแปลง CP2102 (Usb2Uart) ซึ่งสามารถแฟลชได้เท่านั้น
ไมโครคอนโทรลเลอร์ STM32F103C8T6 จริงและไม่เป็นเช่นนั้น (c) ภาพถ่ายโดยผู้เขียน
ดังนั้นจึงจำเป็นต้องซื้อ STM32F103C8T6 ดั้งเดิม เนื่องจากเฟิร์มแวร์ของแบรนด์จะทำงานไม่ถูกต้องกับโคลน ฉันสงสัยวิทยานิพนธ์นี้และตัดสินใจลองใช้คอนโทรลเลอร์ CS32F103C8T6 จาก CKS บริษัทจีน ฉันไม่มีข้อตำหนิเกี่ยวกับคอนโทรลเลอร์ แต่เฟิร์มแวร์ ST-Link ที่เป็นกรรมสิทธิ์ใช้งานไม่ได้ J-Link ทำงานบางส่วน - ตรวจพบอุปกรณ์ USB แต่โปรแกรมเมอร์ไม่ทำงานและเตือนตลอดเวลาว่า "มีข้อบกพร่อง"
เกิดข้อผิดพลาดเมื่อรันดีบักเกอร์บนคอนโทรลเลอร์ที่ไม่ใช่ของแท้
ฉันไม่ได้ใจเย็นกับเรื่องนี้และเขียนเฟิร์มแวร์สำหรับการกะพริบ LED ก่อนจากนั้นจึงดำเนินการคำขอ IDCODE โดยใช้โปรโตคอล JTAG โปรแกรมเมอร์ ST-Link ที่ฉันมีบนบอร์ด Discovery และโปรแกรม ST-Link Utility แฟลช CS32F103C8T6 โดยไม่มีปัญหา ด้วยเหตุนี้ ฉันจึงแน่ใจว่าบอร์ดของฉันใช้งานได้ เพื่อความสุขของฉัน ผู้ควบคุมเป้าหมาย K1986BE1QI (การบิน) ออก IDCODE ของตนอย่างร่าเริงผ่านบรรทัด TDO
ออสซิลโลแกรมของสายสัญญาณ TDO พร้อมการตอบสนองที่เข้ารหัส IDCODE (c) ภาพถ่ายโดยผู้เขียน
ดังนั้นพอร์ต SWD จึงมีประโยชน์สำหรับการดีบักตัวดีบั๊กและตรวจสอบ IDCODE
มีตัวเลือกพร้อมดีบักเกอร์
การดำเนินการดีบักเกอร์ในตัว J-Link STLink V2 สำเร็จ
เมื่อมีองค์ประกอบหลักทั้งหมดของบอร์ดดีบักในอนาคต ฉันเข้าไปใน Eagle CAD และพบว่าองค์ประกอบเหล่านั้นไม่ได้อยู่ในคลังองค์ประกอบ ไม่มีที่ไป - ฉันต้องวาดมันเอง ในเวลาเดียวกัน ฉันสร้างที่นั่งสำหรับหน่วยความจำ ตัวเชื่อมต่อ HanRun สำหรับอีเทอร์เน็ต และเพิ่มเฟรมสำหรับตัวต้านทานและตัวเก็บประจุ สามารถพบไฟล์โครงการและไลบรารีคอมโพเนนต์
แผนผังของบอร์ดดีบัก MDB1986
บอร์ดนี้ใช้พลังงานจากแหล่งจ่ายไฟ DC 5 โวลต์จากพอร์ต USB มีพอร์ต USB Type-B สองพอร์ตบนบอร์ด อันแรกสำหรับโปรแกรมเมอร์ อันที่สองสำหรับคอนโทรลเลอร์ K1986BE1QI บอร์ดสามารถทำงานได้จากแหล่งเหล่านี้หรือทั้งสองอย่างพร้อมกัน การปรับโหลดที่ง่ายที่สุดและการป้องกันสายไฟถูกนำมาใช้กับไดโอด Schottky ในวงจร D2 และ D3 (SS24) นอกจากนี้ในแผนภาพ คุณสามารถดูฟิวส์ที่คืนตัวเองได้เอง F1 และ F2 ที่ 500mA สายสัญญาณของพอร์ต USB ได้รับการป้องกันโดยชุดไดโอด USBLC6-2SC6
หลายคนรู้จักวงจรดีบักเกอร์โปรแกรมเมอร์ ST-Link ซึ่งสามารถพบได้ในเอกสารประกอบสำหรับบอร์ด STM32-Discovery และแหล่งข้อมูลอื่นๆ สำหรับเฟิร์มแวร์หลักของโคลน ST-Link / J-Link-OB / DAP (ทางเลือก) ฉันได้นำบรรทัด SWDIO (PA13), SWCLK (PA14), GND ออกมา หลายคนใช้ UART สำหรับเฟิร์มแวร์และถูกบังคับให้ดึงจัมเปอร์ BOOT แต่ SWD สะดวกกว่าสำหรับฉัน นอกจากโปรโตคอลนี้จะอนุญาตให้แก้ไขข้อบกพร่องแล้ว
ส่วนประกอบเกือบทั้งหมดของบอร์ดใช้พลังงาน 3.3 โวลต์ซึ่งมาจากตัวควบคุมแรงดันไฟฟ้า AMS1117-3.3 เพื่อลดสัญญาณรบกวนทางแม่เหล็กไฟฟ้าและกระแสไฟกระชาก จึงใช้ตัวกรอง LC จากตัวเก็บประจุและโช้กของซีรีส์ BLM31PG
แยกกัน ควรกล่าวถึงไดรเวอร์การแสดงผล MAX7 7221-segment ตามข้อกำหนด แหล่งจ่ายไฟที่แนะนำคือตั้งแต่ 4 ถึง 5.5 โวลต์ และระดับสัญญาณสูง (ลอจิกหนึ่ง) ไม่น้อยกว่า 3.5V (0.7 x VCC) เมื่อขับเคลื่อนด้วย 5V สำหรับคอนโทรลเลอร์ K1986BE1QI (การบิน) เอาต์พุตของหน่วยลอจิคัลจะสอดคล้องกับแรงดันไฟฟ้าตั้งแต่ 2.8 ถึง 3.3V เห็นได้ชัดว่ามีระดับสัญญาณที่ไม่ตรงกันซึ่งสามารถรบกวนการทำงานปกติได้ ฉันตัดสินใจจ่ายไฟ MAX7221 จาก 4V และลดระดับสัญญาณเป็น 2.8V (0.7 x 4 = 2.8) เมื่อต้องการทำเช่นนี้ ไดโอด D4 (RS1A หรือ FR103) ได้รับการติดตั้งเป็นอนุกรมในวงจรกำลังขับ แรงดันไฟตกทั้งหมดคือ 0.9V (ไดโอด Schottky 0.3V และไดโอด 0.6V) และทุกอย่างทำงานได้
พอร์ตส่วนใหญ่บนไมโครคอนโทรลเลอร์ K1986BE1QI (การบิน) เข้ากันได้กับสัญญาณสูงสุด 5V ดังนั้นการใช้ตัวรับส่งสัญญาณ MCP2551 CAN ซึ่งทำงานจาก 5V จึงไม่ก่อให้เกิดปัญหา แผนภาพแสดงชิป MAX232 เป็นตัวรับส่งสัญญาณ RS-3232 แต่ที่จริงฉันใช้ SN65C3232D จาก Texas Instruments เนื่องจาก มันทำงานจาก 3.3V และให้ความเร็วสูงสุด 1Mbit/s
มีตัวสะท้อนควอตซ์ 4 ตัวบนบอร์ด - หนึ่งตัวสำหรับดีบักเกอร์ (8 MHz) และสามตัวสำหรับไมโครคอนโทรลเลอร์เป้าหมาย K1986BE1QI (การบิน) ที่มีค่าเล็กน้อย 32.768 kHz, 16 MHz, 25 MHz เหล่านี้เป็นองค์ประกอบที่จำเป็นเพราะ พารามิเตอร์ของเครื่องกำเนิด RC ในตัวอยู่ในช่วงกว้างตั้งแต่ 6 ถึง 10 MHz ต้องใช้ความถี่ 25 MHz สำหรับการทำงานของตัวควบคุมอีเทอร์เน็ตในตัว ด้วยเหตุผลบางประการ เว็บไซต์ของ Milandra (อาจผิดพลาด) ระบุว่าไม่มีอีเทอร์เน็ตในกล่องพลาสติก แต่เราจะขึ้นอยู่กับข้อกำหนดและข้อเท็จจริง
สิ่งจูงใจที่สำคัญสำหรับการสร้างบอร์ดดีบักของคุณเองคือโอกาสในการทำงานร่วมกับบัสระบบ EBC (ตัวควบคุมบัสภายนอก) ภายนอก ซึ่งโดยพื้นฐานแล้วเป็นพอร์ตขนาน ไมโครคอนโทรลเลอร์ K1986BE1QI (การบิน) ช่วยให้คุณสามารถเชื่อมต่อและทำงานร่วมกับชิปหน่วยความจำภายนอกและอุปกรณ์ต่อพ่วง เช่น ADC, FPGA เป็นต้น ความเป็นไปได้ของบัสระบบภายนอกนั้นค่อนข้างใหญ่ - คุณสามารถทำงานกับ RAM, ROM และ NAND Flash แบบ 8 บิต, 16 บิตและ 32 บิต สำหรับการอ่าน / เขียนข้อมูล 32 บิต คอนโทรลเลอร์สามารถดำเนินการที่สอดคล้องกัน 2 รายการโดยอัตโนมัติสำหรับไมโครเซอร์กิต 16 บิต และ 8 การดำเนินการสำหรับวงจร 4 บิต เห็นได้ชัดว่า การดำเนินการ I/O แบบ 32 บิตจะเร็วที่สุดเมื่อใช้บัสข้อมูลแบบ 32 บิต ข้อเสียรวมถึงความจำเป็นที่โปรแกรมต้องทำงานกับข้อมูล 32 บิตและบอร์ดจะต้องวาง 32 แทร็ก
ใช้ชิป SRAM (เดาว่าอันไหนเสีย)
วิธีแก้ปัญหาที่สมดุลคือการใช้ชิปหน่วยความจำ 16 บิต ฉันลงเอยด้วยชิป Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16x256k, 10ns, 3.3V) แน่นอน บริษัท "Milandr" มีชิปหน่วยความจำแบบคงที่ของตัวเอง
บัสภายนอกและโหมดสแตนด์อโลนไมโครคอนโทรลเลอร์ K1986BE1QI (การบิน) มีโหมดสแตนด์อโลนที่ไม่เหมือนใคร ซึ่งออกแบบมาสำหรับการเข้าถึงโดยตรงจากภายนอกไปยังอีเทอร์เน็ตและคอนโทรลเลอร์ MCIO (MIL_STD_1553) ผ่านบัสภายนอก ในขณะที่คอร์อยู่ในสถานะรีเซ็ต เช่น ไม่ได้ใช้. โหมดนี้มีประโยชน์สำหรับโปรเซสเซอร์และ FPGA ที่ไม่มีอีเทอร์เน็ตและ/หรือ MCIO
แผนภาพการเชื่อมต่อมีดังนี้:
- ดาต้าบัส MCU(D0-D15) => SRAM(I/O0-I/O15),
- แอดเดรสบัส MCU(A1-A18) => SRAM(A0-A17),
- การควบคุม MCU (nWR,nRD,PortC2) => SRAM (WE,OE,CE),
- SRAM(UB,LB) เชื่อมต่อหรือดึงลงกราวด์ผ่านตัวต้านทาน
สาย CE ถูกดึงขึ้นเพื่อจ่ายไฟผ่านตัวต้านทาน ไม่ได้ใช้พินการดึงข้อมูลไบต์ของ MCU (BE0-BE3) ใต้สปอยเลอร์ฉันให้รหัสสำหรับการเริ่มต้นพอร์ตและตัวควบคุมบัสภายนอก
การเริ่มต้นพอร์ตและตัวควบคุม EBC (ตัวควบคุมบัสภายนอก)
void SRAM_Init (void)
{
EBC_InitTypeDef EBC_InitStruct = { 0 };
EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 };
PORT_InitTypeDef initStruct = { 0 };
RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE);
PORT_StructInit (&initStruct);
//--------------------------------------------//
// DATA PA0..PA15 (D0..D15) //
//--------------------------------------------//
initStruct.PORT_MODE = PORT_MODE_DIGITAL;
initStruct.PORT_PD_SHM = PORT_PD_SHM_ON;
initStruct.PORT_SPEED = PORT_SPEED_FAST;
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_All;
PORT_Init (MDR_PORTA, &initStruct);
//--------------------------------------------//
// Address PF3-PF15 (A0..A12), A0 - not used. //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_4 | PORT_Pin_5 |
PORT_Pin_6 | PORT_Pin_7 |
PORT_Pin_8 | PORT_Pin_9 |
PORT_Pin_10 | PORT_Pin_11 |
PORT_Pin_12 | PORT_Pin_13 |
PORT_Pin_14 | PORT_Pin_15;
PORT_Init (MDR_PORTF, &initStruct);
//--------------------------------------------//
// Address PD3..PD0 (A13..A16) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_OVERRID;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1 |
PORT_Pin_2 | PORT_Pin_3;
PORT_Init (MDR_PORTD, &initStruct);
//--------------------------------------------//
// Address PE3, PE4 (A17, A18) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_ALTER;
initStruct.PORT_Pin = PORT_Pin_3 | PORT_Pin_4;
PORT_Init (MDR_PORTE, &initStruct);
//--------------------------------------------//
// Control PC0,PC1 (nWE,nOE) //
//--------------------------------------------//
initStruct.PORT_FUNC = PORT_FUNC_MAIN;
initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Control PC2 (nCE) //
//--------------------------------------------//
initStruct.PORT_PD = PORT_PD_DRIVER;
initStruct.PORT_OE = PORT_OE_OUT;
initStruct.PORT_FUNC = PORT_FUNC_PORT;
initStruct.PORT_Pin = MDB_SRAM_CE;
PORT_Init (MDR_PORTC, &initStruct);
//--------------------------------------------//
// Initialize EBC controler //
//--------------------------------------------//
EBC_DeInit();
EBC_StructInit(&EBC_InitStruct);
EBC_InitStruct.EBC_Mode = EBC_MODE_RAM;
EBC_InitStruct.EBC_WaitState = EBC_WAIT_STATE_3HCLK;
EBC_InitStruct.EBC_DataAlignment = EBC_EBC_DATA_ALIGNMENT_16;
EBC_Init(&EBC_InitStruct);
EBC_MemRegionStructInit(&EBC_MemRegionInitStruct);
EBC_MemRegionInitStruct.WS_Active = 2;
EBC_MemRegionInitStruct.WS_Setup = EBC_WS_SETUP_CYCLE_1HCLK;
EBC_MemRegionInitStruct.WS_Hold = EBC_WS_HOLD_CYCLE_1HCLK;
EBC_MemRegionInitStruct.Enable_Tune = ENABLE;
EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000);
EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE);
// Turn ON RAM (nCE)
PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE);
}
ไมโครคอนโทรลเลอร์ในแพ็คเกจ LQFP-144 และหน่วยความจำในแพ็คเกจ TSOP-44 มีพินเชื่อมต่อจำนวนมากและใช้พื้นที่ PCB มาก ด้วยประสบการณ์ในการแก้ปัญหาการเพิ่มประสิทธิภาพในด้านเศรษฐศาสตร์ เห็นได้ชัดว่าควรวางไมโครเซอร์กิตเหล่านี้ไว้บนกระดานตั้งแต่แรก ในแหล่งต่าง ๆ ฉันพบบทวิจารณ์ที่น่ายกย่องเกี่ยวกับ
การพิมพ์สกรีนเป็นองค์ประกอบสำคัญของแผงวงจรพิมพ์ บนบอร์ดดีบั๊ก ไม่เพียงแต่ต้องมีลายเซ็นสำหรับชิ้นส่วนอิเล็กทรอนิกส์เท่านั้น แต่ต้องมีการเซ็นชื่อตัวเชื่อมต่อทั้งหมดด้วย ที่ด้านหลังของบอร์ด ฉันวางตัวเตือนตารางพร้อมฟังก์ชันของพอร์ตคอนโทรลเลอร์ (หลัก, ทางเลือก, ลบล้าง, จริง) ฉันสั่งผลิตแผงวงจรพิมพ์ในประเทศจีนที่สำนักงาน PCBWay ที่มีชื่อเสียง ฉันจะไม่สรรเสริญเพราะคุณภาพดี พวกเขาสามารถทำได้ดีกว่าด้วยความคลาดเคลื่อนที่น้อยลง แต่
ผลิตแผงวงจรพิมพ์ MDB1986, (c) ภาพถ่ายโดยผู้เขียน
ฉันต้องแกะส่วนประกอบ "ที่หัวเข่า" ด้วยหัวแร้ง 40 วัตต์และหัวแร้ง POS-61 เพราะฉันไม่ค่อยบัดกรี 1-2 ครั้งต่อปี และหัวแร้งบัดกรีก็แห้ง ฉันยังต้องเปลี่ยนคอนโทรลเลอร์ CS32F103 ภาษาจีนเป็น STM32F103 ดั้งเดิม จากนั้นเปลี่ยนหน่วยความจำด้วย โดยทั่วไปแล้ว ตอนนี้ฉันพอใจกับผลลัพธ์อย่างสมบูรณ์ แม้ว่าฉันจะยังไม่ได้ตรวจสอบการทำงานของ RS-232 และ CAN
บอร์ดดีบั๊ก MDB1986 กำลังทำงาน — ส่องสว่างและอุ่นขึ้น (с) ภาพถ่ายโดยผู้เขียน
บนเว็บไซต์ "Milandra" คุณสามารถค้นหาได้เพียงพอ
คิดถึงมิลินทราไมโครอิเล็กทรอนิกส์ในรัสเซียกำลังพัฒนาและ บริษัท "Milandr" มีบทบาทสำคัญในกระบวนการนี้ ไมโครคอนโทรลเลอร์ใหม่ที่น่าสนใจปรากฏขึ้นเช่น 1986BE81T และ Elektrosila พร้อมอินเทอร์เฟซ SpaceWire และ MKIO (เหมือนกับในปี 1986BE1 และอาจมีปัญหาเดียวกัน) เป็นต้น แต่สำหรับนักเรียนทั่วไป ครู และวิศวกรโยธา การซื้อไมโครเซอร์กิตดังกล่าวนั้นไม่ใช่เรื่องจริง ซึ่งหมายความว่าชุมชนวิศวกรรมจะไม่สามารถระบุข้อผิดพลาดและปัญหาของชิปนี้ได้อย่างรวดเร็ว สำหรับฉันแล้วดูเหมือนว่าก่อนอื่นจำเป็นต้องผลิตไมโครวงจรในกล่องพลาสติกแจกจ่ายให้กับผู้มีส่วนได้เสียทั้งหมดและหลังจากได้รับการอนุมัติแล้วเท่านั้น (ละติน approbatio - การอนุมัติการจดจำ) ผู้เชี่ยวชาญสามารถเตรียมการแก้ไขในกล่องโลหะเซรามิกพร้อมการป้องกัน ปัจจัยที่น่ากลัวทั้งหมด ฉันหวังว่าในอนาคตอันใกล้เราทุกคนจะพอใจกับโครงการใหม่ที่ประกาศในนิทรรศการ
ทุกคนสามารถทำซ้ำ แก้ไข และใช้บอร์ดดีบั๊กที่ฉันได้พัฒนาในขั้นตอนการศึกษา ก่อนอื่นฉันสร้างบอร์ดสำหรับตัวเอง แต่กลับกลายเป็นว่าดี
K1986BE1QI (อากาศ) เป็นคอนโทรลเลอร์ที่น่าสนใจมากพร้อมอินเทอร์เฟซเฉพาะที่สามารถใช้ในมหาวิทยาลัยเพื่อการสอนนักเรียน ฉันคิดว่าหลังจากแก้ไขข้อผิดพลาดที่ระบุในคอนโทรลเลอร์และผ่านการทดสอบการรับรองแล้ว คอนโทรลเลอร์จะบินตามความหมายที่แท้จริงของคำ!
ที่มา: will.com