Raspberry Pi는 어떤 SPI 주파수를 지원합니까?


22

Raspberry Pi는 어떤 SPI 주파수를 지원합니까?

또한 :

  • 그것들은 모두 bootc.net SPI 드라이버 에서 지원 됩니까?
  • SPI를 통해 다른 칩과 통신하려고 할 때주의해야 할 추가 사항이 있습니까?

답변:


21

Raspberry Pi SPI는 APB 클럭 속도에서 실행되는데 이는 코어 클럭 속도 인 250MHz에 해당합니다. 원하는 속도로 2에서 65536 사이의 짝수 로 나눌 수 있습니다 . 데이터 시트는 제수가 2의 거듭 제곱이어야한다고 지정하지만 이는 올바르지 않습니다 . 홀수는 반올림되며 0 (또는 1)은 65536과 같습니다. 따라서 2보다 작은 제수는 불가능합니다.

이로 인해 주파수 범위는 3.814 kHz ~ 125 MHz이며 32768 단계 사이에 있습니다.

(이 문제에 대해 많은 잘못된 정보가 있었지만 이러한 결과는 실험을 통해 검증되었습니다. 단어를 전파하십시오.)


1
이 답변이 맨 위에 있어야한다고 생각합니다.
Jon Watte

이거 확실하니? 고든은 아무리 짝수라도 먹이를 줄 수 있지만 실제로는 2의 거듭 제곱 만 차이가 있다고 주장합니다 . Raspberry Pi의 SPI 이해 | Gordons Projects
scruss

3
오실로스코프로 이것을 테스트했습니다. Gordon의 문제는 커널 드라이버를 사용하지 않고 프로세서를 직접 명령하는 대신 클럭 속도를 조절하는 커널 드라이버를 사용한다는 것입니다.
Nakedible

2
이 포럼 스레드는 Nakedible의 답변을 증명하기위한 추가 정보를 제공합니다. raspberrypi.org/phpBB3/…
Nippey

5

SPI는 코어 클럭 속도로 실행하거나 느린 주변 장치를 위해 나눌 수 있습니다. 코어 클럭은 250MHz입니다. 디바이더는 2 ^ 0에서 최대 2 ^ 16까지 2의 거듭 제곱으로 설정할 수 있습니다. 이는 3.8kHz ~ 250MHz의 SPI 주파수가 지원됨을 의미합니다.

출처 :


1
아마-Farhad는 RPi의 실제 SoC 인 BCM2835에 대한 데이터 시트에서 소싱하는 반면, 내 참조는 SoC의 일부인 BCM2708에 대한 것입니다. 소스는 수렴 될 수 있지만 다시는 그렇지 않을 수 있습니다. 따라서 지금은 대체 소스를 유지하는 것이 좋습니다.
Maria Zverina 2016 년

1
Oh와 area51은 우리에게 질문 당 1.7 답변을 제시하고 "질문 당 2.5 답변은 좋으며, 질문 당 1 답변 만 약간의 작업이 필요합니다. 건강한 사이트에서는 질문에 여러 답변을 받고 최고의 답변이 맨 위에 투표됩니다"라고 말합니다. :-)
Maria Zverina 2016 년

1
잘못된 답변 : 2 ^ 0은 지원되지 않으며 나누기는 2의 거듭 제곱 일 필요는 없습니다.
Nakedible 2016

1
@Nakedible 당신은 당신의 진술에 대한 소스를 제공 할 수 있습니까?
마리아 Zverina

1
bcm2835 데이터 시트는 2 ^ 0 포인트를 확인합니다. raspberrypi.org/wp-content/uploads/2012/02/… bcm2835 라이브러리에 정의되어 있습니다. open.com.au/mikem/bcm2835 2 제수의 비 승수 에 대해서는 데이터 시트 정오표에 2의 배수가있을 수 있다고 언급되어 있습니다. elinux.org/BCM2835_datasheet_errata 또한 2의 배수가 효과가있는 것으로 보이는 일부 포럼에 게시되었습니다. 이 모든 것은 실제 하드웨어에서 SPI 출력을 테스트 하여 확인되었습니다 . 이것을 정확하게 지정하는 아래의 대답을 참조하십시오.
Nakedible

4

BCM2835데이터 시트에는 120 페이지의 다음 내용이 나와 있습니다. SPI 블록의 클럭 레지스터 값에 포함되어 있습니다.

BC Clock Divider SCLK = 코어 클록 / CDIV CDIV가 0으로 설정되면 제수는 65536입니다. 제수는 2의 거듭 제곱이어야합니다. 홀수는 내림합니다. 최대 SPI 클럭 속도는 APB 클럭입니다.

APB 버스의 최대 주파수가 무엇인지에 대한 참조를 찾을 수 없습니다.이 SoC가 아닌 ARM11 설명서의 일부라고 생각합니다.


1
참조 주셔서 감사합니다; 페이지가 156이라고 생각하십니까? CDIV는 폭이 16b 인 것처럼 보이므로 1에서 65536으로갑니다. "코어 클럭"은 아마도 700MHz입니까? 그래서 ~ 10.7kHz에서 신비한 APB 한도까지의 범위를 얻습니까?
akavel

1
당신은 매우 환영하지만이 시계가 핵심 시계가 아닌 것을 두려워합니다. APB 버스입니다. "APB는 시스템 주변 장치의 레지스터 인터페이스와 같은 저 대역폭 제어 액세스를 위해 설계되었습니다.이 버스는 AHB와 유사한 주소 및 데이터 위상을 갖지만, 복잡성이 감소 된 복잡한 신호 목록 (예 : 버스트 없음) 32 비트 및 66MHz 신호를 지원해야합니다. "
FarhadA

4

http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html 에 표시된대로 테스트 하고 속도를 변경했습니다.

테스트 통과시 최대 속도는 15MHz = 15000KHz입니다. 결과 참조 :

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

16MHz에서의 테스트가 실패했습니다. 안드레


1
광산은 32MHz = 32,000KHz에서 정상적으로 작동했습니다. 나는 이것이 실제 한계라고 여기 에서 언급 한 것을 보았다 . 차이가 나는 경우 Raspbian 하드 플로트에서 최신 RPi 펌웨어를 실행하고 있습니다.
dodgy_coder

RPi 3이 60MHz에서 해당 테스트를 성공적으로 실행했습니다.
블라드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.