สารบัญ:

พื้นฐานของโปรโตคอลการสื่อสาร SPI: 13 ขั้นตอน
พื้นฐานของโปรโตคอลการสื่อสาร SPI: 13 ขั้นตอน

วีดีโอ: พื้นฐานของโปรโตคอลการสื่อสาร SPI: 13 ขั้นตอน

วีดีโอ: พื้นฐานของโปรโตคอลการสื่อสาร SPI: 13 ขั้นตอน
วีดีโอ: Beginners Guide to SPI on the Raspberry Pi Pico (BMP280 Example) 2024, กรกฎาคม
Anonim
พื้นฐานของโปรโตคอลการสื่อสาร SPI
พื้นฐานของโปรโตคอลการสื่อสาร SPI

เมื่อคุณเชื่อมต่อไมโครคอนโทรลเลอร์กับเซ็นเซอร์ จอแสดงผล หรือโมดูลอื่นๆ คุณเคยคิดบ้างไหมว่าอุปกรณ์ทั้งสองคุยกันอย่างไร? พวกเขาพูดอะไรกันแน่? พวกเขาจะเข้าใจกันได้อย่างไร?

การสื่อสารระหว่างอุปกรณ์อิเล็กทรอนิกส์ก็เหมือนการสื่อสารระหว่างมนุษย์ ทั้งสองฝ่ายต้องพูดภาษาเดียวกัน ในอุปกรณ์อิเล็กทรอนิกส์ ภาษาเหล่านี้เรียกว่าโปรโตคอลการสื่อสาร โชคดีสำหรับเรา มีโปรโตคอลการสื่อสารเพียงไม่กี่อย่างที่เราจำเป็นต้องรู้เมื่อสร้างโครงการอิเล็กทรอนิกส์ 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. การสื่อสารแบบคู่ขนาน

ซีเรียล VS. การสื่อสารแบบคู่ขนาน
ซีเรียล VS. การสื่อสารแบบคู่ขนาน

อุปกรณ์อิเล็กทรอนิกส์คุยกันโดยการส่งข้อมูลบิตผ่านสายไฟที่เชื่อมต่อระหว่างอุปกรณ์ต่างๆ บิตเป็นเหมือนตัวอักษรในหนึ่งคำ ยกเว้นแทนที่จะเป็น 26 ตัวอักษร (ในตัวอักษรภาษาอังกฤษ) บิตนั้นเป็นเลขฐานสองและสามารถเป็นได้เพียง 1 หรือ 0 เท่านั้น บิตจะถูกถ่ายโอนจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งโดยการเปลี่ยนแปลงอย่างรวดเร็วของแรงดันไฟฟ้า ในระบบที่ทำงานที่ 5 V 0 บิตจะได้รับการสื่อสารเป็นพัลส์สั้นที่ 0 V และ 1 บิตจะได้รับการสื่อสารโดยพัลส์สั้น 5 V

บิตของข้อมูลสามารถส่งได้ทั้งในรูปแบบขนานหรือแบบอนุกรม ในการสื่อสารแบบคู่ขนาน บิตของข้อมูลจะถูกส่งทั้งหมดพร้อมกัน โดยผ่านสายแยกกัน แผนภาพต่อไปนี้แสดงการส่งแบบคู่ขนานของตัวอักษร "C" ในรูปแบบไบนารี (0100011):

ขั้นตอนที่ 2:

ในการสื่อสารแบบอนุกรม บิตจะถูกส่งทีละตัวผ่านสายเดี่ยว แผนภาพต่อไปนี้แสดงการส่งแบบอนุกรมของตัวอักษร “C” ในรูปแบบไบนารี (0100011):

ขั้นตอนที่ 3:

ภาพ
ภาพ

ขั้นตอนที่ 4: บทนำสู่การสื่อสาร SPI

บทนำสู่การสื่อสาร SPI
บทนำสู่การสื่อสาร 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

แนะนำ: