[TH] SPI Bus
บทความนี้กล่าวถึงฟังก์ชันการใช้งานของบัส SPI ของเฟรมเวิร์ก Arduino เพื่อใช้กับ STM32F030F4P6, STM32F103C8, STM32F401, esp8266 และ esp32 ซึ่งการทำงานของบัสนี้ต้องการสายสัญญาณสำหรับสื่อสารระหว่างกันอย่างน้อย 3 เส้น คือ SCLK, MISO และ MOSI สำหรับทำหน้าที่ส่งสัญญาณนาฬิการะหว่างกันของผู้ส่งและผู้รับ ทำหน้าที่รับข้อมูลจากผู้ส่ง และใช้สำหรับส่งข้อมูลไปให้ผู้รับ
จากการใช้สายสัญญาณ 3 เส้นจะพบว่า สามารถส่งและรับข้อมูลพร้อมกันได้ ซึ่งแตกต่างกับการสื่อสารแบบบัส I2C ที่ใช้สาย SDA เพียงเส้นเดียวในการสื่อสาร ดังนั้น อาจจะกล่าวได้ว่า ด้วยความเร็วในการสื่อสารที่เท่ากัน บัสแบบ SPI จะรับและส่งข้อมูลได้โดยไม่ต้องรอสายสัญญาณว่าง ขณะที่ I2C จะต้องรอให้ว่างก่อน ด้วยหลักคิดนี้จึงทำให้ SPI รับ/ส่งข้อมูลได้รวดเร็วกว่า
นอกจากนี้ SPI ใช้วิธีการเลือกปลายทางที่ต้องการสื่อสารด้วยการสั่งให้ปลายทางรู้ด้วยการส่งสัญญาณไปที่ขา SS ของอุปกรณ์ปลายทาง ดังนั้น เมื่อเชื่อมต่อกับหลายอุปกรณ์จึงส่งผลให้ SPI ต้องการจำนวนขาในการทำงานที่มากกว่า ขณะที่ I2C ใช้การระบุคำแหย่งของอุปกรณ์ในการสื่อสารระหว่างกัน โดยยังคงใช้สาย SDA เพียงเส้นเดียวทำให้ประหยัดขาได้มากกว่า
![](https://www.jarutex.com/wp-content/uploads/2021/07/arduino-spi.jpg)