Tùy chọn xe buýt nhiều nút


7

Tôi muốn một nút chính bao gồm lõi TI Stellaris Cortex M3 được kết nối với 32 nút nô lệ của TI MSP430 (hoặc có thể nhiều nút nô lệ Stellaris hơn). Đây sẽ là tối đa 0,5 mét giữa chủ đến nô lệ xa nhất. Tốc độ bit khoảng 0,5-1mbps sẽ là cần thiết. Những loại tùy chọn có sẵn cho truyền thông nội bộ?

Từ tài liệu cả hai dường như hỗ trợ SPI, UART và I2C.

  • SPI sẽ từ những gì tôi tìm thấy, cần 1 nút pr chọn dây. Cách quá nhiều dây.
  • I2C có vẻ dễ dàng, nhưng đối với tài liệu tôi nhận được tốc độ tối đa là 400KHz. Quá chậm mà không làm giảm chất lượng hoặc số lượng nút tối đa.
  • UART dường như đạt được tốc độ, nhưng nó có thể được sử dụng ngoài giao tiếp A đến B không?
  • Tôi có bỏ lỡ điều gì không?

Cập nhật: Như đã lưu ý trong các nhận xét, đã cập nhật tốc độ I2C cho msp430 lên 400KHz. Vẫn còn quá chậm. Ngoài ra, mạng lưới hoàn toàn là một chủ và n nô lệ.


Khi bạn nói rằng bạn có thể có nhiều nút Stellaris hơn, bạn có nghĩa là bạn có nhiều chủ? Điều này dễ dàng hơn nhiều (xem câu trả lời của AngryEE) nếu bạn chỉ có một chủ.
Kevin Vermeer

CAN sẽ hoạt động ở tốc độ 1Mb / giây ở hơn 20 mét. Không chắc chắn nếu bất kỳ người khác sẽ. Các vi điều khiển Stellaris cũng có hỗ trợ rất tốt. Hãy chắc chắn rằng bạn kiểm tra errata vì có một số điểm dính. Thư viện trình điều khiển của họ là khá tốt để tránh được nhiều lỗi!
Tim

Chỉ cần một chủ. Câu hỏi cập nhật
Imbrondir

Câu trả lời:


7

Tôi muốn đề nghị RS485 hoặc CAN; RS485 có lợi thế về tính khả dụng gần như phổ quát (nếu bạn có UART, bạn có thể có RS485; nếu UART của bạn có điều khiển RTS tự động, bạn có một giải pháp RS485 hoàn hảo). Bạn có thể tìm thấy các thiết bị nhỏ, giá rẻ cũng sẽ tăng lên vài megabaud.

CAN mạnh hơn một chút, nhưng nếu vi điều khiển của bạn không có thiết bị ngoại vi thì đó có thể là một chi phí bổ sung mà bạn không sẵn sàng thêm vào dự án. Ưu điểm chính của CAN so với RS485 (IMO) là trong trường hợp tranh chấp xe buýt, một thông điệp hoàn chỉnh vẫn sẽ được thông qua; Nếu hai thiết bị bắt đầu nói chuyện trên mạng RS485, không có gì dễ hiểu được nhận và không có phương tiện quản lý xe buýt tích hợp, vì vậy bạn phải quan tâm đến vấn đề này trong phần mềm.

Đối với tốc độ nhất định của bạn và được cho rằng tôi không tin các bộ vi điều khiển mà bạn đề cập có bộ điều khiển CAN tích hợp, tôi đề xuất một mạng RS485 dựa trên mã thông báo. Về cơ bản, không có nút nào nói cho đến khi đến lượt mình nói và điều này được thực hiện mặc dù việc chuyển "mã thông báo" (một thông điệp mạng ngắn cho phép sử dụng xe buýt) lần lượt cho từng nút. Việc cài đặt tương đối dễ dàng, đáng tin cậy hơn nhiều so với CSMA / CD và tôi nghĩ bạn có thể có thứ gì đó hoạt động trong vòng một ngày.


2

RS485 có thể là một phù hợp tốt. Nó sử dụng UART cho luồng nối tiếp, nhưng nó sẽ cần một chốt hướng để xác định nút nào điều khiển bus.

Master sẽ truyền tải một thông điệp và sau đó lắng nghe phản hồi.

Các nô lệ sẽ giải mã tất cả các tin nhắn và trả lời các tin nhắn được gửi đến nó.


2

FWIW, tôi khá chắc chắn rằng bus I2C có thể chạy ở tốc độ cao hơn 100kHz. MSP430, tôi tin rằng, có thể hỗ trợ hoạt động ít nhất 400kHz.


I2C cũng có chế độ tốc độ cao 3,4Mhz nhưng tôi không biết bất kỳ bộ điều khiển vi mô nào trong phân khúc thị trường MSP430 hoặc cortex-M3 hỗ trợ nó.
Đánh dấu

Tôi đứng sửa. Tôi nhầm lẫn nó với thông số kỹ thuật của một vi mô khác mà tôi đang đánh giá. Msp430 có thể lên tới 400MH. Vẫn còn một chút quá thấp.
Imbrondir

2

Bạn có thể bỏ qua dòng chọn cho SPI và coi nó như một giao diện nối tiếp đồng bộ chung chung hơn. Tôi tin rằng Stellaris sẽ cho phép bạn định cấu hình SPI là một SSI, nhưng tôi không chắc về MSP430. Bất kể, bạn chỉ có thể để họ giám sát xe buýt và chỉ trả lời nếu họ thấy địa chỉ nô lệ của họ bật lên. Bạn sẽ phải viết phần mềm cho việc này nhưng nó sẽ hoạt động.


Làm thế nào bạn sẽ giải quyết các xung đột trên xe buýt, chẳng hạn như nếu hai thiết bị bắt đầu nói chuyện cùng một lúc?
Kevin Vermeer

Hấp dẫn. Tôi cũng sẽ phải điều tra việc này.
Imbrondir

@Kevin Vermeer: ​​một cách tiếp cận là giải quyết nó giống như cách chúng ta giải quyết cùng một vấn đề trên RS-485: một nút chủ duy nhất, số nút duy nhất và tất cả các nút khác chỉ truyền khi lệnh chính mà một lệnh cụ thể truyền đi.
davidcary

0

I2C sẽ chạy ít nhất 400kHz với hầu hết các bộ phận. Nó sẽ là giải pháp dễ nhất cho một chiếc xe buýt liên lạc khoảng cách ngắn. Nếu bạn muốn thứ gì đó mạnh mẽ hơn, tôi khuyên bạn nên CAN hoặc RS-485, nhưng cả hai sẽ yêu cầu thêm chip ngoài.


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.