Bộ vi xử lý cho nhiều thiết bị SPI (~ 40)?


7

Tôi đang xem xét việc xây dựng một sản phẩm kết hợp hơn 40 công tắc nút LCD (ví dụ ở đây giao tiếp qua SPI). Tôi đã xem xét các bộ vi xử lý để xử lý việc này, nhưng tôi gặp rắc rối khi tìm kiếm bất kỳ. Mức cao nhất mà Atmel cung cấp là 12 thiết bị ( như được tìm thấy ở đây ) và ARM không có vẻ tốt hơn.

Cách tốt nhất để kiểm soát nhiều thiết bị SPI này là gì? Tôi có cần liên kết nhiều bộ xử lý với nhau thành chủ không?


3
Bạn có nhận ra rằng bạn không bị buộc phải sử dụng pin chọn nô lệ chuyên dụng? Bạn thực sự có thể sử dụng bất kỳ GPIO hoặc sơ đồ nào bạn muốn tạo chúng, miễn là bạn chắc chắn rằng chúng hợp lệ về thời gian. Vì vậy, thực sự giới hạn của bạn là tải điện trên xe buýt. Có nhiều cách bạn có thể đối phó với điều đó, nhưng bạn có thể xem xét một người hâm mộ dữ liệu theo lô nô lệ cho chủ. Hoặc có khả năng là một FPGA, vận hành nhiều bus cùng một lúc và xử lý dữ liệu hàng loạt với MCU máy chủ.
Chris Stratton

1
Bạn có nhận ra rằng các thiết bị XMEGA mà liên kết của bạn đề cập đến có thể xử lý tối đa 12 bus SPI với tư cách là Master, không chỉ 12 khách hàng SPI? Ví dụ, bạn có thể chia 40 thiết bị trên 10 bus và vẫn có đủ GPIO miễn phí cho các dòng chọn nô lệ. Nhưng có lẽ tôi đang thiếu điểm.
Rev1.0

@ChrisStratton Tôi không nhận ra điều đó, cảm ơn. Tôi là một lập trình viên đang cố gắng để được nhúng, vì vậy có rất nhiều việc phải làm.
kfriede

@ Rev1.0 Có lẽ không thiếu điểm nào, tôi chỉ mới làm điều này. Vì vậy, "chia 40 thiết bị trên 10 bus" có cung cấp giải pháp cho vấn đề Điện dung đầu vào mà Majenko đưa ra dưới đây không?
kfriede

Bạn có thể cung cấp biểu dữ liệu hiển thị các kết nối điển hình và giao thức SPI mà công tắc LCD sử dụng không?
dùng2943160

Câu trả lời:


6

Sử dụng bộ khử kênh, chẳng hạn như 74HC138 cho lựa chọn nô lệ, hoặc sử dụng diode-OR với ma trận chọn.

Hoặc nếu giao thức cho phép, bạn có thể xâu chuỗi tất cả các nút lại với nhau và sử dụng một lần chuyển SPI dài cho tất cả chúng.


Bây giờ bạn nói điều đó, demultiplexer hoàn toàn có ý nghĩa. Tôi thậm chí không nghĩ đến tôi. Cảm ơn bạn.
kfriede

Như câu trả lời của Majenko chỉ ra, bạn cũng sẽ muốn ghép các chân MISO (master in Slave out) và tháo gỡ các chân MOSI (master out Slave in).
John R. Strohm

Không, bạn demultiplex nô lệ chọn và bus các dòng MISO và MOSI. Điểm chung của SS là bạn có thể kết nối tất cả các MOSI lại với nhau và, với các thiết bị nô lệ chính xác, buộc tất cả các dòng MISO lại với nhau.
dùng2943160

4

Một lời cảnh báo khi bạn đang sử dụng nhiều thiết bị SPI trên một xe buýt:

  • Điện dung đầu vào.

Số lượng thiết bị đó sẽ đặt một lượng lớn điện dung trên xe buýt. Trừ khi bạn thực hiện các biện pháp phòng ngừa, nó sẽ hạn chế nghiêm trọng tần số bus tối đa của bạn, và do đó tốc độ bạn có thể cập nhật nội dung hiển thị, v.v. (Về cơ bản, điện dung đầu vào được kết hợp với trở kháng đầu ra của các chân IO của MCU tạo thành bộ lọc thông thấp chuyển tần số cao hơn sóng vuông thành nhiều hơn giống như sóng hình sin, mà SPI không thích - nó gây rối với thời gian).

Nếu bạn hài lòng sử dụng tốc độ liên lạc thấp hơn thì tốt thôi - tuy nhiên tôi sẽ khuyên bạn nên chia bus thành một số phân đoạn nhỏ hơn và đệm từng tín hiệu SCK và MOSI để giữ điện dung trên mỗi phân đoạn ở mức hợp lý. Một cách khác là sử dụng bộ đệm ổ đĩa dòng cao duy nhất để giảm trở kháng đầu ra của các chân SCK và MOSI.


2
Khá gợi ý. Tôi rất muốn chia các bus trên bộ đệm. Điều này sẽ giữ cho dòng điện cực đại thấp hơn nhiều (chỉ có một xe buýt tại thời điểm cần chuyển đổi) làm giảm tiếng ồn và các vấn đề tách rời.
carloc

1

NO giới hạn về số lượng các thiết bị SPI có thể được nối với nhau để một SPI đơn, giả định rằng có đủ IOs để lựa chọn thiết bị phù hợp.

Nhưng thực tế có thể có một số khó khăn khi số lượng nhiều hơn ở tốc độ cao hơn. Nhưng đó là hiếm.

Bạn có thể kết nối MISO MOSI và SCK song song với tất cả các thiết bị. Nhưng bạn nên kết nối GPIO của bộ điều khiển với pin SS (chọn nô lệ) theo một cách.

Chỉ sử dụng bộ mở rộng GPIO hoặc bộ ghép kênh nếu số lượng GPIO trên bộ điều khiển bị hạn chế

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.