Những vi điều khiển nên là chủ / nô lệ?


8

Tôi đang thiết kế một báo thức để đánh thức tôi dậy vào buổi sáng. Hệ thống này bao gồm 3 hệ thống con:

  1. (S1) Quản lý bảy phân đoạn RGB. Bao gồm 5 LỚP, một cho mỗi chữ số và một cho ":". Số lượng nhiềuCó là do tôi không sử dụng IC cho đèn led RGB, chỉ có các bóng bán dẫn.
  2. (S2) Quản lý cảm biến và đầu vào. Một PatrickC quản lý cảm biến khoảng cách để đặt báo thức và thời gian hiện tại; và chuyển đổi cho cấu hình.
  3. (S3) Tập tin truyền thông và âm thanh. Một người có khả năng giao tiếp với mô-đun bluetooth trong UART để tiếp tục dự án, đã có một tinh thể RTC để có đồng hồ chính xác và quản lý phát âm thanh. (Tôi chưa làm việc với âm thanh)

Trong quá trình thực thi bình thường, S2 đọc đầu vào và gửi nó đến S3 để xử lý. sau đó S3 gửi cho S1 những gì phải hiển thị.

Tôi muốn làm cho tất cả các hệ thống con này giao tiếp với nhau, sau đó tôi chọn sử dụng bus I2C. Nhưng đây là câu hỏi của tôi:

  • Mà PatrickC phải là bậc thầy?

Mặt khác, S3 là trung tâm của hệ thống nhưng mặt khác, S2 có thể gửi nhiều tin nhắn hơn S3. Đó là lý do tại sao tôi không quyết định ai sẽ là chủ nhân / nô lệ.

  • Có một quy tắc để xác định ai sẽ là nô lệ / chủ? Câu hỏi nào tôi nên tự hỏi mình để đưa ra lựa chọn tốt? (nói chung, không dành cho hệ thống cụ thể này)

14
Tại sao bạn sử dụng 5 bộ vi điều khiển cho đồng hồ / báo thức cơ bản khi chắc chắn một người sẽ thực hiện công việc?
Andy aka

2
Có một uC khác cho 'bộ điều phối hệ thống', thực hiện chủ I2C. Đó không phải là một nhận xét châm biếm, tôi thực sự có ý đó. Nó cung cấp cho bạn sự tách biệt tốt giữa các thiết bị ngoại vi và điều khiển, vì bạn dường như không sợ uCs dư thừa.
Neil_UK

1
@Andyaka Mỗi chữ số có một màu khác nhau (3 * 5 PWM) và mỗi phân đoạn cần trên GPIO để được bật / tắt. Tôi đang sử dụng MSP430 với tư cách làCraftC chỉ với 20 chân và 4 chân PWM. (Tôi có hơn 100 người trong số họ vì vậy tôi cần sử dụng cổ phiếu ^^ ')
M.Ferru

7
@Andyaka Thực sự có một lý do khác. Tôi là người có sở thích ra khỏi trường EE. Tôi muốn tìm hiểu cách thiết lập một giao tiếp tốt giữa một hệ thống với một số CẦU vì tôi không bao giờ làm những việc như vậy. Nếu tôi chỉ đi một ngườiC (tất nhiên đó là lựa chọn tốt hơn) tôi sẽ không học "bất cứ điều gì mới".
M.Ferru

2
@ M.Ferru Rất nhiều thứ ảnh hưởng đến những lựa chọn như vậy. Một lo lắng là về mức độ không chắc chắn và rủi ro cho những "ẩn số" trong tương lai mà tôi có thể chịu đựng được trước khi tôi phải "làm lại" hoàn toàn thiết kế. Khác là các quá trình thời gian và làm thế nào một số quan trọng có thể được. Ví dụ: nếu tôi cần hỗ trợ chuyển khoản dài với các ràng buộc về thời gian chặt chẽ, thì thực tế đó có thể làm phức tạp giao diện người dùng hoạt động tốt. Nhưng đó là về việc viết ra tất cả các chi tiết bạn biết bây giờ, cộng với tất cả mọi thứ bạn có thể nghĩ về điều đó sắp xuất hiện và quyết định cách tốt nhất để sắp xếp các chi tiết đó.
jonk

Câu trả lời:


7

Có quy tắc nào để xác định ai sẽ là nô lệ / chủ nhân [I 2 C] không?

Đúng. Chỉ I 2 C bậc thầy có thể bắt đầu một truyền. Tôi 2 nô lệ C không thể cho bạn biết về một cái gì đó, cho đến khi nó được chủ nhân thăm dò tiếp theo (trừ khi bạn thêm các tín hiệu ngắt bổ sung, làm tăng độ phức tạp của hệ thống tổng thể).

Bỏ qua tính năng (hiếm khi được sử dụng) để thiết bị chuyển đổi giữa làm chủ và nô lệ, điều này có nghĩa là chủ I 2 C phải có đủ kiến ​​thức về hệ thống tổng thể , để biết cách giao tiếp với tất cả I 2 C nô lệ trên xe buýt đó.

Câu hỏi nào tôi nên tự hỏi mình để đưa ra lựa chọn tốt? (nói chung, không dành cho hệ thống cụ thể này)

Hãy suy nghĩ về MCU nào trong hệ thống của bạn biết:

  • hầu hết về trạng thái hệ thống tổng thể, và do đó có thể quyết định khi nào gửi lệnh I 2 C cho nô lệ;
  • mà các lệnh I 2 C cần được gửi đến từng nô lệ;
  • dữ liệu nào cần được thu thập từ mỗi nô lệ I 2 C;
  • mà các thiết bị I 2 C hoàn toàn đáp ứng các lệnh đến (điều này sẽ áp dụng cho MCU "S1" của bạn - có vẻ như rõ ràng rằng chúng phù hợp nhất để trở thành nô lệ);

Không phân biệt MCU sẽ là I 2 C tổng thể, bạn cần phải thiết kế kiến trúc hệ thống tổng thể và cân nhắc mà các lệnh cần phải được gửi đến mỗi thiết bị, và làm thế nào một cách nhanh chóng bất kỳ phản ứng cần phải được nhận. Cố gắng thiết kế một hệ thống có "chủ" rõ ràng và biết tất cả trạng thái hệ thống, và sau đó nó có thể là I 2 C.

Bạn đã nói:

S3 là trung tâm của hệ thống nhưng mặt khác, S2 có thể gửi nhiều tin nhắn hơn S3.

Không rõ ai "S2" đang gửi tin nhắn đến . Có cần phải chủ động gửi tin nhắn cho bất cứ ai ? Hoặc "S2" có thể được thăm dò bởi "S3" với tư cách là chủ nhân I 2 C, để nhận bất kỳ cảm biến nào và thông tin chuyển đổi "S2" thu thập được không? Nếu "S2" có thể được thăm dò bởi "S3" thì trên cơ sở mô tả, có vẻ như rõ ràng rằng "S3" MCU có thể là chủ nhân I 2 C.

Tôi thận trọng về việc thêm một MCU khác (hãy gọi nó là "S10") để trở thành bậc thầy I 2 C. Đó là bởi vì có vẻ như một MCU "S10" sẽ cần thực hiện nhiều cuộc bỏ phiếu, chỉ để thu thập kiến ​​thức trạng thái hệ thống tổng thể mà tất cả (?) Đã biết bởi "S3". Điều đó có vẻ như trùng lặp không cần thiết.

Do đó, trừ khi "S3" không thể thực hiện công việc do đạt đến giới hạn về không gian RAM, không gian Flash hoặc chu kỳ CPU, v.v., có thể sẽ ít phức tạp hơn khi "S3" điều khiển hệ thống bằng cách làm chủ I 2 C, thay vì thêm bộ điều khiển "S10" bổ sung.

Mặt khác, nếu bạn không quan tâm đến sự phức tạp bổ sung, việc thêm bộ điều khiển "S10" tổng thể sẽ tăng tính mô đun (phân đoạn) của hệ thống, vì "S3" chỉ có Bluetooth và âm thanh - không có gì khác. Điều này có thể cho phép thêm linh hoạt để thêm các tính năng mới (không lường trước) / MCU bổ sung trong tương lai mà không cần thay đổi mã trong "S3".


1

S1 phải là nô lệ I 2 C. S2 hoặc S3 sẽ là một lựa chọn hợp lý cho một bậc thầy. Nhưng đó chỉ là những gì đã được đề cập trong câu hỏi ban đầu.

Thông thường, MCU liên quan đến nhiều đầu vào lớn nhất là một ứng cử viên sáng giá cho một bậc thầy. Trong trường hợp của bạn, đó là S2 (một loạt các nút người dùng, RTC) hoặc S3 (một loạt các lệnh từ Bluetooth). Nếu bạn không thể quyết định cái nào thì bạn có thể lấy bộ điều khiển lớn hơn và đặt cả hai chức năng S2 và S3 vào một MCU. Cách tiếp cận này có thể giúp bạn linh hoạt hơn.


0

Mỗi vi điều khiển trong hệ thống của bạn có thể là chủ. Tuy nhiên, một số trong số chúng phù hợp hơn cho chức năng này. Như những người khác đã nói, người vi điều khiển có nhiều thông tin hơn nên là Master.

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.