15/10/2022
0

Tìm hiểu về chuẩn giao tiếp SPI

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.

  • MOSI (Master Out / Slave In) là dữ liệu được tạo ra bởi Master và nhận bởi Slave. Do đó, các chân MOSI trên cả Master và Slave được kết nối với nhau.
  • MISO (Master In / Slave Out) là dữ liệu được tạo ra bởi Slave và phải được truyền tới Master. Các chân MISO trên cả Master và Slave được kết nối với nhau. Mặc dù tín hiệu trong MISO được tạo ra bởi Slave, đường tín hiệu này được điều khiển bởi Master.
  • Master tạo tín hiệu đồng hồ SCLK và được cung cấp cho đầu vào đồng hồ của Slave. Xung này có chức năng giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1 đường xung nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Sự tồn tại của xung SCK giúp quá trình truyền được đồng bộ và ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao.
  • Chip Select (CS) hoặc Slave Select (SS) được sử dụng để chọn một Slave cụ thể bởi Master. Nếu Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và 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.

  • Xung nhịp: Tín hiệu xung nhịp đồng bộ hóa đầu ra của các bit dữ liệu từ master để lấy mẫu các bit của slave. Một bit dữ liệu được truyền trong mỗi chu kỳ xung nhịp, do đó tốc độ truyền dữ liệu được xác định bởi tần số của tín hiệu xung nhịp. Giao tiếp SPI được khởi tạo bởi master kể từ khi master cấu hình và tạo ra tín hiệu xung nhịp. 
  • Slave Select: Master có thể chọn slave mà nó muốn giao tiếp bằng cách đặt đường CS/SS của slave ở mức điện áp thấp. Ở trạng thái idle, không truyền tải, dòng slave select được giữ ở mức điện áp cao. Nhiều chân CS / SS có thể có sẵn trên thiết bị master cho phép đấu dây song song nhiều slave. Nếu chỉ có một chân CS / SS, nhiều slave có thể được kết nối với master bằng cách nối chuỗi.
  • MOSI và MISO: Master gửi dữ liệu đến slave từng bit, nối tiếp qua đường MOSI. Slave nhận dữ liệu được gửi từ master tại chân MOSI. Dữ liệu được gửi từ master đến slave thường được gửi với bit quan trọng nhất trước. Slave cũng có thể gửi dữ liệu trở lại master thông qua đường MISO nối tiếp. Dữ liệu được gửi từ slave trở lại master thường được gửi với bit ít quan trọng nhất trước.

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

Màn hình LCD TFT giao tiếp SPI

Mạch đọc thẻ nhớ giao tiếp SPI

Đăng nhập