อะไรSPIความถี่ไม่สนับสนุน Raspberry Pi?
นอกจากนี้:
- พวกเขาทั้งหมดได้รับการสนับสนุนโดยไดรเวอร์ bootc.net SPIหรือไม่
- มีสิ่งใดเพิ่มเติมที่ฉันควรระวังเมื่อพยายามสื่อสารกับชิปอื่นผ่าน SPI หรือไม่
อะไรSPIความถี่ไม่สนับสนุน Raspberry Pi?
นอกจากนี้:
คำตอบ:
Raspberry Pi SPI ทำงานที่ความเร็วสัญญาณนาฬิกา APB ซึ่งเทียบเท่ากับความเร็วสัญญาณนาฬิกาหลักที่ 250 MHz สามารถหารด้วยเลขคู่ใด ๆ จาก 2 ถึง 65536สำหรับความเร็วที่ต้องการ ระบุเอกสารข้อมูลที่ตัวหารจะต้องเป็นอำนาจของทั้งสอง แต่นี้ไม่ถูกต้อง ตัวเลขคี่จะถูกปัดเศษลงและ 0 (หรือ 1) เท่ากับ 65536 ตัวหารที่เล็กกว่า 2 จึงเป็นไปไม่ได้
ทำให้ช่วงความถี่อยู่ระหว่าง 3.814 kHz ถึง 125 MHz โดยมี 32768 ขั้นตอน
(มีข้อมูลที่ผิดมากในเรื่องนี้ แต่ผลลัพธ์เหล่านี้ได้รับการยืนยันโดยการทดลองโปรดกระจายคำ)
SPI สามารถทำงานที่ความเร็วสัญญาณนาฬิกาหลักหรือแบ่งออกเป็นอุปกรณ์ต่อพ่วงที่ช้าลง นาฬิกาหลักคือ 250 MHz ตัวแบ่งสามารถตั้งค่าได้สองกำลัง - ตั้งแต่ 2 ^ 0 ไปจนถึง 2 ^ 16 ซึ่งหมายความว่ารองรับความถี่ SPI จาก 3.8 kHz ถึง 250 MHz
แหล่งที่มา:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/แผ่นข้อมูลของ BCM2835กล่าวว่าต่อไปนี้ในหน้า 120: ค่าของการลงทะเบียนนาฬิกาของบล็อก SPI ที่มี
BC Clock Divider SCLK = แกนนาฬิกา / CDIV หาก CDIV ถูกตั้งค่าเป็น 0 ตัวหารคือ 65536 ตัวหารจะต้องมีกำลังเป็น 2 ตัวเลขคี่จะปัดเศษลง อัตรานาฬิกา SPI สูงสุดของนาฬิกา APB
ฉันไม่พบการอ้างอิงถึงความถี่สูงสุดของ APB บัสฉันคิดว่านั่นเป็นส่วนหนึ่งของเอกสาร ARM11 ไม่ใช่ SoC นี้
ฉันทดสอบกับสิ่งที่เห็นใน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é