ทำความเข้าใจเกี่ยวกับ SPI Communication Protocol ใน Embedded

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





การสื่อสารมีบทบาทสำคัญในการออกแบบระบบฝังตัว การขยายอุปกรณ์ต่อพ่วงมีความซับซ้อนสูงและใช้พลังงานสูงโดยไม่ต้องใช้โปรโตคอล ระบบฝังตัว โดยทั่วไปจะใช้การสื่อสารแบบอนุกรมเพื่อสื่อสารกับอุปกรณ์ต่อพ่วง
มีโปรโตคอลการสื่อสารแบบอนุกรมมากมายเช่นการสื่อสาร UART, CAN, USB, I2C และ SPI อนุกรม โปรโตคอลการสื่อสาร ลักษณะเฉพาะ ได้แก่ ความเร็วสูงและการสูญเสียข้อมูลต่ำ ช่วยให้การออกแบบระดับระบบง่ายขึ้นและมั่นใจได้ว่าการถ่ายโอนข้อมูลที่เชื่อถือได้

การสื่อสารข้อมูลแบบอนุกรม

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




การสื่อสารข้อมูลแบบอนุกรม

การสื่อสารข้อมูลแบบอนุกรม

ข้อมูลอนุกรมนี้ถูกส่งโดยเกี่ยวกับพัลส์นาฬิกาบางอย่าง อัตราการส่งข้อมูลเรียกว่าอัตราการส่งข้อมูล จำนวนบิตข้อมูลที่สามารถส่งต่อวินาทีเรียกว่าอัตรารับส่งข้อมูล สมมติว่าข้อมูลมีขนาด 12 ไบต์จากนั้นแต่ละไบต์จะถูกแปลงเป็น 8 บิตเพื่อให้ขนาดทั้งหมดของการรับส่งข้อมูลอยู่ที่ประมาณ 96 บิต / วินาทีของข้อมูล (12 ไบต์ * 8 บิตต่อไบต์) หากสามารถส่งข้อมูลได้ทุกๆวินาทีอัตราการส่งข้อมูลจะอยู่ที่ประมาณ 96 บิต / วินาทีหรือ 96 บอด หน้าจอแสดงผลจะรีเฟรชค่าข้อมูลทุกๆวินาที



ข้อมูลพื้นฐานเกี่ยวกับอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม

การสื่อสาร SPI ย่อมาจากอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม โปรโตคอลการสื่อสาร ซึ่งได้รับการพัฒนาโดย Motorola ในปี 1972 อินเทอร์เฟซ SPI พร้อมใช้งานบนตัวควบคุมการสื่อสารยอดนิยมเช่น PIC, AVR และ ตัวควบคุม ARM ฯลฯ มีลิงค์ข้อมูลการสื่อสารอนุกรมแบบซิงโครนัสที่ทำงานในฟูลดูเพล็กซ์ซึ่งหมายความว่าสัญญาณข้อมูลจะส่งต่อทั้งสองทิศทางพร้อมกัน

โปรโตคอล SPI ประกอบด้วยสายไฟสี่สายเช่น MISO, MOSI, CLK, SS ที่ใช้สำหรับการสื่อสารหลัก / ทาส ต้นแบบคือไมโครคอนโทรลเลอร์และทาสเป็นอุปกรณ์ต่อพ่วงอื่น ๆ เช่นเซ็นเซอร์ โมเด็ม GSM และโมเด็ม GPS เป็นต้นทาสหลายตัวเชื่อมต่อกับต้นแบบผ่านบัสอนุกรม SPI โปรโตคอล SPI ไม่รองรับการสื่อสารแบบ Multi-master และใช้เป็นระยะทางสั้น ๆ ภายในแผงวงจร

ข้อมูลพื้นฐานเกี่ยวกับอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม

ข้อมูลพื้นฐานเกี่ยวกับอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม

เส้น SPI

MISO (Master in Slave out) : สาย MISO ถูกกำหนดค่าเป็นอินพุตในอุปกรณ์หลักและเป็นเอาต์พุตในอุปกรณ์ทาส


MOSI (Master out Slave in) : MOSI เป็นสายที่กำหนดค่าเป็นเอาต์พุตในอุปกรณ์หลักและเป็นอินพุตในอุปกรณ์ทาสซึ่งใช้ในการซิงโครไนซ์การเคลื่อนย้ายข้อมูล

SCK (นาฬิกาอนุกรม) : สัญญาณนี้ถูกขับเคลื่อนโดยต้นแบบเสมอสำหรับการถ่ายโอนข้อมูลแบบซิงโครนัสระหว่างต้นแบบและทาส ใช้เพื่อซิงโครไนซ์การเคลื่อนย้ายข้อมูลทั้งเข้าและออกผ่านสาย MOSI และ MISO

SS (Slave Select) และ CS (Chip Select) : สัญญาณนี้ขับเคลื่อนโดยต้นแบบเพื่อเลือกทาส / อุปกรณ์ต่อพ่วงแต่ละตัว เป็นสายป้อนข้อมูลที่ใช้เพื่อเลือกอุปกรณ์ทาส

การสื่อสาร Master Slave กับ SPI Serial Bus

การใช้งาน SPI Master เดี่ยวและ Single Slave

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

การสื่อสารของ Master Slave

การสื่อสารของ Master Slave

การใช้งาน Master เดี่ยวและการใช้งาน Slave หลายตัว

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

นายเดี่ยวและทาสหลายคน

นายเดี่ยวและทาสหลายคน

ในกระบวนการนี้การควบคุมอุปกรณ์ทาสแต่ละเครื่องจะดำเนินการโดยสายการเลือกชิป (SS) พินเลือกชิปลดลงเพื่อเปิดใช้งานอุปกรณ์ทาสและไปที่ระดับสูงเพื่อปิดใช้งานอุปกรณ์ทาส

การถ่ายโอนข้อมูลจะจัดระเบียบโดยใช้ shift register ที่ทั้งอุปกรณ์หลักและอุปกรณ์ทาสโดยมีขนาดคำที่กำหนดประมาณ 8 บิตและ 16 บิตตามลำดับ อุปกรณ์ทั้งสองเชื่อมต่อกันในรูปวงแหวนเพื่อให้ค่าทะเบียนกะของ maser ถูกส่งผ่านสาย MOSI จากนั้นทาสจะเลื่อนข้อมูลในทะเบียนกะ โดยปกติข้อมูลจะถูกย้ายออกด้วย MSB ก่อนและเปลี่ยน LSB ใหม่ลงในทะเบียนเดียวกัน

การถ่ายโอนข้อมูลระหว่าง Master และ Slave

การถ่ายโอนข้อมูลระหว่าง Master และ Slave

ความสำคัญของขั้วนาฬิกาและเฟส

โดยทั่วไปการส่งและรับข้อมูลจะดำเนินการตามจังหวะนาฬิกาที่ขอบขึ้นและขอบตก ไมโครคอนโทรลเลอร์ขั้นสูงมีสองความถี่: ความถี่ภายในและความถี่ภายนอก สามารถเพิ่มอุปกรณ์ต่อพ่วง SPI ได้โดยแชร์สาย MISO, MOSI และ SCLK อุปกรณ์ต่อพ่วงมีประเภทหรือความเร็วที่แตกต่างกันเช่น ADC, DAC เป็นต้นดังนั้นเราจำเป็นต้องเปลี่ยนการตั้งค่า SPCR ระหว่างการถ่ายโอนไปยังอุปกรณ์ต่อพ่วงต่างๆ

ลงทะเบียน SPCR

ลงทะเบียน SPCR

บัส SPI ทำงานในหนึ่งใน 4 โหมดถ่ายโอนที่แตกต่างกันโดยมีขั้วสัญญาณนาฬิกา (CPOL) และเฟสนาฬิกา (CPHA) ซึ่งกำหนดรูปแบบนาฬิกาที่จะใช้ ขั้วนาฬิกาและอัตรานาฬิกาเฟสขึ้นอยู่กับอุปกรณ์ต่อพ่วงที่คุณพยายามสื่อสารกับอุปกรณ์หลัก
CPHA = 0, CPOL = 0: บิตแรกเริ่มต้นด้วยสัญญาณที่ต่ำกว่า - ข้อมูลจะถูกสุ่มตัวอย่างที่ขอบที่เพิ่มขึ้นและข้อมูลจะเปลี่ยนไปที่ขอบที่ตกลงมา

CPHA = 0, CPOL = 1: บิตแรกเริ่มต้นด้วยนาฬิกาที่ต่ำกว่า - ข้อมูลจะถูกสุ่มตัวอย่างที่ขอบลดลงและข้อมูลจะเปลี่ยนไปตามขอบที่เพิ่มขึ้น

CPHA = 1, CPOL = 0: บิตแรกเริ่มต้นด้วยนาฬิกาที่สูงขึ้น - ข้อมูลจะถูกสุ่มตัวอย่างที่ขอบลดลงและข้อมูลจะเปลี่ยนไปตามขอบที่เพิ่มขึ้น

CPHA = 1, CPOL = 1: บิตแรกเริ่มต้นด้วยนาฬิกาที่สูงขึ้น - ข้อมูลจะถูกสุ่มตัวอย่างที่ขอบที่เพิ่มขึ้นและข้อมูลจะเปลี่ยนไปตามขอบที่ตกลงมา

การกำหนดเวลา SPI Bus

การกำหนดเวลา SPI Bus

โปรโตคอลการสื่อสาร SPI

ไมโครคอนโทรลเลอร์หลายตัวมีโปรโตคอล SPI ในตัวซึ่งจัดการข้อมูลการส่งและรับข้อมูลทั้งหมด การดำเนินการโหมดข้อมูล (R / W) ใด ๆ ถูกควบคุมโดยการควบคุมและการลงทะเบียนสถานะของโปรโตคอล SPI ที่นี่คุณสามารถสังเกตอินเทอร์เฟซ EEPROM กับไมโครคอนโทรลเลอร์ PIC16f877a ผ่านโปรโตคอล SPI

ที่นี่ 25LC104 EEROM เป็นหน่วยความจำ 131072 ไบต์ซึ่งไมโครคอนโทรลเลอร์จะถ่ายโอนข้อมูลสองไบต์ไปยัง หน่วยความจำ EEROM ผ่านบัสอนุกรม SPI โปรแกรมสำหรับการเชื่อมต่อนี้ได้รับด้านล่าง

การสื่อสาร Master to Slave ผ่านบัสอนุกรม SPI

การสื่อสาร Master to Slave ผ่านบัสอนุกรม SPI

# รวม
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
โมฆะเริ่มต้น EEROM ()
โมฆะ main ()
{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0
}

ข้อดีของ SPI Protocol

  • เป็นการสื่อสารแบบฟูลดูเพล็กซ์
  • เป็นบัสข้อมูลความเร็วสูง 10MHz
  • ไม่ จำกัด เพียง 8 บิตในขณะที่โอน
  • การเชื่อมต่อฮาร์ดแวร์ทำได้ง่ายผ่าน SPI
  • Slave ใช้นาฬิกาหลักและไม่จำเป็นต้องมีออสซิลเลเตอร์ล้ำค่า

ทั้งหมดนี้เกี่ยวกับการสื่อสาร SPI และของมัน การเชื่อมต่อกับไมโครคอนโทรลเลอร์ . ขอขอบคุณสำหรับความสนใจและความสนใจของคุณสำหรับบทความนี้และด้วยเหตุนี้จึงคาดหวังมุมมองของคุณเกี่ยวกับบทความนี้ นอกจากนี้สำหรับการเชื่อมต่อการเข้ารหัสและความช่วยเหลือคุณสามารถถามเราได้โดยแสดงความคิดเห็นด้านล่าง

เครดิตภาพ:

  • การสื่อสารข้อมูลแบบอนุกรมโดย เรืองแสง
  • ข้อมูลพื้นฐานเกี่ยวกับอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรมโดย พรรณี
  • นายเดี่ยวและทาสหลายคนโดย กิน
  • การถ่ายโอนข้อมูลระหว่าง Master และ Slave โดย วิศวกร
  • การกำหนดเวลา SPI Bus โดย maximintegrated