Kinetis vs STM32


8

Tôi đang xem xét một ứng dụng điều khiển công nghiệp mới và từ các tìm kiếm của tôi, tôi đã thu hẹp nó xuống còn 2 bộ vi điều khiển có vẻ phù hợp với ứng dụng này. STM32 và Kinetis. Cả hai dường như rất có khả năng thực hiện công việc và tôi đã sử dụng STM32 trong một ứng dụng hơi không liên quan. Tôi thích gia đình STM32 vì có rất nhiều lựa chọn cấu hình phù hợp với hầu hết các phần pin. Kinetis tuy nhiên có vẻ là một tiếng nổ lớn hơn cho bộ xử lý buck / bộ nhớ khôn ngoan.

Vì vậy, câu hỏi của tôi cho bất cứ ai có thêm một chút kinh nghiệm với những điều này là ... một số lợi thế và bất lợi cho mỗi gia đình là gì?

Tôi khá chắc chắn rằng không có lựa chọn chính xác nào ở đây cho ứng dụng của tôi, nhưng tôi muốn biết thêm một số chi tiết từ một ai đó không phải là Freescale và ST. Tôi nhận ra các chi tiết về ứng dụng của tôi có thể là một yếu tố ở đây, nhưng đó là một ứng dụng rất rộng về chức năng. Giới hạn lớn nhất của chúng tôi đã thúc đẩy chúng tôi chuyển sang một bộ điều khiển khác là bộ nhớ (~ 16k RAM 256k flash).

Bất kỳ hiểu biết sẽ được đánh giá rất cao. Cảm ơn


STM32F4 có Cortex-M4 với điểm nổi và DSP, cùng với 1 MB flash và 192 kB RAM. Một bảng giá rẻ có sẵn với một số thiết bị ngoại vi thú vị.
Leon Heller

Cấu hình (cùng loại bỏ bộ nhớ và sức mạnh xử lý khác nhau) và độ chín .. STM32 là con đường để đi ..
Ktc

Hai nhập ... một lá.
joeforker

Câu trả lời:


6

Trong STM32 (ST Vi điện tử) và gia đình Kinetis (Freescale), tôi chỉ làm việc với gia đình bộ xử lý STM32 và do đó, tôi sẽ có thể chi tiết trải nghiệm của mình với STM32 và hy vọng rằng ai đó có thể làm điều tương tự cho Kinetis, vì vậy bạn có thể tương phản hai. Danh sách này có thể không đầy đủ, và chỉ đơn giản dựa trên kinh nghiệm của tôi.

PROS:

  1. ST cung cấp một bộ thư viện khổng lồ cho mỗi bộ xử lý của họ mà bạn nhận được miễn phí. Các thư viện này chứa một danh sách lớn các chức năng cần thiết để thực hiện hầu hết các mức độ cơ bản thấp giao tiếp với phần cứng và có thể làm cho cuộc sống của bạn đơn giản hơn rất nhiều.

    ví dụ: void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitSturation) Điều này khởi tạo ngoại vi GPIOx theo các tham số đã chỉ định trong GPIO_InitSturation.

    Chỉ cần điền cấu trúc GPIO (và có các dự án ví dụ để hướng dẫn bạn qua quy trình này) và gọi hàm GPIO_init. Điều này giúp bạn tiết kiệm ít nhất 4-5 lần đăng ký và tìm ra mỗi bit nên là gì.

  2. Bộ vi điều khiển của họ có chức năng Đọc bảo vệ, có thể giúp bạn bảo vệ IP của mình ở một mức độ nào đó, nếu không hoàn toàn. Có hàng tấn vi điều khiển ngoài kia, điều đó thực sự không làm tốt điều này.

  3. Họ có một nhóm các bộ điều khiển vi mô công suất thấp, dòng L1 của họ, có nhiều mức tính năng tiết kiệm năng lượng khác nhau có thể được bật / tắt khi cần.

  4. Mặc dù có nhiều nhà sản xuất hiện đang thực hiện các phiên bản lõi ARM CM3 của họ, các chip dòng F của ST đã có một vài sửa đổi và mặc dù không hoàn toàn không có lỗi, nhưng hiện tại chúng đã khá hoàn thiện.

  5. Hầu như tất cả các biến thể tôi đã làm việc đều có hàng tấn Timers và các thiết bị ngoại vi khác và bạn không bao giờ có thể có đủ những biến thể đó. :)

  6. Để giúp bạn bắt đầu, họ có một số dự án ví dụ có thể được lập trình vào bảng đánh giá của họ, họ hầu như luôn cung cấp cho bạn miễn phí. Mặc dù tôi nghĩ rằng hầu hết các nhà sản xuất khác sẽ làm như vậy.

Nhược điểm:

  1. Mặc dù các thư viện được đề cập ở trên chắc chắn giúp ích rất nhiều, tuy nhiên một số tên hàm không trực quan và phải mất một thời gian để bạn hiểu được các quy ước đặt tên của chúng. Điều này không đúng với toàn bộ thư viện, nhưng có một chút mã, không được bình luận tốt, và bạn sẽ thực sự phải đọc nó để tìm hiểu xem nó đang làm gì.

  2. Nếu bạn đang sử dụng thư viện của họ và muốn bật kiểm tra MISRA cho dự án của mình, bạn sẽ nhận được vô số lỗi / cảnh báo vì mã của họ dường như không tuân thủ MISRA. Bạn sẽ cần tìm cách loại trừ các thư viện của họ khỏi kiểm tra MISRA của bạn. Có nhiều cách để giải quyết vấn đề này, nhưng chúng đòi hỏi một chút công việc để làm điều đó.

  3. Tài liệu của ST cho các bộ xử lý mà tôi đã làm việc hơi kém. Bảng dữ liệu của họ không được viết tốt lắm. Thông tin không có trong một tài liệu trung tâm / chính. Có những gì họ gọi là hướng dẫn tham khảo, hàng tấn ghi chú ứng dụng và ít nhất một bảng dữ liệu. Đôi khi bạn phải thực sự truy tìm các tài liệu này để tìm thông tin bạn đang theo dõi.

    Chúng thường mô tả các cổng GPIO và một cài đặt được đề xuất cho một trong các bit
    có thể được mô tả 50 trang sau.

Đó là tất cả những gì tôi có thể nghĩ đến vào lúc này, hy vọng điều này mang đến cho bạn một chút ý tưởng về các sản phẩm STM32. Tôi sẽ thêm nhiều hơn, nếu tôi có thể nghĩ bất cứ điều gì khác.

Một gợi ý sẽ là lấy một bảng đánh giá cho cả hai loại vi điều khiển (Kinetis một và STM32), có các thiết bị ngoại vi mà bạn đang theo đuổi và chơi với chúng.

Điều đó sẽ mang lại cho bạn cảm giác thực sự tốt cho cái nào phù hợp với nhu cầu của bạn nhất.


1
Tôi ước các nhà sản xuất sẽ không để thư viện của họ xác định và sử dụng các định danh riêng cho mọi thứ. Cấu hình cổng GPIO yêu cầu tra cứu tất cả các thanh ghi chức năng trong hướng dẫn để biết tất cả các chế độ khác nhau có nghĩa là gì; có thể viết mã bằng cách sử dụng thông tin đó trực tiếp sẽ hữu ích hơn là phải kiểm tra thư viện và tài liệu của nó để xem cách nó xác định mọi thứ.
supercat

@supercat Hãy xem DAVE IDE của Infineon. Về cơ bản, bạn thêm những gì họ gọi là "Ứng dụng" thông qua GUI và DAVE thingy sẽ đảm nhiệm việc tạo mã cho bạn.
Chi

3

K70 có silicon rất lỗi. Thông thường các thiết bị ngoại vi mà bạn đã mô tả chỉ có chức năng lite; ví dụ, sử dụng bộ đệm với bộ nhớ ngoài là tốt, nhưng nếu bạn sử dụng bộ nhớ này với DMA, bạn sẽ cần phải xóa bộ đệm theo cách thủ công. K70 có bộ điều khiển LCD, nhưng hầu như không thể đạt được độ phân giải tốt hơn 480x272, điều này không tốt hơn có thể đạt được với MCU tiêu chuẩn. K70 có một bộ tạo đồng hồ quái vật, nhưng chỉ có một vài thiết bị ngoại vi có thể sử dụng nó thay vì đồng hồ xe buýt.
Điều quan trọng nhất là tôi đã thấy rằng việc quản lý năng lượng thấp phức tạp đơn giản là không hoạt động!


2

Tôi giả sử rằng bạn đang so sánh Kinetis với bộ xử lý STM32F4 Cortex-M4. Tôi chưa thực sự sử dụng nhưng đã xem xét chúng để sử dụng trong một dự án sắp tới. Ngoài ra còn có các họ thiết bị M4 có sẵn từ TI-Stellaris và được Atmel và NXP công bố nhiều trong số đó bao gồm bộ xử lý dấu phẩy động, tải các cổng nối tiếp và bộ hẹn giờ.

Sự hỗ trợ về phần mềm cho các bộ xử lý (Freescale và ST) có vẻ tốt với Freescale cung cấp thư viện giao diện và RTOS miễn phí bản quyền cho các bộ phận của họ. ST cung cấp một bộ thư viện giao diện cho phép cấu hình và sử dụng bộ xử lý và thiết bị ngoại vi của chúng.

Các thiết bị ST dường như chiến thắng trong cuộc chiến tốc độ xử lý với tốc độ được trích dẫn là 168 MHz bằng cách sử dụng (IIRC) một bus bộ nhớ rộng cho flash chương trình. Điều này có thể hoặc không quan trọng đối với bạn.

Các bộ phận Kinetis trưởng thành hơn, đã có sẵn gần một năm. Kết quả là bây giờ có khá nhiều họ thiết bị được sản xuất với một loạt các giao diện và bộ ngoại vi. Các bộ phận ST chỉ mới ra mắt được khoảng một tháng, mặc dù chúng đã phát hành một số bộ phận cùng lúc với việc thông báo cho gia đình. Phạm vi các bộ phận của chúng sẽ tăng theo nhiều cách giống như gia đình Cortex-M3 của chúng.


STM32 có sẵn hơn 2 năm .. Chỉ có F4 ra mắt được vài tháng nhưng F1 / F2 đã tồn tại được hơn 2 năm .. Chúng tôi đang sử dụng nó ..
Ktc

Tôi nhận thức rõ rằng các bộ xử lý dựa trên STM32 M3 đã xuất hiện từ lâu. Câu hỏi dựa trên các bộ phận Kinetis (dựa trên M4) vì vậy tôi đã so sánh các họ bộ xử lý M4 có sẵn.
uɐɪ

Thật vậy .. Nhưng nếu bạn so sánh M4 với M3, có rất ít sự khác biệt về phần còn lại của các khối mang lại cho tôi sự tự tin. Dù sao thì ARM cũng là cánh tay, không quan trọng là phiên bản nào vì nó sẽ được chính ARM xem xét
Ktc

2

Trải nghiệm của tôi với STM32 và Kinetis K70 có thể chạy uClinux trên các bộ xử lý này (thông tin chi tiết về các cổng uClinux có sẵn tại đây ).

Nếu bạn có ý định sử dụng RAM ngoài trong ứng dụng của mình, theo tôi, K70 sẽ là lựa chọn tốt hơn.


Để giải thích rõ hơn về bài đăng của tôi ở trên, K70 có hai bộ nhớ đệm 8KB, một cho bus I / D (chủ yếu nhắm vào các vùng bộ nhớ có thể được sử dụng để chạy mã từ), một cái khác cho bus hệ thống (nhắm vào các bộ nhớ "không mã" ). Từ những gì chúng ta đang thấy trong bối cảnh uClinux, bộ nhớ cache giúp cải thiện hiệu năng hệ thống tổng thể theo một cách hơi nghiêm trọng.
vladimir khusainov

1

Gần đây tôi đã trả lời một truy vấn của khách hàng liên quan chặt chẽ đến chủ đề này. Hy vọng, những bình luận này sẽ hữu ích.

+++++++++++

Để làm nổi bật sự khác biệt giữa K70 với STM32F2:

  • K70 là Cortex-M4 trong khi STM32F2 là Cortex-M3. Nói cách khác, K70 cung cấp các đơn vị FPU và DSP phần cứng trên chip.

  • K70 có thể chạy lõi Cortex-M ở 150 MHz (mặc dù các thiết bị hiện có sẵn bị giới hạn ở 120 MHz). STM32F2 được giới hạn ở 120 MHz.

  • K70 cung cấp giao diện DDR và ​​NAND Flash trên chip, cho phép mật độ rất cao cho các thiết bị bộ nhớ ngoài.

  • K70 có bộ đệm trên chip (2 bộ nhớ đệm 8KB riêng cho I / D và System bus). Đây thực sự là hiệu suất khởi động của các ký ức bên ngoài một cách rất nghiêm túc.

  • K70 cung cấp các cơ chế bảo mật khác nhau để đảm bảo rằng phần mềm không thể được sao chép bằng các công cụ bên ngoài (trình gỡ lỗi JTAG, v.v.).

  • K70 có bộ điều khiển LCD tích hợp cũng như giao diện cảm ứng tích hợp.

  • bộ giao diện I / O tương tự nhưng điều này cần được đo theo các yêu cầu của ứng dụng cụ thể.

Nhìn chung, nếu bạn đang sử dụng bộ nhớ ngoài trong các ứng dụng của mình và / hoặc cần giao diện GUI, K70 sẽ là người chiến thắng rõ ràng. Ngoài ra, K70 là hiệu suất cao hơn, nói chung.

+++++++++++


K7x có ADC 16 bit với PGA trong khi không phải STM32 có điều đó.
Mehmet Fide
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.