SPI หรือ Serial Peripheral Interface

 นาย เพิ่มเกียรติ ฟักบ้านใหม่

เรื่อง  SPI (Serial Peripheral Interface)

SPI หรือ Serial Peripheral Interface
          เป็นวิธีการสื่อสารอนุกรมแบบ Synchronous อีกรูปแบบหนึ่ง ซึ่งทำงานในรูปแบบที่ให้อุปกรณ์ตัวหนึ่งทำหน้าที่เป็น Master ในขณะที่อีกตัวหนึ่งทำหน้าที่เป็น Slave และสามารถส่งข้อมูลในโหมด Full-duplex นั่นหมายความว่า สัญญาณสามารถส่งหากันได้ระหว่าง Master และ Slave ได้อย่างต่อเนื่อง รูปแบบข้อมูลการสื่อสารหรือ Protocol ของแบบ SPI นี้ ไม่ได้มาตรฐานกำหนดตายตัว ว่าข้อมูลที่ส่งหากันต้องอยู่ในรูปแบบหรือ Format แบบไหน เป็นการคิด Protocol การสื่อสารกันเอาเอง หรือดูจาก Datasheet ของอุปกรณ์
        ยกตัวอย่างอุปกรณ์ที่ใช้การสื่อสารแบบ SPI ได้แก่ โมดูลแปลงสัญญาณอนาล็อกเป็นดิจิตอล และโมดูลแปลงสัญญาณดิจิตอลเป็นอนาล็อก การติดต่อกับหน่วยความจำ EEPROM และ FLASHโมดูลนาฬิกาดิจิตอล หรือ Real Time Clock : RTC เซ็นเซอร์วัดอุณหภูมิ และความดัน อุปกรณ์อื่น ๆ เช่น signal mixer , Potentiometer , LCD controller , USART , CAN controller , USB controller , Amplifier


 รูป 1-1 การเชื่อมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave
 
รูป 1‑1 แสดงการเชือมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave โดยมีสายสัญญาณ สี่เส้น หรือ Four Wire ประกอบด้วย SCLK (Serial Clock) ใช้ส่งสัญญาณนาฬิกาจากอุปกรณ์ Master ไปยังอุปกรณ์ Slave เพื่อกำหนดจังหวะการรับส่งข้อมูลMOSI (Master Out Slave In) ใช้ส่งข้อมูลจากอุปกรณ์ Master ไปยังอุปกรณ์ SlaveMISO (Master In Slave Out) ใช้รับข้อมูลจากอุปกรณ์ Slave
\SS (Slave Select) หรือ ขา CS (Chip Select) ใช้ส่งสัญญาณ Low ไปยังอุปกรณ์ Slave ที่ต้องการรับส่งข้อมูล

 อุปกรณ์ Master ทำหน้าที่เป็นตัวควบคุมการสื่อสารทั้งหมด โดยควบคุมการสื่อสารตามสัญญาณนาฬิกา และสายสัญญาณ SS ตัวมาสเตอร์จะเป็นตัวที่ตัดสินใจเลือก รับ หรือ ส่งข้อมูลไปยังอุปกรณ์ Slave สัญญาณเส้น SS หรือ Slave select ในกรณี ที่มีตัว Slave มากกว่า 1 ตัว โดยการทำให้เส้น SS มีระดับสัญญาณเป็น Low เมื่อต้องการติดต่อกับ Slave ตัวใด จากรูป 1‑2 หากต้องการติดต่อสื่อสารกับอุปกรณ์ Slave ตัวใด ก็เพียงทำให้สัญญาณ SS ของ Slave ตัวนั้น มีระดับสัญญาณเป็น Low
 
รูป 1-2 การเชื่อมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave หลายตัว
 
เมื่อเปรียบเทียบระหว่างการสื่อสาร SPI กับ I2C เป็นการสื่อสารอนุกรมแบบ Synchronous เหมาะสำหรับการสื่อสารข้อมูลความเร็วต่ำ เช่น หน่วยความจำ EEPROM หรือโมดูลนาฬิกาดิจิตอล

         ข้อดีของการสื่อสารแบบ SPI คือ สามารถสื่อสารแบบ Full Duplex กล่าวคือสามารถรับและส่งข้อมูลได้พร้อมๆ กัน เพราะมีสายสัญญาณรับและส่งข้อมูลโดยเฉพาะ รูปแบบการสื่อสารของ SPI ไม่ต้องกำหนด Address เพื่อระบุอุปกรณ์ที่ต้องการสื่อสารเหมือน I2C เนื่องจากใช้สายสัญญาณ SS เป็นตัวควบคุม จึงมีอัตราการรับส่งข้อมูลสูงกว่า I2C และเหมาะสำหรับการรับส่งข้อมูลแบบต่อเนื่อง หรือ Streaming อย่างไรก็ตาม หากมีอุปกรณ์ Slave หลายตัวดังรูป การสื่อสารแบบ SPI ต้องใช้สายสัญญาณมากกว่า I2C
 
รูปแบบสัญญาณใน SPI BUS
รูปแบบสัญญาณ SPI มี 4 รูปแบบ แตกต่างกันที่ขอบสัญญาณนาฬิกา (Clock Polarity) และเฟส (Phase)

 - เมื่อ CPHA=0 และ CPOL=0 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น Low และจะรับ-ส่งข้อมูลที่ขอบขาขึ้นของสัญญาณนาฬิกา (Rising Edge Clock)
- เมื่อ CPHA=0 และ CPOL=1 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น High และจะรับ-ส่งข้อมูลที่ขอบขาลงของสัญญาณนาฬิกา (Falling Edge Clock)
- เมื่อ CPHA=1 และ CPOL=0 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น Low และจะรับ-ส่งข้อมูลที่ขอบขาลงของสัญญาณนาฬิกา (Falling Edge Clock)
- เมื่อ CPHA=1 และ CPOL=1 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น High และจะรับ-ส่งข้อมูลที่ขอบขาขึ้นของสัญญาณนาฬิกา (Rising Edge Clock)
 
 
ดังนั้น จึงกำหนดเป็น Mode การทำงานได้ 4 โหมด คือ
o Mode 0 = CPOL=0 และ CPHA=0
o Mode 1 = CPOL=0 และ CPHA=1
o Mode 2 = CPOL=1 และ CPHA=0
o Mode 3 = CPOL=1 และ CPHA=1

ตัวอย่างการใช้งาน DAC ผ่านการสื่อสาร SPI

ในบทนี้แสดงวิธีการใช้งานการสื่อสารแบบ SPI เพื่อควบคุมอุปกรณ์ต่างๆ โดยตัวอย่างนี้ใช้ไอซี LTC1661  ของบริษัท Linear Technology โมดูลแปลงสัญญาณดิจิตอลขนาด 10 บิตเป็นสัญญาณอนาล็อก 2 ช่องสัญญาณ แม้ว่า STM32F4Discovery มี DAC ให้ใช้งานได้ 2 ช่องสัญญาณ ผู้ใช้งานสามารถใช้อุปกรณ์นี้ได้ หากต้องการเพิ่มจำนวนช่องจ่ายแรงดันอนาล็อกได้
รูป 2-1 แสดงขาของไอซี LTC1661 [2] 
 
รูป 2‑2 แสดงการรับข้อมูลของ LTC1661 ผ่าน SPI จาก Microcontroller เพื่อต้องการปรับแรงดันไฟฟ้า เมื่อสังเกตลักษณะสัญญาณนาฬิกา เมื่ออยู่ในสถานะ Idle ค่าของสัญญาณมีสถานะ Low และอ่านบิตข้อมูลที่อยู่บน MOSI เมื่อพบขอบขาขึ้น (1st Edge Capture) ข้อมูลหนึ่งชุดมีขนาดจำนวน 16 บิต ซึ่งประกอบด้วยค่าดิจิตอล 10 บิต ที่ต้องการแปลงเป็นค่าแรงดันไฟฟ้า และ Control Code จำนวน 4 บิตสำหรับควบคุมการทำงานไอซี LTC1661ดังรูป 2‑3 สำหรับความถี่ของสัญญาณนาฬิกาสูงสุดที่ไอซี LTC1661 สามารถทำงานได้คือ 16.7 MHz
รูป 2-2 รูปแบบการสื่อสารแบบ SPI ของไอซี LTC1661
รูป 2-3 ตารางแสดงคำอธิบายของ Control Code ของไอซี LTC1661
 
    ข้อดีของการใช้ SPI 
1.เป็นการสื่อสารแบบ Full-Duplex ทำให้สามารถส่งสัญญาณสวนทางกันได้ทันที 
2.ส่งด้วย Push-Pull drivers ทำให้สัญญาณชัดเจนและมีความเร็วสูง
3.อัตราการส่งข้อมูลสูง(สูงกว่าแบบ I2C หรือ SMBus) ไม่จำกัดความเร็วของสัญญาณนาฬิกา(ตราบที่ Slave จะรองรับได้) 
4.มีความยืดหยุ่นในการรับส่งข้อมูล ไม่จำกัดข้อมูลเพียงแค่ 8-bit สามารถปรับแต่ง เพิ่มลดขนาด รูปแบบของข้อมูลที่จะสื่อสารได้ 
5.การเชื่อมต่ออุปกรณ์ทำได้ง่าย ใช้พลังงานน้อยกว่าแบบ I2C และ SMBus ตัว Slave ไม่ต้องมีอุปกรณ์ Oscillator เนื่องจากใช้สัญญาณนาฬิกาจาก Master ร่วมกันหมดทุกตัว  
6.Slave ไม่ต้องมี Address ประจำตัว 
7.ไม่ต้องใช้วงจรรับส่งเหมือน CAN BUS 
8.ใช้สัญญาณ SS แยกกันใน Slave แต่ละตัวเท่านั้น ส่วนสายสัญญาณอีก 3 เส้นที่เหลือใช้ร่วมกันหมด (ยกเว้นอุปกรณ์บางตัวที่สามารถใช้ SPI Daisy Chain Config. สามารถใช้ SS ร่วมกันได้) 
9.สัญญาณในสายแต่ละเส้นเดินในทิศทางเดียว ทำให้แยกสัญญาณทางไฟฟ้าได้ง่าย 
10.การเขียนโปรแกรมทำได้ง่าย 
    ข้อเสียของ SPI 
1.ใช้สายสัญญาณมากกว่า I2C 
2.จำเป็นต้องใช้ SS ในการเลือกอุปกรณ์ขึ้นมาทำงาน 
3.Slave ไม่สามารถกำหนดการไหลของการทำงานได้ ทั้งหมดจะขึ้นอยู่กับ Master 
4.ไม่มีการตอบรับจาก Slave Hardware 
5.รองรับให้มี Master เพียงแค่ตัวเดียว 
6.ไม่มีการตรวจสอบความผิดพลาดของสัญญาณ 
7.ไม่สามารถตรวจสอบความสอดคล้องของข้อมูลได้เนื่องจากรูปแบบข้อมูลไม่มีมาตรฐานที่ชัดเจน 
8.สามารถรับส่งข้อมูลได้ในระยะสั้นเท่านั้น 
9.ไม่สามารถทำ  hot swapping ได้ (การถอดเปลี่ยนอุปกรณ์ตัวใหม่แล้วทำงานต่อทันทีโดยไม่ต้องรีเซ็ตระบบ) 
    การนำไปใช้งาน 
1.เซ็นเซอร์ต่าง ๆ เช่น อุณหภูมิ, ความชื้น, จอสัมผัส 
2.อุปกรณ์ควบคุม เช่น Digital Potentiometer, DAC 
3.เลนส์กล้องถ่ายรูป เช่น Canon EF Mount 
4.หน่วยความจำ flash, EEPROM 
5.Real Time Clock Module 
6.จอแสดงผล LCD 
7.SD Card, MMC Card 

ความคิดเห็น