Raspberry Pi รองรับความถี่ SPI ใดบ้าง?


22

อะไรSPIความถี่ไม่สนับสนุน Raspberry Pi?

นอกจากนี้:

  • พวกเขาทั้งหมดได้รับการสนับสนุนโดยไดรเวอร์ bootc.net SPIหรือไม่
  • มีสิ่งใดเพิ่มเติมที่ฉันควรระวังเมื่อพยายามสื่อสารกับชิปอื่นผ่าน SPI หรือไม่

คำตอบ:


21

Raspberry Pi SPI ทำงานที่ความเร็วสัญญาณนาฬิกา APB ซึ่งเทียบเท่ากับความเร็วสัญญาณนาฬิกาหลักที่ 250 MHz สามารถหารด้วยเลขคู่ใด ๆ จาก 2 ถึง 65536สำหรับความเร็วที่ต้องการ ระบุเอกสารข้อมูลที่ตัวหารจะต้องเป็นอำนาจของทั้งสอง แต่นี้ไม่ถูกต้อง ตัวเลขคี่จะถูกปัดเศษลงและ 0 (หรือ 1) เท่ากับ 65536 ตัวหารที่เล็กกว่า 2 จึงเป็นไปไม่ได้

ทำให้ช่วงความถี่อยู่ระหว่าง 3.814 kHz ถึง 125 MHz โดยมี 32768 ขั้นตอน

(มีข้อมูลที่ผิดมากในเรื่องนี้ แต่ผลลัพธ์เหล่านี้ได้รับการยืนยันโดยการทดลองโปรดกระจายคำ)


1
ฉันคิดว่าคำตอบนี้ควรจะอยู่ด้านบน
Jon Watte

คุณแน่ใจเกี่ยวกับเรื่องนี้? กอร์ดอนอ้างว่าในขณะที่คุณสามารถป้อนหมายเลขใด ๆ ก็ได้พลังของสองอย่างเท่านั้นที่สร้างความแตกต่าง: การทำความเข้าใจ SPI บนราสเบอร์รี่ Pi | โครงการ Gordons
scruss

3
ฉันทดสอบมันด้วยออสซิลโลสโคป ฉันคิดว่าปัญหาของกอร์ดอนคือเขาใช้เคอร์เนลไดรเวอร์ซึ่งทำให้ความเร็วสัญญาณนาฬิกาเป็นปัญหาแทนที่จะสั่งการตัวประมวลผลโดยตรงโดยไม่ต้องใช้ไดรเวอร์เคอร์เนล
Nakedible

2
ฟอรั่ม - กระทู้นี้ให้ข้อมูลเพิ่มเติมเพื่อพิสูจน์คำตอบของ Nakedible: raspberrypi.org/phpBB3/ …
Nippey

5

SPI สามารถทำงานที่ความเร็วสัญญาณนาฬิกาหลักหรือแบ่งออกเป็นอุปกรณ์ต่อพ่วงที่ช้าลง นาฬิกาหลักคือ 250 MHz ตัวแบ่งสามารถตั้งค่าได้สองกำลัง - ตั้งแต่ 2 ^ 0 ไปจนถึง 2 ^ 16 ซึ่งหมายความว่ารองรับความถี่ SPI จาก 3.8 kHz ถึง 250 MHz

แหล่งที่มา:


1
อาจจะ - Farhad จัดหาจากเอกสารข้อมูลทางเทคนิคสำหรับ BCM2835 ซึ่งเป็น SoC จริงสำหรับ RPi ในขณะที่การอ้างอิงของฉันสำหรับ BCM2708 ซึ่งเป็นเพียงส่วนหนึ่งของ SoC แหล่งที่มาอาจมาบรรจบกัน ... แต่จากนั้นอาจไม่มารวมกันอีกครั้ง ดังนั้นฉันคิดว่าจะเป็นการดีกว่าที่จะรักษาแหล่งข้อมูลสำรองไว้ในตอนนี้
Maria Zverina

1
โอ้และ area51 แสดงรายการเราว่ามีคำตอบ 1.7 ข้อต่อคำถามและรัฐ "2.5 คำตอบต่อคำถามนั้นดีเพียง 1 คำตอบต่อคำถามที่ต้องการงานบางอย่างในเว็บไซต์ที่ดีต่อสุขภาพคำถามจะได้รับคำตอบหลายคำตอบ :-)
Maria Zverina

1
คำตอบที่ไม่ถูกต้อง: 2 ^ 0 ไม่ได้รับการสนับสนุนและตัวหารไม่จำเป็นต้องมีกำลังสอง
Nakedible

1
@Nakedible คุณสามารถให้แหล่งที่มาสำหรับงบของคุณหรือไม่
Maria Zverina

1
แผ่นข้อมูล bcm2835 ยืนยันจุด 2 ^ 0 raspberrypi.org/wp-content/uploads/2012/02/…สิ่งนี้ได้รับการยืนยันโดยกำหนดในไลบรารี bcm2835 open.com.au/mikem/bcm2835สำหรับอำนาจที่ไม่ใช่ของตัวหารสองตัวแผ่นข้อมูล errata กล่าวถึงความเป็นไปได้ที่หลาย ๆ ของ 2 elinux.org/BCM2835_datsheet_errataนอกจากนี้ยังมีการโพสต์ในฟอรัมบางแห่งที่ดูเหมือนว่าจะมีผลคูณของ 2 ทั้งหมดนี้ได้รับการยืนยันโดยการทดสอบเอาต์พุต SPI บนฮาร์ดแวร์จริง ดูคำตอบของฉันด้านล่างซึ่งระบุสิ่งนี้อย่างแน่นอน
Nakedible

4

แผ่นข้อมูลของ BCM2835กล่าวว่าต่อไปนี้ในหน้า 120: ค่าของการลงทะเบียนนาฬิกาของบล็อก SPI ที่มี

BC Clock Divider SCLK = แกนนาฬิกา / CDIV หาก CDIV ถูกตั้งค่าเป็น 0 ตัวหารคือ 65536 ตัวหารจะต้องมีกำลังเป็น 2 ตัวเลขคี่จะปัดเศษลง อัตรานาฬิกา SPI สูงสุดของนาฬิกา APB

ฉันไม่พบการอ้างอิงถึงความถี่สูงสุดของ APB บัสฉันคิดว่านั่นเป็นส่วนหนึ่งของเอกสาร ARM11 ไม่ใช่ SoC นี้


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 ล้มเหลว André


1
ฉันวิ่งได้ที่ 32MHz = 32,000KHz ฉันเคยเห็นมันพูดถึงที่นี่ว่านี่เป็นข้อ จำกัด ในทางปฏิบัติ ฉันกำลังใช้เฟิร์มแวร์ RPi ล่าสุดบน Raspbian hard float ถ้านั่นสร้างความแตกต่าง
dodgy_coder

การมี RPi 3 ทำการทดสอบที่ 60MHz สำเร็จ
ว.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.