Thực sự không có giao thức "chung", những gì bạn kết thúc sử dụng phụ thuộc nhiều vào ứng dụng. Để chúng tôi cung cấp cho bạn câu trả lời tốt hơn, chúng tôi cần hiểu rõ hơn các yêu cầu của bạn. Bạn đề cập rằng bạn muốn có các bộ điều khiển vi mô riêng biệt nói chuyện với nhau như các hệ thống con.
Một số câu hỏi về ứng dụng này:
- Sẽ có nhiều hơn 2 bộ điều khiển vi mô trong dự án này?
- Yêu cầu tốc độ và thông lượng của bạn là gì? Làm thế nào nhanh chóng thông tin cần đến đó và tần suất bạn gửi / nhận dữ liệu?
Nếu bạn trả lời KHÔNG cho câu hỏi 1:
Nếu chỉ có 2 micrco-điều khiển trong dự án này, bạn chắc chắn có thể sử dụng UART giữa chúng. Nếu cả hai đều cần bắt đầu liên lạc, hãy sử dụng điều khiển luồng, nếu không thì việc gửi dữ liệu theo một hướng là chuyện nhỏ. Đối với hầu hết các phần nên là "đủ nhanh" khi bạn chọn một trong những tốc độ truyền cao hơn. I2C và SPI thường chỉ tốt cho kiến trúc chủ / nô lệ.
Nếu bạn trả lời CÓ (hơn 2 bộ điều khiển) cho câu hỏi 1:
- Nếu có nhiều hơn 2 bộ điều khiển vi mô trong dự án của bạn, cái nào sẽ bắt đầu truyền thông? Nó sẽ chỉ là một bộ điều khiển chính (tức là kiến trúc chủ-nô)? Hoặc bất kỳ hệ thống con nào có thể nói bất cứ lúc nào?
- Có cần cho bất kỳ hệ thống con nào để nói chuyện với nhau không? ví dụ: đối với thiết bị A, B và C: A có thể gửi đến B và C và B có thể gửi cho cả A và C, v.v.
Vì vậy, bây giờ bạn cần một cái gì đó có khả năng mở rộng hơn, nơi bạn có thể thả các thiết bị có địa chỉ lên một chiếc xe buýt chung. Câu trả lời cho những câu hỏi tiếp theo này sẽ giúp bạn quyết định giữa I2C và SPI (chủ nô) hoặc đại loại như CAN (đa chủ).
Bộ điều khiển vi mô của bạn rất có thể có thiết bị ngoại vi UART, các bộ điều khiển khác (đặc biệt là CAN) chỉ có thể khả dụng trên các chip cao cấp hơn. Trong cả hai trường hợp, cần có nhiều tài liệu về cách sử dụng các thiết bị ngoại vi này để di chuyển byte xung quanh.