Raspberry Pi hỗ trợ tần số SPI nào?


22

Có gì SPI tần số không hỗ trợ Raspberry Pi?

Ngoài ra:

  • Có phải tất cả đều được hỗ trợ bởi trình điều khiển SPI bootc.net ?
  • Có bất kỳ điều bổ sung nào tôi nên thận trọng khi cố gắng giao tiếp với một số chip khác thông qua SPI không?

Câu trả lời:


21

Raspberry Pi SPI chạy ở tốc độ xung nhịp APB, tương đương với tốc độ xung nhịp lõi, 250 MHz. Điều này có thể được chia cho bất kỳ số chẵn từ 2 đến 65536 cho tốc độ mong muốn. Bảng dữ liệu xác định rằng ước số phải là lũy thừa của hai, nhưng điều này không chính xác . Các số lẻ được làm tròn xuống và 0 (hoặc 1) tương đương với 65536. Do đó, một ước số nhỏ hơn 2 là không thể.

Điều này làm cho dải tần số nằm trong khoảng từ 3.814 kHz đến 125 MHz, với 32768 bước ở giữa.

(Đã có rất nhiều thông tin sai lệch về vấn đề này, nhưng những kết quả này đã được xác minh bằng thử nghiệm. Vui lòng truyền bá.)


1
Tôi nghĩ rằng câu trả lời này nên được đặt lên hàng đầu.
Jon Watte

Bạn có chắc về điều này? Gordon khẳng định rằng, trong khi bạn có thể cung cấp cho nó bất kỳ số chẵn nào, chỉ có hai sức mạnh thực sự tạo ra sự khác biệt: Hiểu SPI trên Raspberry Pi | Dự án Gordons
thảo luận

3
Tôi đã thử nghiệm điều này với một máy hiện sóng. Tôi nghĩ vấn đề với Gordon là anh ta sử dụng trình điều khiển kernel, điều này làm tăng tốc độ xung nhịp, thay vì chỉ huy trực tiếp bộ xử lý mà không sử dụng trình điều khiển kernel.
Khỏa thân

2
Diễn đàn-Chủ đề này cung cấp thêm thông tin để chứng minh câu trả lời của Nakedible: raspberrypi.org/phpBB3/,
Nippey

5

SPI có thể được chạy ở tốc độ xung nhịp lõi hoặc chia nhỏ cho các thiết bị ngoại vi chậm hơn. Xung nhịp lõi là 250 MHz. Bộ chia có thể được đặt thành bất kỳ lũy thừa nào của hai - từ 2 ^ 0 cho đến 2 ^ 16. Điều này có nghĩa là tần số SPI từ 3,8 kHz đến 250 MHz được hỗ trợ.

Nguồn:


1
Có lẽ - Farhad đang tìm nguồn cung ứng từ datasheets cho BCM2835, đây là SoC thực tế cho RPi trong khi tài liệu tham khảo của tôi là về BCM2708 chỉ là một phần của SoC. Các nguồn có thể hội tụ ... nhưng một lần nữa họ có thể không. Vì vậy, tôi nghĩ tốt hơn hết là bảo tồn các nguồn thay thế ngay bây giờ.
Maria Zverina

1
Oh và area51 liệt kê chúng tôi có 1,7 câu trả lời cho mỗi câu hỏi và cho biết "2,5 câu trả lời cho mỗi câu hỏi là tốt, chỉ có 1 câu trả lời cho một câu hỏi cần một số công việc. Trong một trang web lành mạnh, câu hỏi nhận được nhiều câu trả lời và câu trả lời tốt nhất được bình chọn lên đầu." :-)
Maria Zverina

1
Câu trả lời không chính xác: 2 ^ 0 không được hỗ trợ và bộ chia không cần phải là lũy thừa của hai.
Khỏa thân

1
@Nakenible bạn có thể cung cấp nguồn cho báo cáo của bạn?
Maria Zverina

1
Bảng dữ liệu bcm2835 xác nhận điểm 2 ^ 0. raspberrypi.org/wp-content/uploads/2012/02/ Khăn Điều này cũng được xác nhận bởi định nghĩa trong thư viện bcm2835. open.com.au/mikem/bcm2835 Đối với sức mạnh không phải của hai ước số, bảng dữ liệu errata đề cập rằng có thể có nhiều bội số. elinux.org/BCM2835_datasheet_errata Điều này cũng đã được đăng trên một số diễn đàn mà bất kỳ bội số của 2 dường như hoạt động. Tất cả điều này cũng đã được xác nhận bằng cách kiểm tra đầu ra SPI trên phần cứng thực. Xem câu trả lời của tôi dưới đây chỉ định chính xác điều này.
Khỏa thân

4

Bảng dữ liệu của BCM2835 cho biết như sau ở trang 120: Giá trị của thanh ghi đồng hồ của khối SPI chứa.

Bộ chia đồng hồ BC SCLK = Đồng hồ lõi / CDIV Nếu CDIV được đặt thành 0, số chia là 65536. Số chia phải là lũy thừa của 2. Số lẻ được làm tròn xuống. Tốc độ xung nhịp SPI tối đa là của đồng hồ APB.

Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về tần suất tối đa của bus APB, tôi nghĩ đó là một phần của tài liệu ARM11 chứ không phải SoC này.


1
Cảm ơn đã tham khảo; Tôi tin rằng trang là 156? CDIV dường như rộng 16b, vì vậy đi từ 1 đến 65536. "Đồng hồ lõi" có lẽ là 700 MHz? Vì vậy, chúng tôi sẽ nhận được phạm vi từ ~ 10,7kHz đến giới hạn APB bí ẩn?
akavel

1
Bạn rất hoan nghênh, nhưng tôi sợ đồng hồ này không phải là đồng hồ cốt lõi. Đó là bus APB: "APB được thiết kế để truy cập điều khiển băng thông thấp, ví dụ: giao diện đăng ký trên các thiết bị ngoại vi của hệ thống. Bus này có pha địa chỉ và dữ liệu tương tự như AHB, nhưng danh sách tín hiệu có độ phức tạp thấp, giảm nhiều (ví dụ: không có vụ nổ ). Nó phải hỗ trợ tín hiệu 32 bit và 66 MHz. "
FarhadA

4

Tôi đã thử nghiệm với những gì đã thấy trên http://www.brianhensley.net/2012/07/getting-spi-usiness-on-raspberry-pi.html và thay đổi tốc độ.

Tốc độ tối đa khi thử nghiệm vượt qua là 15 MHz = 15000KHz: Xem kết quả:

spi mode: 0
bits per word: 8
max speed: 15000000 Hz (15000 KHz)

FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D

Thử nghiệm ở 16 MHz không thành công. André


1
Của tôi chạy ok ở 32 MHz = 32.000KHz. Tôi đã thấy nó được đề cập ở đây rằng đây cũng là giới hạn thực tế. Tôi đang chạy firmware RPi mới nhất trên phao cứng Raspbian nếu điều đó tạo ra sự khác biệt.
dodgy_coder

Có RPi 3 chạy thử nghiệm đó ở 60 MHz thành công.
Vlad
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.