Giao tiếp SPI (Serial Peripheral Interface) là một giao thức truyền thông nối tiếp được sử dụng phổ biến trong việc kết nối giữa vi điều khiển và các thiết bị ngoại vi như EEPROM, ADC, DAC, các màn hình LCD, hoặc các cảm biến. Giao thức SPI được biết đến với tính đơn giản, tốc độ truyền cao, và khả năng truyền nhọi đồng dữ liệu.
SPI là một giao thức truyền thông dựa trên kiểu truyền nhị phân (đồng bộ). Trong SPI, có 4 tín hiệu chính:
SCLK (Serial Clock): Tín hiệu xung nhịp do Master tạo ra.
MOSI (Master Out Slave In): Dòng dữ liệu truyền từ Master đến Slave.
MISO (Master In Slave Out): Dòng dữ liệu truyền từ Slave đến Master.
SS (Slave Select): Tín hiệu chọn Slave (còn được gọi là CS – Chip Select).
Giao tiếp SPI hoạt động theo mô hình Master-Slave:
Master: Thiết bị chủ động trong giao tiếp, tạo xung clock và quyết định khi nào truyền hoặc nhận dữ liệu.
Slave: Thiết bị phụ, chỉ được kích hoạt khi Master chọn bằng tín hiệu SS.
Khi Master gửi dữ liệu qua MOSI, Slave nhận dữ liệu ở cùng mỗi chu kỳ clock. Ngược lại, Slave gửi dữ liệu qua MISO đến Master.
Truyền nhị phân: SPI truyền dữ liệu nhị phân, cho phép trao đổi song song giữa Master và Slave.
Tốc độ cao: Giao tiếp SPI có tốc độ cao hơn so với I2C do không có cơ chế ACK.
Hỗ trợ nhiều Slave: Bằng cách sử dụng nhiều tín hiệu SS, một Master có thể giao tiếp với nhiều Slave.
Chiều dài cáp giới hạn: SPI phù hợp cho kết nối ngắn do cơ chế truyền song song đòi hỏi đồng bộ cao.
SPI hỗ trợ 4 chế độ hoạt động, phân loại theo CPOL (Clock Polarity) và CPHA (Clock Phase):
Mode 0: CPOL = 0, CPHA = 0.
Mode 1: CPOL = 0, CPHA = 1.
Mode 2: CPOL = 1, CPHA = 0.
Mode 3: CPOL = 1, CPHA = 1.
Chọn chế độ tùy thuộc vào yêu cầu của thiết bị Slave.
Kết nối màn hình TFT/LCD trong các dự án nhúng.
Truyền dữ liệu giữa vi điều khiển và bộ nhớ EEPROM.
Kết nối ADC/DAC để chuyển đổi tín hiệu từ analog sang digital hoặc ngược lại.
Ứng dụng trong các hệ thống IoT để kết nối với các cảm biến.
Thuộc tính | SPI | I2C |
---|---|---|
Tốc độ | Cao | Trung bình |
Số dây tín hiệu | 4 | 2 |
Khả năng giao tiếp nhiều Slave | Tốt (dùng nhiều SS) | Giới hạn |
Khoảng cách | Ngắn | Xa |
Giao tiếp SPI là một lựa chọn lý tưởng cho các ứng dụng yêu cầu tốc độ truyền cao và giao tiếp đồng bộ. Tuy nhiên, SPI không phù hợp cho những ứng dụng yêu cầu đồng bộ nỗi tiếp với khoảng cách xa hoặc giao tiếp với nhiều thiết bị trong cùng hệ thống như I2C.