Giới thiệu chuẩn giao tiếp SPI
Giao tiếp ngoại vi nối tiếp SPI (Serial Peripheral Interface) là một chuẩn đồng bộ nối tiếp để truyền dữ liệu ở chế độ song công toàn phần (full – duplex) Master - Slave tức trong cùng một thời điểm có thể xảy ra đồng thời quá trình truyền và nhận.
SPI là một giao thức giao tiếp phổ biến được sử dụng bởi nhiều thiết bị khác nhau. Ví dụ, module thẻ SD, module đầu đọc thẻ RFID, bộ thu phát không dây 2,4 GHz đều sử dụng SPI để giao tiếp với vi điều khiển.
Lợi ích duy nhất của SPI là dữ liệu có thể được truyền mà không bị gián đoạn. Bất kỳ số lượng bit nào cũng có thể được gửi hoặc nhận trong một luồng liên tục. Với I2C và UART, dữ liệu được gửi dưới dạng gói, giới hạn ở một số bit cụ thể. Điều kiện bắt đầu và dừng xác định điểm bắt đầu và kết thúc của mỗi gói, do đó dữ liệu bị gián đoạn trong quá trình truyền.
Các thiết bị giao tiếp qua SPI có quan hệ Master - Slave. Master là thiết bị điều khiển (thường là vi điều khiển), còn Slave (thường là cảm biến, màn hình hoặc chip nhớ) nhận lệnh từ Master. Cấu hình đơn giản nhất của SPI là hệ thống một Slave, một master duy nhất, nhưng một Master có thể điều khiển nhiều hơn một Slave.
Cách hoạt động của SPI
Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave trong một giao diện đa điểm. Trong loại giao diện này, một thiết bị được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave.
SPI có thể thiết lập để hoạt động với một master và một slave duy nhất, và nó có thể được thiết lập với nhiều slave do một master duy nhất điều khiển. Có hai cách để kết nối nhiều slave với master. Nếu master có nhiều chân slave select, các slave có thể được nối dây song song như thế này:
Ưu điểm
Không cần bit bắt đầu và dừng, vì vậy dữ liệu có thể được truyền liên tục mà không bị gián đoạn
Không có hệ thống định địa chỉ slave phức tạp như I2C
Tốc độ truyền dữ liệu cao hơn I2C (nhanh gần gấp đôi)
Các đường truyền và nhận (MISO và MOSI) là riêng biệt, vì vậy dữ liệu có thể được gửi và nhận cùng một lúc
Nhược điểm
Sử dụng bốn dây (I2C và UART sử dụng hai)
Không xác nhận dữ liệu đã được nhận thành công (I2C có điều này)
Không có hình thức kiểm tra lỗi như bit chẵn lẻ trong UART
Chỉ cho phép một master duy nhất
Các ứng dụng sử dụng giao tiếp SPI