สารบัญ:
- ขั้นตอนที่ 1: SERIAL VS. การสื่อสารแบบคู่ขนาน
- ขั้นตอนที่ 2:
- ขั้นตอนที่ 3:
- ขั้นตอนที่ 4: บทนำสู่การสื่อสาร SPI
- ขั้นตอนที่ 5:
- ขั้นตอนที่ 6:
- ขั้นตอนที่ 7:
- ขั้นตอนที่ 8: SPI ทำงานอย่างไร
- ขั้นตอนที่ 9:
- ขั้นตอนที่ 10:
- ขั้นตอนที่ 11:
- ขั้นตอนที่ 12:
- ขั้นตอนที่ 13: ข้อดีและข้อเสียของ SPI
วีดีโอ: พื้นฐานของโปรโตคอลการสื่อสาร SPI: 13 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
เมื่อคุณเชื่อมต่อไมโครคอนโทรลเลอร์กับเซ็นเซอร์ จอแสดงผล หรือโมดูลอื่นๆ คุณเคยคิดบ้างไหมว่าอุปกรณ์ทั้งสองคุยกันอย่างไร? พวกเขาพูดอะไรกันแน่? พวกเขาจะเข้าใจกันได้อย่างไร?
การสื่อสารระหว่างอุปกรณ์อิเล็กทรอนิกส์ก็เหมือนการสื่อสารระหว่างมนุษย์ ทั้งสองฝ่ายต้องพูดภาษาเดียวกัน ในอุปกรณ์อิเล็กทรอนิกส์ ภาษาเหล่านี้เรียกว่าโปรโตคอลการสื่อสาร โชคดีสำหรับเรา มีโปรโตคอลการสื่อสารเพียงไม่กี่อย่างที่เราจำเป็นต้องรู้เมื่อสร้างโครงการอิเล็กทรอนิกส์ DIY ส่วนใหญ่ ในบทความชุดนี้ เราจะพูดถึงพื้นฐานของสามโปรโตคอลที่พบบ่อยที่สุด: Serial Peripheral Interface (SPI), Inter-Integrated Circuit (I2C) และการสื่อสารที่ขับเคลื่อนด้วย Universal Asynchronous Receiver/Transmitter (UART) อันดับแรก เราจะเริ่มต้นด้วยแนวคิดพื้นฐานบางประการเกี่ยวกับการสื่อสารทางอิเล็กทรอนิกส์ จากนั้นจึงอธิบายรายละเอียดว่า SPI ทำงานอย่างไร ในบทความถัดไป เราจะพูดถึงการสื่อสารที่ขับเคลื่อนด้วย UART และในบทความที่สาม เราจะพูดถึง I2C SPI, I2C และ UART ค่อนข้างช้ากว่าโปรโตคอลเช่น USB, อีเธอร์เน็ต, บลูทูธ และ WiFi แต่ใช้งานได้ง่ายกว่ามาก และใช้ทรัพยากรฮาร์ดแวร์และระบบน้อยลง SPI, I2C และ UART เหมาะอย่างยิ่งสำหรับการสื่อสารระหว่างไมโครคอนโทรลเลอร์และระหว่างไมโครคอนโทรลเลอร์และเซ็นเซอร์ โดยไม่จำเป็นต้องถ่ายโอนข้อมูลความเร็วสูงจำนวนมาก
ขั้นตอนที่ 1: SERIAL VS. การสื่อสารแบบคู่ขนาน
อุปกรณ์อิเล็กทรอนิกส์คุยกันโดยการส่งข้อมูลบิตผ่านสายไฟที่เชื่อมต่อระหว่างอุปกรณ์ต่างๆ บิตเป็นเหมือนตัวอักษรในหนึ่งคำ ยกเว้นแทนที่จะเป็น 26 ตัวอักษร (ในตัวอักษรภาษาอังกฤษ) บิตนั้นเป็นเลขฐานสองและสามารถเป็นได้เพียง 1 หรือ 0 เท่านั้น บิตจะถูกถ่ายโอนจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งโดยการเปลี่ยนแปลงอย่างรวดเร็วของแรงดันไฟฟ้า ในระบบที่ทำงานที่ 5 V 0 บิตจะได้รับการสื่อสารเป็นพัลส์สั้นที่ 0 V และ 1 บิตจะได้รับการสื่อสารโดยพัลส์สั้น 5 V
บิตของข้อมูลสามารถส่งได้ทั้งในรูปแบบขนานหรือแบบอนุกรม ในการสื่อสารแบบคู่ขนาน บิตของข้อมูลจะถูกส่งทั้งหมดพร้อมกัน โดยผ่านสายแยกกัน แผนภาพต่อไปนี้แสดงการส่งแบบคู่ขนานของตัวอักษร "C" ในรูปแบบไบนารี (0100011):
ขั้นตอนที่ 2:
ในการสื่อสารแบบอนุกรม บิตจะถูกส่งทีละตัวผ่านสายเดี่ยว แผนภาพต่อไปนี้แสดงการส่งแบบอนุกรมของตัวอักษร “C” ในรูปแบบไบนารี (0100011):
ขั้นตอนที่ 3:
ขั้นตอนที่ 4: บทนำสู่การสื่อสาร SPI
SPI เป็นโปรโตคอลการสื่อสารทั่วไปที่ใช้โดยอุปกรณ์ต่างๆ ตัวอย่างเช่น โมดูลการ์ด SD โมดูลเครื่องอ่านการ์ด RFID และเครื่องส่ง/ตัวรับสัญญาณไร้สาย 2.4 GHz ทั้งหมดใช้ SPI เพื่อสื่อสารกับไมโครคอนโทรลเลอร์
ข้อดีอย่างหนึ่งของ SPI คือสามารถถ่ายโอนข้อมูลได้โดยไม่หยุดชะงัก สามารถส่งหรือรับบิตจำนวนเท่าใดก็ได้ในสตรีมต่อเนื่อง ด้วย I2C และ UART ข้อมูลจะถูกส่งเป็นแพ็กเก็ต โดยจำกัดจำนวนบิตที่ระบุ เงื่อนไขเริ่มต้นและหยุดกำหนดจุดเริ่มต้นและจุดสิ้นสุดของแต่ละแพ็กเก็ต ดังนั้นข้อมูลจึงถูกขัดจังหวะระหว่างการส่ง อุปกรณ์ที่สื่อสารผ่าน SPI อยู่ในความสัมพันธ์แบบมาสเตอร์-สเลฟ มาสเตอร์เป็นอุปกรณ์ควบคุม (โดยปกติคือไมโครคอนโทรลเลอร์) ในขณะที่สเลฟ (โดยปกติคือเซ็นเซอร์ จอแสดงผล หรือชิปหน่วยความจำ) รับคำสั่งจากมาสเตอร์ การกำหนดค่า SPI ที่ง่ายที่สุดคือระบบมาสเตอร์เดี่ยว ระบบทาสเดี่ยว แต่ต้นแบบหนึ่งรายการสามารถควบคุมได้มากกว่าหนึ่งทาส (เพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง)
ขั้นตอนที่ 5:
ขั้นตอนที่ 6:
MOSI (เอาต์พุตหลัก / อินพุตสเลฟ) – สายสำหรับมาสเตอร์เพื่อส่งข้อมูลไปยังสเลฟ
MISO (Master Input/Slave Output) – เส้นสำหรับสเลฟเพื่อส่งข้อมูลไปยังมาสเตอร์
SCLK (นาฬิกา) – เส้นสำหรับสัญญาณนาฬิกา
SS/CS (Slave Select/Chip Select) – ไลน์สำหรับมาสเตอร์เพื่อเลือกสเลฟที่จะส่งข้อมูลไปยัง
ขั้นตอนที่ 7:
*ในทางปฏิบัติ จำนวนทาสถูกจำกัดโดยความจุโหลดของระบบ ซึ่งลดความสามารถของมาสเตอร์ในการสลับระหว่างระดับแรงดันไฟฟ้าอย่างแม่นยำ
ขั้นตอนที่ 8: SPI ทำงานอย่างไร
นาฬิกา
สัญญาณนาฬิกาซิงโครไนซ์เอาต์พุตของบิตข้อมูลจากมาสเตอร์ไปยังการสุ่มตัวอย่างบิตโดยสเลฟ ข้อมูลหนึ่งบิตจะถูกถ่ายโอนในแต่ละรอบสัญญาณนาฬิกา ดังนั้นความเร็วของการถ่ายโอนข้อมูลจะถูกกำหนดโดยความถี่ของสัญญาณนาฬิกา การสื่อสาร SPI เริ่มต้นโดยต้นแบบเสมอ เนื่องจากต้นแบบกำหนดค่าและสร้างสัญญาณนาฬิกา
โปรโตคอลการสื่อสารใดๆ ที่อุปกรณ์แบ่งปันสัญญาณนาฬิกาเรียกว่าซิงโครนัส SPI เป็นโปรโตคอลการสื่อสารแบบซิงโครนัส นอกจากนี้ยังมีวิธีการแบบอะซิงโครนัสที่ไม่ใช้สัญญาณนาฬิกา ตัวอย่างเช่น ในการสื่อสาร UART ทั้งสองฝ่ายจะถูกตั้งค่าเป็นอัตราบอดที่กำหนดไว้ล่วงหน้าซึ่งกำหนดความเร็วและระยะเวลาของการส่งข้อมูล
สัญญาณนาฬิกาใน SPI สามารถแก้ไขได้โดยใช้คุณสมบัติของขั้วนาฬิกาและเฟสนาฬิกา คุณสมบัติทั้งสองนี้ทำงานร่วมกันเพื่อกำหนดว่าบิตจะถูกส่งออกเมื่อใดและเมื่อถูกสุ่มตัวอย่าง ต้นแบบสามารถตั้งค่าขั้วของนาฬิกาเพื่ออนุญาตให้มีการส่งออกบิตและสุ่มตัวอย่างบนขอบที่เพิ่มขึ้นหรือลดลงของรอบนาฬิกา เฟสนาฬิกาสามารถตั้งค่าเอาต์พุตและการสุ่มตัวอย่างที่ขอบแรกหรือขอบที่สองของรอบสัญญาณนาฬิกาได้ ไม่ว่าจะขึ้นหรือลง
เลือกทาส
ต้นแบบสามารถเลือกสเลฟที่ต้องการคุยด้วยการตั้งค่าสาย CS/SS ของสเลฟเป็นระดับแรงดันไฟต่ำ ในสถานะไม่ได้ใช้งานและไม่ส่งสัญญาณ เส้นเลือกรองจะถูกเก็บไว้ที่ระดับไฟฟ้าแรงสูง อาจมีหมุด CS/SS หลายตัวบนต้นแบบ ซึ่งช่วยให้ทาสหลายตัวต่อสายแบบขนานได้ หากมีหมุด CS/SS เพียงอันเดียว สเลฟหลายตัวสามารถเชื่อมต่อกับมาสเตอร์ได้โดยการต่อสายเดซี่
SPI. ทาสหลายคน
สามารถตั้งค่าให้ทำงานกับมาสเตอร์ตัวเดียวและทาสตัวเดียว และสามารถตั้งค่ากับทาสหลายตัวที่ควบคุมโดยมาสเตอร์ตัวเดียวได้ มีสองวิธีในการเชื่อมต่อหลายทาสกับต้นแบบ หากมาสเตอร์มีหมุดเลือกสเลฟหลายอัน สเลฟสามารถต่อขนานกันได้ดังนี้:
ขั้นตอนที่ 9:
ขั้นตอนที่ 10:
โมซิและมิโซะ
ต้นแบบส่งข้อมูลไปยังสเลฟทีละบิต แบบอนุกรมผ่านสาย MOSI สเลฟรับข้อมูลที่ส่งจากมาสเตอร์ที่พิน MOSI ข้อมูลที่ส่งจากมาสเตอร์ไปยังสเลฟมักจะส่งด้วยบิตที่สำคัญที่สุดก่อน สเลฟยังสามารถส่งข้อมูลกลับไปยังมาสเตอร์ผ่านสาย MISO แบบอนุกรมได้ ข้อมูลที่ส่งจากสเลฟกลับไปยังมาสเตอร์มักจะส่งด้วยบิตที่มีนัยสำคัญน้อยที่สุดก่อน ขั้นตอนของการส่งข้อมูล SPI 1.ต้นแบบส่งสัญญาณนาฬิกา:
ขั้นตอนที่ 11:
หากมีหมุดเลือกสเลฟเพียงตัวเดียว สเลฟสามารถถูกล่ามโซ่แบบเดซี่ดังนี้:
ขั้นตอนที่ 12:
โมซิและมิโซะ
ต้นแบบส่งข้อมูลไปยังสเลฟทีละบิต แบบอนุกรมผ่านสาย MOSI สเลฟรับข้อมูลที่ส่งจากมาสเตอร์ที่พิน MOSI ข้อมูลที่ส่งจากมาสเตอร์ไปยังสเลฟมักจะส่งด้วยบิตที่สำคัญที่สุดก่อน
สเลฟยังสามารถส่งข้อมูลกลับไปยังมาสเตอร์ผ่านสาย MISO แบบอนุกรมได้ ข้อมูลที่ส่งจากสเลฟกลับไปยังมาสเตอร์มักจะส่งด้วยบิตที่มีนัยสำคัญน้อยที่สุดก่อน
ขั้นตอนการส่งข้อมูล SPI
*หมายเหตุ รูปภาพอยู่ในรายการ Oboe คุณสามารถแยกแยะได้ง่าย
1. ต้นแบบส่งสัญญาณนาฬิกา:
2. ต้นแบบจะสลับพิน SS/CS เป็นสถานะแรงดันต่ำ ซึ่งเปิดใช้งานสเลฟ:
3. ต้นแบบส่งข้อมูลทีละบิตไปยังสเลฟตามบรรทัด MOSI ทาสอ่านบิตตามที่ได้รับ:
4. หากจำเป็นต้องมีการตอบสนอง สเลฟจะส่งกลับข้อมูลทีละบิตไปยังมาสเตอร์ตามบรรทัด MISO ต้นแบบอ่านบิตตามที่ได้รับ:
ขั้นตอนที่ 13: ข้อดีและข้อเสียของ SPI
มีข้อดีและข้อเสียบางประการในการใช้ SPI และหากได้รับเลือกระหว่างโปรโตคอลการสื่อสารต่างๆ คุณควรรู้ว่าเมื่อใดควรใช้ SPI ตามข้อกำหนดของโครงการของคุณ:
ข้อดี
ไม่มีบิตเริ่มต้นและหยุด จึงสามารถสตรีมข้อมูลได้อย่างต่อเนื่องโดยไม่หยุดชะงัก ไม่มีระบบกำหนดแอดเดรสสเลฟที่ซับซ้อน เช่น I2C อัตราการถ่ายโอนข้อมูลสูงกว่า I2C (เร็วกว่าเกือบสองเท่า) แยกสาย MISO และ MOSI ออก จึงสามารถรับและส่งข้อมูลได้พร้อมกัน เวลา
ข้อเสีย
ใช้สายสี่สาย (I2C และ UART ใช้สองสาย) ไม่มีการยอมรับว่าได้รับข้อมูลสำเร็จแล้ว (I2C มีสิ่งนี้) ไม่มีรูปแบบการตรวจสอบข้อผิดพลาดเหมือนพาริตีบิตใน UART อนุญาตให้มีต้นแบบเดียวเท่านั้น หวังว่าบทความนี้จะช่วยให้คุณเข้าใจได้ดีขึ้น ของเอสพีไอ ดำเนินการต่อในส่วนที่สองของชุดนี้เพื่อเรียนรู้เกี่ยวกับการสื่อสารที่ขับเคลื่อนด้วย UART หรือในส่วนที่สามที่เราพูดถึงโปรโตคอล I2C
หากคุณมีคำถามใด ๆ อย่าลังเลที่จะถามในส่วนความคิดเห็น เราพร้อมให้ความช่วยเหลือ และอย่าลืมติดตาม
ขอแสดงความนับถือ: M. Junaid
แนะนำ:
ภาพเคลื่อนไหวบิตแมปบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino: 8 ขั้นตอน
ภาพเคลื่อนไหวบิตแมปบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino: ในบทช่วยสอนนี้ เราจะแสดงและย้ายภาพบิตแมปในรูปแบบแอนิเมชั่นอย่างง่ายบนจอแสดงผล OLED SSD1331 (SPI) ด้วย Visuino ดูวิดีโอ
NodeMCU และ 1.8" SPI ST7735 จอแสดงผล: 3 ขั้นตอน
NodeMCU และจอแสดงผล SPI ST7735 ขนาด 1.8 นิ้ว: ฉันใช้จอแสดงผลแบบสี ST7735 TFT ขนาด 1.8 นิ้วอยู่บ่อยครั้ง เหตุผลก็คือจอแสดงผลนี้ใช้งานง่ายมาก ราคาไม่ถึง $5 และให้สีสันด้วย! จอแสดงผลมีช่องเสียบการ์ด SD สรุปโดยย่อของหมุด (ดัดแปลงจาก Adafr
ทวีตบนจอแสดงผล OLED SPI และโฟตอนของอนุภาค: 6 ขั้นตอน
ทวีตบนจอแสดงผล OLED SPI และโฟตอนของอนุภาค: สวัสดีทุกคน บทแนะนำง่ายๆ นี้จะแสดงวิธีอ่านทวีตของเราโดยใช้ IFTTT และบอร์ดโฟตอน คุณอาจต้องดูคำแนะนำนี้
จอ LCD I2C / IIC - ใช้ SPI LCD กับจอแสดงผล LCD I2C โดยใช้โมดูล SPI เป็น IIC กับ Arduino: 5 ขั้นตอน
จอ LCD I2C / IIC | ใช้ SPI LCD กับจอแสดงผล LCD I2C โดยใช้โมดูล SPI เป็น IIC กับ Arduino: สวัสดีทุกคน เนื่องจาก SPI LCD 1602 ปกติมีสายเชื่อมต่อมากเกินไป ดังนั้นจึงยากมากที่จะเชื่อมต่อกับ Arduino แต่มีโมดูลเดียวในตลาดที่สามารถทำได้ แปลงจอแสดงผล SPI เป็นจอแสดงผล IIC ดังนั้นคุณต้องเชื่อมต่อเพียง 4 สายเท่านั้น
เบื้องต้น* SPI บน Pi: การสื่อสารด้วยตัวตรวจวัดความเร่งแบบ 3 แกน SPI โดยใช้ Raspberry Pi: 10 ขั้นตอน
เบื้องต้น* SPI บน Pi: การสื่อสารด้วยตัวตรวจวัดความเร่งแบบ 3 แกน SPI การใช้ Raspberry Pi: คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีตั้งค่า Raspbian และสื่อสารกับอุปกรณ์ SPI โดยใช้ไลบรารี bcm2835 SPI (ไม่ใช่บิตกระแทก!) นี่ยังคง เบื้องต้นมาก… ฉันต้องเพิ่มรูปภาพของการเชื่อมต่อทางกายภาพให้ดีขึ้น และทำงานผ่านรหัสที่น่าอึดอัดใจบางอย่าง