Đây là một trong những chủ đề có thể trở thành tranh luận cao. Có rất nhiều quan điểm khác nhau, và những điều khác nhau rất quan trọng đối với những người khác nhau. Tôi sẽ cố gắng đưa ra một câu trả lời toàn diện, nhưng hiểu rằng sẽ luôn có một người không đồng ý. Chỉ cần hiểu rằng những người không đồng ý với tôi là sai. (Đùa thôi.)
Tóm tắt nhanh:
Câu trả lời này sẽ là một câu hỏi dài, vì vậy hãy để tôi tóm tắt điều này lên phía trước. Đối với đại đa số mọi người, vụ chip ARM Cortex-M0 / M3 / M4 mới nhất cung cấp giải pháp tốt nhất, các tính năng tốt nhất cho chi phí. Điều này thậm chí còn đúng khi so sánh các MCU 32 bit này với tổ tiên 8 và 16 bit của chúng như PIC và MSP430. M0 có thể được mua với giá dưới 1 đô la Mỹ / mỗi chiếc và M4 với giá dưới 2 đô la Mỹ / chiếc, ngoại trừ các ứng dụng rất nhạy cảm về giá, các giải pháp ARM rất đẹp. M0 có công suất rất thấp và đủ tốt cho hầu hết mọi người. Đối với những người rất nhạy cảm với sức mạnh, MSP430 vẫn có thể là lựa chọn tốt hơn, nhưng M0 đáng để xem xét cho cả những ứng dụng này.
Nếu bạn quan tâm đến một phân tích chuyên sâu hơn thì hãy đọc tiếp, nếu không bạn có thể ngừng đọc ngay bây giờ.
Bây giờ tôi sẽ xem xét từng khu vực và so sánh các MCU khác nhau:
Tốc độ thực hiện
Tất nhiên các MCU 32 bit sẽ nhanh hơn. Họ có xu hướng có tốc độ đồng hồ nhanh hơn, nhưng cũng làm nhiều việc hơn cho mỗi đồng hồ đó. MCU như ARM Cortex-M4 bao gồm các hướng dẫn xử lý DSP và thậm chí có thể có hỗ trợ điểm nổi trong phần cứng. CPU 8 và 16 bit có thể hoạt động trên các số 32 bit, nhưng nó không hiệu quả trong việc đó. Làm như vậy sẽ nhanh chóng tiêu thụ các thanh ghi CPU, chu kỳ xung nhịp CPU và bộ nhớ flash để lưu trữ chương trình.
Dễ phát triển
Theo tôi, đây là lý do có giá trị nhất để sử dụng MCU 32 bit hiện đại-- nhưng cũng được đánh giá thấp nhất. Trước tiên hãy để tôi so sánh điều này với PIC 8 bit. Đây là so sánh trường hợp xấu nhất, nhưng cũng là tốt nhất để minh họa quan điểm của tôi.
Các PIC nhỏ hơn về cơ bản yêu cầu lập trình phải được thực hiện bằng ngôn ngữ lắp ráp. Đúng, có các trình biên dịch C có sẵn cho cả PIC 8 bit nhưng các trình biên dịch đó là miễn phí hoặc tốt. Bạn không thể có được một trình biên dịch vừa tốt vừa miễn phí. Phiên bản miễn phí của trình biên dịch bị tê liệt ở chỗ tối ưu hóa của nó không tốt bằng phiên bản "Pro". Phiên bản Pro có giá xấp xỉ 1.000 USD và chỉ hỗ trợ một họ chip PIC (chip 8, 16 hoặc 32 bit). Nếu bạn muốn sử dụng nhiều hơn một gia đình thì bạn phải mua một bản sao khác với giá 1.000 đô la Mỹ khác. Phiên bản "Tiêu chuẩn" của trình biên dịch thực hiện mức tối ưu hóa trung bình và có giá khoảng 500 USD cho mỗi họ chip. PIC 8 bit bị chậm theo tiêu chuẩn hiện đại và yêu cầu tối ưu hóa tốt.
Để so sánh, có nhiều trình biên dịch C tốt cho ARM MCU miễn phí. Khi có giới hạn, các giới hạn đó thường nằm ở kích thước tối đa của Bộ nhớ Flash được hỗ trợ. Trên các công cụ Codewar Warrior Freescale, giới hạn này là 128Kbyte. Điều này là rất nhiều cho hầu hết mọi người trên diễn đàn này.
Ưu điểm của việc sử dụng trình biên dịch C là bạn không phải bận tâm (nhiều) với các chi tiết cấp thấp của bản đồ bộ nhớ của CPU. Phân trang trên PIC đặc biệt đau đớn và tốt nhất nên tránh nếu có thể. Một ưu điểm khác là bạn không phải bận tâm với mớ lộn xộn khi trao các số 16 và 32 bit trên MCU 8 bit (hoặc số 32 bit trên MCU 16 bit). Mặc dù không khó để thực hiện điều này trong ngôn ngữ lắp ráp, nhưng nó là một nỗi đau ở phía sau và dễ bị lỗi.
Có các trình biên dịch C không ARM khác hoạt động tốt. Trình biên dịch MSP430 dường như làm một công việc hợp lý. Các công cụ Cypress PSoC (đặc biệt là PSoC1) bị lỗi.
Mô hình bộ nhớ phẳng
Một MCU có phân trang RAM / thanh ghi / Flash chỉ là ngu ngốc. Vâng, tôi đang nói về PIC 8 bit. Ngốc, câm, câm. Điều đó đã khiến tôi tắt PIC rất nhiều đến nỗi tôi thậm chí không buồn nhìn vào những thứ mới hơn của chúng. (Tuyên bố miễn trừ trách nhiệm: điều này có nghĩa là PIC mới có thể được cải thiện và tôi chỉ không biết điều đó.)
Với MCU 8 bit, rất khó (nhưng không phải là không thể) để truy cập các cấu trúc dữ liệu lớn hơn 256 byte. Với MCU 16 bit được tăng lên 64 kbyte hoặc kwords. Với MCU 32 bit có dung lượng lên tới 4 gigabyte.
Một trình biên dịch C tốt có thể ẩn rất nhiều thứ này khỏi lập trình viên (còn gọi là Bạn), nhưng ngay cả khi đó nó cũng ảnh hưởng đến kích thước chương trình và tốc độ thực thi.
Có nhiều ứng dụng MCU mà điều này sẽ không thành vấn đề, nhưng tất nhiên có nhiều ứng dụng khác sẽ gặp vấn đề với điều này. Vấn đề chủ yếu là bạn cần bao nhiêu dữ liệu (mảng và cấu trúc) trong RAM hoặc Flash. Tất nhiên, khi tốc độ CPU tăng thì tỷ lệ sử dụng các cấu trúc dữ liệu lớn hơn!
kích cỡ gói
Một số PIC nhỏ và MCU 8 bit khác có sẵn trong các gói thực sự nhỏ. 6 và 8 chân! Hiện tại ARM Cortex-M0 nhỏ nhất mà tôi biết có trong QFN-28. Mặc dù QFN-28 đủ nhỏ cho hầu hết, nhưng nó không đủ nhỏ cho tất cả.
Giá cả
PIC rẻ nhất là khoảng một phần ba giá của ARM Cortex-M0 rẻ nhất. Nhưng đó thực sự là 0,32 đô la Mỹ so với 0,85 đô la Mỹ. Vâng, sự khác biệt giá cả quan trọng đối với một số. Nhưng tôi khẳng định rằng hầu hết mọi người trên trang web này không quan tâm đến sự khác biệt nhỏ về chi phí.
Tương tự như vậy, khi so sánh các MCU có khả năng cao hơn với ARM Cortex-M0 / M3 / M4 thường thì ARM Cortex xuất hiện "gần như đều" hoặc ở trên đầu. Khi bao thanh toán trong những thứ khác (dễ phát triển, chi phí biên dịch, v.v. thì ARM rất hấp dẫn.
Tóm tắt thứ hai
Tôi đoán câu hỏi thực sự là: Tại sao bạn KHÔNG sử dụng ARM Cortex-M0 / M3 / M4? Khi chi phí tuyệt đối là siêu quan trọng. Khi tiêu thụ năng lượng siêu thấp là rất quan trọng. Khi kích thước gói nhỏ nhất được yêu cầu. Khi tốc độ không quan trọng. Nhưng đối với phần lớn các ứng dụng, không có ứng dụng nào trong số này áp dụng và ARM hiện là giải pháp tốt nhất.
Với chi phí thấp, trừ khi có lý do chính đáng để không sử dụng ARM Cortex, thì việc sử dụng nó là hợp lý. Nó sẽ cho phép thời gian phát triển nhanh hơn và dễ dàng hơn với ít đau đầu hơn và lề thiết kế lớn hơn so với hầu hết các MCU khác.
Có các MCU 32-bit Cortex không ARM khác có sẵn, nhưng tôi cũng không thấy bất kỳ lợi thế nào cho chúng. Có nhiều lợi thế khi đi với kiến trúc CPU tiêu chuẩn, bao gồm các công cụ phát triển tốt hơn và đổi mới công nghệ nhanh hơn.
Tất nhiên, mọi thứ có thể và làm thay đổi. Những gì tôi nói là hợp lệ ngày hôm nay, nhưng có thể không có giá trị trong một năm hoặc thậm chí một tháng kể từ bây giờ. Làm bài tập về nhà của riêng bạn.