Làm thế nào để Raspberry Pi phân biệt giữa nhiều bảng mở rộng?


8

Tôi mới bắt đầu sử dụng GPIO trên Raspberry Pi cho các dự án khác nhau. Có nhiều bảng đột phá cho RPi và nhiều bảng có ghim để xếp các bảng lên nhau. Có vẻ như các chân GPIO chỉ cần đi thẳng qua và tất cả các bảng có cùng một chân. Đối với tôi điều này có nghĩa là tất cả các bảng trong một ngăn xếp đều nhận được tín hiệu chính xác từ RPi và sẽ hoạt động tương ứng. Điều này có vẻ như điều này có thể tạo ra rất nhiều lỗi với các lệnh dành cho một bảng ảnh hưởng đến cách thức hoạt động của một bảng khác, nhưng rõ ràng điều này không xảy ra.

Vậy làm thế nào để Raspberry Pi biết bảng nào nhận được các lệnh cụ thể nào? Có một số loại lệnh khởi tạo mà chỉ một bảng cụ thể nhận ra và sau đó bắt đầu chấp nhận phần còn lại của các lệnh?


Đây cũng là thứ tôi thấy với các lá chắn arduino có thể xếp chồng và các nền tảng điện toán khác nhau.
cspirou 15/03/2015

Câu trả lời tôi e ngại là không có cách tiêu chuẩn nào để một bảng phát hiện bảng khác và tự cấu hình lại. Bạn sẽ phải kiểm tra các chi tiết của mỗi bảng trước khi mua và tự quyết định khả năng làm việc với nhau.
joan

Câu trả lời:


5

Máy tính sử dụng một hệ thống gọi là busing để kết nối nhiều thiết bị ngoại vi với CPU thông qua cùng một bộ dây. I2CSPI là ví dụ về các hệ thống bus được sử dụng với các chân GPIO pi, cho phép nhiều thiết bị trên cùng một chân vật lý (được quản lý bởi bus nội bộ) nhưng sử dụng các địa chỉ khác nhau . Địa chỉ là một sự trừu tượng được tạo ra bởi giao thức hệ thống xe buýt. Nó giống như cách bạn có thể có nhiều ứng dụng được nối mạng bằng cách sử dụng cùng một kết nối vật lý với internet, tất cả đều chạy đồng thời.

Ví dụ: nhìn vào RTC Pi Plus , một trong những bảng có thể xếp chồng từ liên kết ví dụ của bạn:

nhập mô tả hình ảnh ở đây

Lưu ý ở phía gần năm kết nối trong một hộp. Chúng tương ứng với các chân ở phía bên kia. Chúng được dán nhãn:

  • 5V = Nguồn, có thể chia sẻ với các thiết bị khác.
  • GND = Mặt đất, cũng phổ biến.
  • SDA và SCL = chân bus I2C; trên pi đó là chân 3 và 5. Bạn có thể có khá nhiều thiết bị trên bus I2C, tất cả đều sử dụng hai chân này để liên lạc.
  • SQW = Tôi tin rằng điều này là viết tắt của "sóng vuông" và có thể một trong những thành viên am hiểu điện tử hơn của chúng tôi sẽ để lại một bình luận tốt đẹp giải thích mục đích của nó.

Nói cách khác, hầu hết các chân không được sử dụng bởi bảng này. Họ chỉ ở đó để cho phép xếp chồng. Những cái mà nó sử dụng là tất cả (hoặc hầu hết, vẫn không biết về SQW) có thể chia sẻ đồng thời với các thiết bị khác.

Giới hạn thực sự để xếp chồng theo cách này sẽ là lượng điện năng có thể được cung cấp so với lượng được tiêu thụ, chứ không phải số lượng chân liên quan. Có thể nó sẽ trở thành một hạn chế nếu bạn bao gồm các bộ nguồn bổ sung, nhưng tôi nghĩ trước đó bạn phải di chuyển ngăn xếp ra bên ngoài và bắt đầu sử dụng thang để làm việc với nó. ;)


3

Bạn chỉ có thể có một bảng HAT nên không có vấn đề như vậy. Có một số bảng trong đó bạn có thể kết nối nhiều bảng nhưng đó không phải là bảng HAT.


1
HAT có thể không phải là điều chính xác để nói nhưng tôi đang nói về các bảng kết nối với các chân GPIO. Các trang web sau đây cho thấy ngăn xếp cao của bảng như vậy. abelectronics.co.uk Tôi có thể sửa đổi câu hỏi để xóa 'HAT'
cspirou 15/03/2015

1

Vậy làm thế nào để Raspberry Pi biết bảng nào nhận được các lệnh cụ thể nào?

Pi không thể biết. Bạn phải chắc chắn.

Vấn đề là, nếu bạn kết nối nhiều bảng mở rộng, bạn sẽ phải lưu ý rằng các đường tín hiệu không được sử dụng nhiều hơn một lần hoặc thực hiện sơ đồ bus có thể hoạt động với nhiều thiết bị chia sẻ một số dòng (như @goldilocks đã đề xuất). Để có được cảm giác làm thế nào điều này có thể được thực hiện, tôi khuyên bạn nên đọc trên bus ISA . Một cái gì đó có thể được thực hiện bằng cách sử dụng GPIO làm dòng dữ liệu và địa chỉ (và nếu một trong những nỗi đau).

Có một số loại lệnh khởi tạo mà chỉ một bảng cụ thể nhận ra và sau đó bắt đầu chấp nhận phần còn lại của các lệnh?

Trong khi các HAT không còn nghi ngờ gì nữa, sơ đồ nhận dạng mà họ sử dụng rất đáng để xem xét. Lưu ý rằng không có HAT xếp chồng * (trên mỗi Raspberry Pi Blog : HAT có thể xếp chồng được nêu trong cuộc thảo luận về thông số kỹ thuật - nhưng cuối cùng nó đã bị loại bỏ do sự gia tăng lớn về độ phức tạp của autoconfig và khả năng xảy ra lỗi người dùng. ). Vì vậy, tại bất kỳ thời điểm nào, chỉ có một HAT sẽ được kết nối, đọc EEPROM của nó và cung cấp thông tin của nó tại cây thiết bị.


* Có thể tạo mũ có thể xếp chồng lên nhau nếu chúng cùng loại và do đó không yêu cầu nhận dạng nhiều và khác nhau, ví dụ: Bộ điều khiển PWM / Servo 16 kênh Adaf nhung cho Raspberry Pi .

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.