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ó gì SPI tần số không hỗ trợ Raspberry Pi?
Ngoài ra:
Câu trả lời:
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á.)
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:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cBả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.
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é