เพิ่มทาส SPI มากกว่า 2 ตัว


12

อย่างที่ฉันเห็นในโครงร่างมีทาส 2 ช่องทางคือ CS0 และ CS1 หมายความว่าฉันสามารถเชื่อมต่อ 2 ชิปเท่านั้นเช่น MCP3008 หรืออะไรบางอย่าง? หรือฉันสามารถแนบทาสมากขึ้นกับทาสทั้ง 2 ที่แนบมานี้ได้

แบบแผนของ Raspberry มีส่วนสนับสนุนหรืออะไรที่เหมือนกันกับแผนการเชื่อมต่อ SPI แบบทาสของ SPI ที่นำมาจาก Wikipedia หรือไม่? เป็นไปได้ไหมที่จะทำให้เป็นอย่างนี้?

ทาส SPI


"เป็นไปได้ไหมที่จะทำอย่างนี้?" -> ดูเหมือนว่ามันเป็นอย่างนั้นยกเว้น Pi มี CE0 และ CE1 แทนที่จะเป็น SS1, SS2, SS3 สายบัส SCLK, MOSI และ MISO มีการใช้งานร่วมกันระหว่างอุปกรณ์ทั้งหมดในทั้งสองกรณี
goldilocks

คำตอบ:


12

มีหลายวิธี

คุณสามารถจัดเรียงทาสที่เลือกบิตเช่นเชื่อมต่ออุปกรณ์ทั้งหมดด้วย MISO / MOSI / SCLK ที่ใช้ร่วมกันและกราวด์ แต่แยก CS เพียงแค่ตั้งค่า CS ต่ำสำหรับอุปกรณ์ที่คุณต้องการก่อนที่จะเรียกไดรเวอร์ SPI ไดรเวอร์ SPI จะพยายามตั้งค่า CS แต่จะไม่รู้ว่าไม่ได้เชื่อมต่ออยู่

Pis ที่มีส่วนหัวขยาย 40 พินมีอุปกรณ์ SPI อื่นที่มี 3 ชิปให้เลือก ห้องสมุดpigpioของฉันรองรับอุปกรณ์นั้น

คุณสามารถซอฟแวร์บิตปังโปรโตคอลทั้งหมด

คุณสามารถเพิ่มฮาร์ดแวร์เพิ่มเติมเพื่อสลับสาย CS ไปยังอุปกรณ์ใด ๆ ที่คุณต้องการ

ฯลฯ

แก้ไขเพื่อเพิ่ม

ไดรเวอร์ Raspberry Pi Linux SPI "เหมาะสม" กำลังอยู่ในระหว่างการตรวจสอบเพื่อให้สามารถใช้ gpios โดยพลการเป็น CS ได้

แก้ไขเพื่อเพิ่ม 2

ไดรเวอร์ Linux SPI ปัจจุบัน (spi_bcm2853) ได้รับการกล่าวถึงว่าสนับสนุน GPIO ตามอำเภอใจเมื่อเลือกชิป ดู / boot / overlays / README


1
"ยอมให้ gpios ตามอำเภอใจ" เป็นความคิดที่ดีในสิทธิของตนเองและสิ่งที่คนคาดหวังจากระบบฝังตัว ขอบคุณสำหรับการป้อนข้อมูล
Ghanima

โปรดอธิบายวิธีใช้ "อุปกรณ์ SPI อื่นที่มี 3 ชิปที่เลือก" กับห้องสมุด "pigpio" หรือลิงก์ไปยังตัวอย่างโค้ด สิ่งนี้จะช่วยตอบคำถาม ขอบคุณ
Alex

ดูabyz.co.uk/rpi/pigpio/cif.html#spiOpen GPIO 16-21 เชื่อมต่อกับ SPI เสริม ดูabyz.co.uk/rpi/pigpio/index.html#Type_3 อีกทางเลือกหนึ่งคือไดรเวอร์ Linux SPI ปัจจุบัน (spi_bcm2853) ได้รับการกล่าวถึงว่าสนับสนุน GPIO ตามอำเภอใจเมื่อเลือกชิป ดู / boot / overlays / README
joan

"Pis ที่มีส่วนหัวขยาย 40 พินมีอุปกรณ์ SPI อีกตัวพร้อมเลือกชิป 3 ตัว" มีเพียง 2 cs บนส่วนหัว 40 พิน

1
@meh มีให้เลือก 5 ชิปบนส่วนหัวของส่วนขยาย 40 พิน สองสำหรับ SPI หลักและ 3 สำหรับ SPI เสริม สัญญาณ SPI เสริมจะแสดงเป็นตัวพิมพ์เล็กที่abyz.co.uk/rpi/pigpio/index.html#Type_3
joan

3

คุณถูกต้องที่ RaspberryPi มีเพียงสองชิปที่เลือกที่บัส SPI (ดูที่นี่ ) และฉันคิดว่าไดรเวอร์ SPI และโซลูชันซอฟต์แวร์นั้นใช้ความจริงนั้น (แม้ว่าคำตอบ @ joan ชี้ให้เห็นว่าห้องสมุดที่แตกต่างกันจัดการมันแตกต่างกันและไดรเวอร์อย่างเป็นทางการจะอนุญาตให้ใช้ GPIO โดยพลการในการเลือกชิปในอนาคต)

อย่างไรก็ตามคุณต้องจำไว้ว่าการเลือกชิปไม่มีอะไรมากไปกว่าเอาท์พุทดิจิตอลเฉพาะของ Pi ดังนั้นคุณสามารถเลือกชิปได้มากขึ้นหากคุณใช้พิน GPIO ในกรณีนี้อย่างไรก็ตามซอฟต์แวร์ของคุณจะต้องรับผิดชอบในการตั้งพินที่เหมาะสมเพื่อจัดการปัญหา SPI ที่ถูกต้อง

เนื่องจากแนวคิดทั้งหมดของการเลือกชิปคือการเลือกใช้ร่วมกันเพียงทาสเดียวคุณจึงสามารถใช้วงจรดิจิตอลแบบง่าย ๆ เพื่อลดจำนวนของ GPIO ที่ "สูญเปล่า" (ถ้าคุณต้องการเพื่อวัตถุประสงค์อื่นเช่นกัน) บางอย่างเช่น 74HC / HCT138 สามารถใช้ตัวถอดรหัส / ตัวแยกสัญญาณ 3-to-8 line ในการแก้ปัญหา 8 ทาสผ่าน 8 ชิพที่เลือกด้วย 8 GPIO เพียง 3 พิน

โปรดทราบว่ารถประจำทางสาย SCLK และ MOSI นั้นถูกใช้ร่วมกันในหมู่ทาสทั้งหมด ดังนั้นเมื่อเสียบหลายทาสเข้ากับ Pi ตรวจสอบให้แน่ใจว่าไม่ให้โหลดพัดลมออกจาก Pi เกิน (ความต้านทานและความจุของอินพุตพินของทาส) - แม้ว่าจะมีปัญหาน้อยกว่าในปัจจุบันด้วยความจุต่ำและ ความต้านทานสูงของอินพุตดิจิตอล


1

มีจริงคำตอบที่ดีมากสำหรับการนี้โดยวิศวกร RPI, PhilE ในฟอรั่มราสเบอร์รี่ให้ดูที่ 28 กันยายน 2015 โดยทั่วไปเขาให้ตัวอย่างของการซ้อนทับทรีอุปกรณ์ที่ใช้ความเป็นไปได้กับ spi-bcm2835 เพื่อให้มี GPIOs ฟรีใด ๆ ในการเลือกชิป

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