นี่เป็นหนึ่งในวิชาที่สามารถถกเถียงกันอย่างมาก มีมุมมองที่แตกต่างกันมากมายและสิ่งต่าง ๆ มีความสำคัญต่อคนต่างกัน ฉันจะพยายามให้คำตอบที่ครอบคลุม แต่เข้าใจว่าจะมีคนที่ไม่เห็นด้วยเสมอ แค่เข้าใจว่าคนที่ไม่เห็นด้วยกับฉันนั้นผิด (ผมล้อเล่น.)
สรุปด่วน:
คำตอบนี้จะเป็นคำตอบยาว ๆ ขอผมสรุปเรื่องนี้ไว้ก่อน สำหรับคนส่วนใหญ่การครอบตัดล่าสุดของชิป ARM Cortex-M0 / M3 / M4 เสนอทางออกที่ดีที่สุดคุณสมบัติที่ดีที่สุดสำหรับค่าใช้จ่าย สิ่งนี้เป็นจริงเมื่อเปรียบเทียบ MCU 32 บิตเหล่านี้กับบรรพบุรุษ 8 และ 16 บิตเช่น PIC และ MSP430 M0 สามารถซื้อได้น้อยกว่า US $ 1 ต่อชิ้นและ M4 สำหรับน้อยกว่า US $ 2 ต่อชิ้นดังนั้นสำหรับแอปพลิเคชันที่มีความอ่อนไหวด้านราคาโซลูชั่น ARM นั้นดีมาก M0 นั้นมีพลังงานต่ำมากและน่าจะดีพอสำหรับคนส่วนใหญ่ สำหรับผู้ที่มีความไวต่อพลังงานมาก MSP430s อาจยังคงเป็นตัวเลือกที่ดีกว่า แต่ M0 นั้นคุ้มค่าที่จะพิจารณาแม้แต่แอปพลิเคชันเหล่านี้
หากคุณมีความสนใจในการวิเคราะห์เชิงลึกยิ่งขึ้นอ่านต่อไม่เช่นนั้นคุณสามารถหยุดอ่านได้ทันที
ตอนนี้ฉันจะดูแต่ละพื้นที่และเปรียบเทียบ MCU ที่แตกต่างกัน:
ความเร็วของการดำเนินการ
แน่นอนว่า MCU แบบ 32 บิตกำลังจะเร็วขึ้น พวกเขามักจะมีความเร็วสัญญาณนาฬิกาที่เร็วขึ้น แต่ยังทำงานได้มากขึ้นสำหรับนาฬิกาแต่ละเรือน MCUs เช่น ARM Cortex-M4 มีคำแนะนำในการประมวลผล DSP และยังสามารถรองรับจุดลอยตัวในฮาร์ดแวร์ ซีพียู 8 และ 16 บิตสามารถทำงานกับตัวเลข 32 บิต แต่ไม่มีประสิทธิภาพในการทำเช่นนั้น การทำเช่นนั้นจะใช้การลงทะเบียน CPU รอบสัญญาณนาฬิกาของ CPU และหน่วยความจำแฟลชอย่างรวดเร็วสำหรับการจัดเก็บโปรแกรม
ความง่ายในการพัฒนา
ในความคิดของฉันนี่เป็นเหตุผลที่มีค่าที่สุดสำหรับการใช้ MCU แบบ 32 บิตที่ทันสมัย - แต่ก็เป็นสิ่งที่น่าชื่นชมมากที่สุด ให้ฉันเปรียบเทียบสิ่งนี้กับ PIC 8 บิตก่อน นี่คือการเปรียบเทียบกรณีที่เลวร้ายที่สุด แต่ยังดีที่สุดที่จะแสดงให้เห็นถึงจุดของฉัน
PIC ที่มีขนาดเล็กลงนั้นต้องการการเขียนโปรแกรมในภาษาแอสเซมบลี จริงมีคอมไพเลอร์ C สำหรับแม้แต่ PIC 8 บิต แต่คอมไพเลอร์เหล่านั้นฟรีหรือดี คุณไม่สามารถรับคอมไพเลอร์ที่ดีและฟรี คอมไพเลอร์รุ่นฟรีนั้นพิการเนื่องจากการเพิ่มประสิทธิภาพไม่ดีเท่ารุ่น "Pro" รุ่น Pro ประมาณ 1,000 เหรียญสหรัฐและรองรับชิป PIC ตระกูลเดียว (8, 16, หรือ 32 บิต) หากคุณต้องการใช้มากกว่าหนึ่งครอบครัวคุณต้องซื้อสำเนาอีกชุดหนึ่งสำหรับอีก 1,000 เหรียญสหรัฐ คอมไพเลอร์รุ่น "มาตรฐาน" ทำการปรับแต่งในระดับปานกลางและราคาประมาณ US $ 500 สำหรับแต่ละตระกูลชิป PIC 8 บิตช้าตามมาตรฐานที่ทันสมัยและต้องการการปรับให้เหมาะสม
จากการเปรียบเทียบมีคอมไพเลอร์ C ที่ดีมากมายสำหรับ ARM MCU ที่ไม่มีค่าใช้จ่าย เมื่อมีข้อ จำกัด ขีด จำกัด เหล่านั้นมักจะเป็นขนาดสูงสุดของหน่วยความจำแฟลชที่รองรับ บนเครื่องมือ Freescale Codewarrior ขีด จำกัด นี้คือ 128Kbytes นี่เป็นจำนวนมากสำหรับคนส่วนใหญ่ในฟอรัมนี้
ข้อดีของการใช้คอมไพเลอร์ C คือคุณไม่ต้องกังวล (มาก) กับรายละเอียดในระดับต่ำของแผนที่หน่วยความจำของ CPU การเพจบน PIC นั้นเจ็บปวดเป็นพิเศษและหลีกเลี่ยงได้ดีที่สุดหากเป็นไปได้ ข้อดีอีกอย่างคือคุณไม่ต้องกังวลกับการส่งหมายเลข 16 และ 32 บิตบน MCU 8 บิต (หรือหมายเลข 32 บิตใน MCU 16 บิต) ในขณะที่มันไม่ยากอย่างยิ่งที่จะทำในภาษาแอสเซมบลีมันเป็นความเจ็บปวดในด้านหลัง
มีคอมไพเลอร์ที่ไม่ใช่ ARM C อื่น ๆ ที่ทำงานได้ดี คอมไพเลอร์ MSP430 ดูเหมือนว่าจะทำงานที่เหมาะสม เครื่องมือ Cypress PSoC (โดยเฉพาะอย่างยิ่ง PSoC1) เป็นรถบั๊กกี้
หน่วยความจำแบบแบน
MCU ที่มีเพจ / RAM ลงทะเบียน / แฟลชเป็นเพียงโง่ ใช่ฉันกำลังพูดถึง PIC 8 บิต เป็นใบ้เป็นใบ้เป็นใบ้ นั่นทำให้ฉันปิดการทำงานของ PIC มากจนฉันไม่ได้ใส่ใจที่จะดูสิ่งใหม่ ๆ ของพวกเขา (คำเตือน: นี่หมายความว่า PIC ใหม่อาจได้รับการปรับปรุงและฉันก็ไม่รู้)
ด้วย 8-bit MCU มันเป็นเรื่องยาก (แต่ไม่เป็นไปไม่ได้) ในการเข้าถึงโครงสร้างข้อมูลที่มีขนาดใหญ่กว่า 256 ไบต์ ด้วย MCU แบบ 16 บิตที่เพิ่มเป็น 64 kbytes หรือ kwords ด้วย MCU แบบ 32 บิตที่มีขนาดสูงสุด 4 กิกะไบต์
คอมไพเลอร์ C ที่ดีสามารถซ่อนสิ่งนี้ได้มากมายจากโปรแกรมเมอร์ (aka You) แต่ถึงอย่างนั้นมันก็มีผลต่อขนาดโปรแกรมและความเร็วในการประมวลผล
มีแอปพลิเคชั่น MCU หลายตัวที่จะไม่เป็นปัญหา แต่แน่นอนว่ายังมีแอปพลิเคชันอื่น ๆ อีกมากมายที่จะมีปัญหากับสิ่งนี้ มันเป็นปัญหาส่วนใหญ่ของข้อมูลที่คุณต้องการ (อาร์เรย์และโครงสร้าง) ใน RAM หรือแฟลช แน่นอนว่าเมื่อความเร็วของ CPU เพิ่มขึ้นอัตราต่อรองของการใช้โครงสร้างข้อมูลที่ใหญ่ขึ้น!
ขนาดบรรจุภัณฑ์
PIC ขนาดเล็กบางตัวและ MCU 8 บิตอื่น ๆ นั้นมีอยู่ในแพ็คเกจขนาดเล็กจริงๆ 6 และ 8 พิน! ปัจจุบัน ARM Cortex-M0 ที่เล็กที่สุดที่ฉันรู้จักอยู่ใน QFN-28 ในขณะที่ QFN-28 มีขนาดเล็กพอสำหรับคนส่วนใหญ่ แต่ก็ไม่เล็กพอสำหรับทุกคน
ราคา
PIC ที่ถูกที่สุดคือราคา ARM Cortex-M0 ประมาณหนึ่งในสาม แต่นั่นคือจริงๆ $ 0.32 เทียบกับ US $ 0.85 ใช่ความแตกต่างของราคานั้นมีบางอย่าง แต่ฉันพูดว่าคนส่วนใหญ่ในเว็บไซต์นี้ไม่สนใจว่ามีความแตกต่างด้านค่าใช้จ่ายเล็กน้อย
ในทำนองเดียวกันเมื่อเปรียบเทียบ MCU ที่มีความสามารถมากขึ้นกับ ARM Cortex-M0 / M3 / M4 โดยปกติ ARM Cortex จะออกมา "อย่างสม่ำเสมอแม้" หรือด้านบน เมื่อทำการแฟคตอริ่งในสิ่งอื่น ๆ (ความสะดวกในการพัฒนา, ค่าคอมไพเลอร์, ฯลฯ ) ARM นั้นน่าสนใจมาก
สรุปที่สอง
ฉันเดาว่าคำถามจริงคือทำไมคุณไม่ใช้ ARM Cortex-M0 / M3 / M4 เมื่อต้นทุนที่แท้จริงเป็นสิ่งสำคัญ เมื่อการใช้พลังงานต่ำเป็นสิ่งสำคัญ เมื่อต้องการขนาดแพ็คเกจที่เล็กที่สุด เมื่อความเร็วไม่สำคัญ แต่สำหรับแอพพลิเคชั่นส่วนใหญ่นั้นไม่มีการใช้สิ่งเหล่านี้และปัจจุบัน ARM เป็นทางออกที่ดีที่สุด
ให้ราคาต่ำเว้นแต่จะมีเหตุผลที่ดีที่จะไม่ใช้ ARM Cortex จากนั้นมันสมเหตุสมผลที่จะใช้ มันจะช่วยให้เวลาในการพัฒนาเร็วขึ้นและง่ายขึ้นโดยมีอาการปวดหัวน้อยลงและระยะขอบการออกแบบที่ใหญ่กว่า MCU อื่น ๆ ส่วนใหญ่
มี MCU อื่นที่ไม่ใช่ ARM Cortex 32 บิตพร้อมใช้งาน แต่ฉันไม่เห็นประโยชน์ใด ๆ มีข้อดีหลายประการในการใช้สถาปัตยกรรม CPU มาตรฐานรวมถึงเครื่องมือในการพัฒนาที่ดีขึ้นและนวัตกรรมด้านเทคโนโลยีที่เร็วขึ้น
แน่นอนสิ่งต่าง ๆ และสามารถเปลี่ยนแปลงได้ สิ่งที่ฉันพูดถูกต้องในวันนี้ แต่อาจไม่ถูกต้องในหนึ่งปีหรือแม้กระทั่งหนึ่งเดือนนับจากนี้ ทำการบ้านของคุณเอง