ฉันจะโยงเครื่องอ่านการ์ด SD นี้ไปยัง RaspberryPi ได้อย่างไร


11

ฉันต้องเพิ่มเครื่องอ่านการ์ด SD ตัวที่สองลงใน Raspberry Pi ของฉันสำหรับโครงการwww.samplerbox.org (RPi จะถูกฝังอยู่ในกล่องดังนั้นฉันจึงต้องใช้ตัวอ่าน - การ์ด SD)

นี่คือสิ่งที่ฉันต้องการใช้:

ป้อนคำอธิบายรูปภาพที่นี่

วิธีการเชื่อมต่อกับ RaspberryPi ผ่าน GPIO (ถ้าเป็นเช่นนั้นได้อย่างไร) ผ่านพอร์ต USB (ถ้าเป็นเช่นนั้นจะเชื่อมต่อหมุดเหล่านี้เข้ากับปลั๊ก USB มาตรฐานได้อย่างไร)

UPDATE : นี่คือหมุด 2 * 8 GND, 3V3, 5V, CS, MOSI, SCK, MISO, GND:

ป้อนคำอธิบายรูปภาพที่นี่


คุณวางแผนที่จะบูตจากการ์ด SD ภายนอกหรือไม่ หรือเป็น Pi ที่จะบูทจากการ์ด SD ภายใน การ์ด SD ภายนอกจะใช้ทำอะไร?
joan

@ ไม่ฉันไม่ได้วางแผนที่จะบูตมันการ์ด SD ภายนอกจะอยู่ที่นั่นเพื่อให้ผู้ใช้โหลด / บันทึกข้อมูลบางอย่าง ผู้ใช้จะไม่เข้าถึงการ์ด SD ภายใน (RPi ที่ฝังอยู่ในกล่อง) ทำความเข้าใจกับรูปภาพได้ง่ายขึ้น:
www.samplerbox.org

1
คุณสามารถช่วยตัวเองให้ยุ่งยากได้มากมายหากคุณเพียงแค่ให้แท่ง USB แก่ผู้ใช้เพื่อเป็นข้อมูล การใช้อินเทอร์เฟซการ์ด SD ตัวที่สองนั้นยากมาก เพียงแค่นำพอร์ต USB ออกมาด้านนอกกล่องของคุณ
joan

1
คุณยังสามารถใช้อะแดปเตอร์ SDCard เป็น USB ซึ่งเป็นการแลกเปลี่ยนระหว่างกัน SDCard USB adapterGoogle เพียง
user236012

4
แม้ว่าฉันจะเห็นด้วยว่าการใช้ USB Stick อาจจะง่ายกว่า แต่ก็ไม่ควรเชื่อมต่อการ์ด SD ได้ยาก รองรับ SD ทั้งหมดSPIและทำงานบน 3.3V (บอร์ดเหล่านี้จำนวนมากมีตัวแปลงระดับเพื่อเชื่อมต่อกับ 5V) ฉันได้ใช้อะแดปเตอร์ที่คล้ายกันใน Arduino และฉันจะลองกับ Pi มีซอฟต์แวร์ FAT สำหรับ Arduino (หมายเหตุฉันไม่คาดหวังว่าจะสามารถเข้าถึงได้ผ่านไดร์เวอร์เคอร์เนลมาตรฐาน)
Milliways

คำตอบ:


6

ดูเหมือนว่ามันเป็นอุปกรณ์ SPI คุณควรเปิดใช้งาน SPI ก่อนโดยใช้ raspi-config จากนั้นคุณจะต้องเดินสาย:

(Reader) GND  --  GND       (GPIO-Raspberry Pi2) 
         3V3  --  3.3 V (Pin 1)
         5V   --  NC
         CS   --  GPIO8 (Pin24)
         MOSI --  GPIO10 (Pin 19)
         SCK  --  GPIO11 (Pin 23)
         MISO --  GPIO9 (Pin 21)
         GND  -- NC

2
มีความคิดเกี่ยวกับวิธีการถ่ายโอนข้อมูลที่ดีกว่า 1 เมกะไบต์ / วินาทีด้วยเทคนิคดังกล่าวหรือไม่? มีวิธีอื่นนอกเหนือจากตัวอ่าน USB SD ที่สามารถให้ 10 MB / วินาทีได้หรือไม่?
Basj

ความเร็วสูงมีมากกว่าหนึ่งบรรทัดสำหรับข้อมูลการ์ด SD ดูเหมือนว่าคุณไม่มีที่นี่และไม่ใช่การตั้งค่าการเดินสายที่เรียบง่ายผ่านอินเทอร์เฟซ SPI
Alexey Vesnin

6

ราสเบอร์รี่ pi pinout

คุณควรเชื่อมต่อ GND, 5V และ 3V3 กับพินที่เหมาะสมบน pi จากนั้น MOSI และ MISO จะถูกทำเครื่องหมายในรูปภาพ SCK ควรเชื่อมต่อกับ SCLK (นี่คือนาฬิกา 10MHz ซึ่งควรถูกขับเคลื่อนด้วย pi) และสุดท้ายเชื่อมต่อ CS pin กับ CS0 (Chip-Select เพื่อให้คุณสามารถเชื่อมต่อ 2 SD หรือ อุปกรณ์ที่รองรับ SPI อื่น ๆ )

ตามคำตอบแรกของเธรดนี้หากคุณใช้เคอร์เนลเวอร์ชันที่สูงกว่า 3.2.20 ควรสนับสนุนฮาร์ดแวร์ SPI บนบอร์ดและควรให้ปริมาณงาน 1MB / s ด้วยโหลด CPU น้อยซึ่งน่าประทับใจ

หากเคอร์เนลของคุณเป็นรุ่นที่สูงกว่า แต่ถูกคอมไพล์โดยไม่มีการสนับสนุนอุปกรณ์ SPI คุณควรคอมไพล์ใหม่ด้วยการกำหนดค่าที่เหมาะสม (ดูเธรดที่กล่าวถึงอีกครั้ง)


2
ขอบคุณสำหรับคำตอบนี้! แต่ 1 MB / s ต่ำเกินไป (เมื่อเทียบกับเครื่องอ่าน USB) และสำหรับโครงการของฉันฉันต้องโหลด 100MB ในเวลาสั้น ๆ (เป็นไปได้จากเครื่องอ่าน RPi microSD เป็นไปได้จากเครื่องอ่านการ์ด SD USB ดังนั้น ฉันต้องการแบบเดียวกันจากเครื่องอ่าน PCB SD นี้)
Basj

คุณจะไม่เห็นอัตราที่เร็วขึ้นด้วยเครื่องอ่าน SD นี้และการรวมกันของ pi 1MB / s สามารถทำได้โดยใช้ฮาร์ดแวร์อินเตอร์เฟส SPI เฉพาะบน pi หากคุณใช้ตัวเชื่อมต่อ GPIO อื่น ๆ คุณจะต้องใช้งานกับ CPU เพื่อให้ได้อัตราที่ต่ำกว่ามากประมาณ 180KB / s หากคุณต้องการอัตราที่เร็วกว่าให้ใช้ตัวอ่าน USB ตามที่คนอื่นแนะนำซึ่งฉันจำได้ว่ามีขนาดประมาณ 4MB / s แต่บางทีคนอื่นอาจให้ตัวเลขที่แม่นยำกว่า
Yigal

1
โอเค ... น่าเศร้าที่เราไม่สามารถรับมากกว่า 1MB ต่อวินาทีด้วยเครื่องอ่านนี้ มันเป็นไปได้ที่จะเปิดอ่านนี้ลงในเครื่องอ่าน USB SD (มีส่วนประกอบ additionnal?)
Basj

1
คุณสามารถรับโมดูลที่จัดการ SPI (และโปรโตคอลอื่น ๆ ) ไปยัง USB เช่นเดียวกับที่ราคา $ 20: digikey.co.il/product-search/en?v=768&mpart=VA800A-SPIแต่ฉันจะไม่ทำอย่างนั้น ฉันไม่ได้อ่านสเปคดังนั้นฉันไม่รู้ว่าโมดูลระบุว่าตัวเองเป็นคลาสที่เก็บข้อมูลหรือคลาส USB ทั่วไปอื่น ๆ ซึ่งในกรณีนี้คุณจะต้องห่อด้วยไดรเวอร์ของคุณเอง มันจะง่ายกว่ามากที่จะได้เครื่องอ่านการ์ด SD USB แบบง่าย
Yigal

1
แน่นอน แต่ฉันต้องการตัวอ่านการ์ด SD USB ที่สามารถติดตั้งบน PCB (ไม่เพียง แต่สำหรับฉันเท่านั้น แต่โครงการsamplerbox.orgของฉันจะเป็น opensource ดังนั้นฉันต้องการให้มันง่ายสำหรับทุกคนในการจัดหาส่วนประกอบ)
Basj

2

โพสต์บล็อกการสอนที่ยอดเยี่ยมได้รับการโพสต์ที่นี่

http://blogsmayan.blogspot.com/p/interfacing-sd-card.html

โปรดตรวจสอบรายละเอียดการโพสต์เพื่อหาคำตอบที่สมบูรณ์เพื่อเชื่อมต่อเครื่องอ่านการ์ด SD ของคุณกับ Pi

มีวิดีโอสหายของ You Tube ที่นี่:

https://www.youtube.com/watch?v=ihqXzQgaIaw


บทความเด็ด ๆ ฉันเพิ่งดูไปอย่างรวดเร็วมีบางอย่างเกี่ยวกับอัตราการถ่ายโอน @ Kolban หรือไม่
Basj

1

ฉันจะให้คำตอบที่ดีที่สุดเท่าที่ทำได้

ดูเหมือนว่าผู้อ่านจะมีเครื่องหมายอยู่ติดกับหมุด GPIO เชื่อมต่อพวกเขาเข้ากับหมุดที่สอดคล้องกันบน RPI โดยใช้สายจัมเปอร์หญิง - หญิง (หรือวิธีการถาวรสำหรับแอปพลิเคชันของคุณ) หากพวกเขาไม่มีพินที่เกี่ยวข้องให้ติดเข้ากับพินอิสระที่ pi และจดบันทึก

API สำหรับผู้อ่านอาจต้องมีการกำหนดค่าเพิ่มเติมเพื่ออนุญาตให้ถ่ายโอนไฟล์ผ่านหมุดอื่น ๆ แต่ฉันไม่สามารถช่วยคุณได้ในส่วนนี้

หวังว่านี่น่าจะใช้ได้นะ!


ฉันเพิ่มป้ายหมุดและรูปถ่ายในคำถาม เป็นไปได้ที่จะเปลี่ยนจากพินเหล่านี้เป็น GPIO หรือไปยัง USB?
Basj

1

ตามคำอธิบายความต้องการของคุณและการเยี่ยมชมหน้าโครงการของคุณทางเลือกอื่นคือการทำให้ RPi ของคุณบูตจากแท่ง USB และใช้เครื่องอ่านการ์ดภายในเพื่อรับบัตรจากผู้ใช้


ขอบคุณสำหรับคำตอบ. มันอาจเป็นความคิดเราต้องคิดเกี่ยวกับมัน การใส่ / ถอดการ์ด microSD อาจเล็กเกินไป / ยากสำหรับการใช้งานทุกวัน สำหรับโครงการของฉันฉันต้องการให้มีประโยชน์เท่ากับการใส่ / ถอดการ์ด SD จากกล้องดิจิตอล ฉันจะคิดเกี่ยวกับมัน ... PS: คุณสามารถเพิ่มลิงค์เกี่ยวกับ "วิธีการปิดการติด USB" ใน RPi ในคำตอบของคุณสำหรับการอ้างอิงในอนาคต?
Basj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.