Giao Tiếp SPI Là Gì?
SPI (Serial Peripheral Interface) hay còn gọi là giao diện ngoại vi nối tiếp, được phát triển bởi hãng Motorola. Đây là một chuẩn giao tiếp nối tiếp đồng bộ, thường được sử dụng để trao đổi dữ liệu giữa thiết bị Master và một hoặc nhiều thiết bị Slave.
SPI hỗ trợ truyền dữ liệu ở chế độ full-duplex (song công toàn phần). Điều này có nghĩa là tại một thời điểm, quá trình truyền và nhận dữ liệu có thể diễn ra đồng thời.
SPI là giao tiếp đồng bộ, trong đó quá trình truyền dữ liệu được đồng bộ với xung clock do thiết bị Master tạo ra. Nhờ đó, quá trình truyền nhận dữ liệu được kiểm soát theo từng xung nhịp.
Giao tiếp SPI thường được sử dụng để kết nối với nhiều thiết bị ngoại vi như:
- Bộ nhớ EEPROM.
- RTC (Real-Time Clock – đồng hồ thời gian thực).
- IC âm thanh.
- Các loại cảm biến như cảm biến nhiệt độ, cảm biến áp suất.
- Thẻ nhớ MMC hoặc thẻ SD.
- Các bộ vi điều khiển khác.
Cách Thức Hoạt Động Của Giao Tiếp SPI
Giao tiếp SPI sử dụng 4 đường tín hiệu, vì vậy đôi khi còn được gọi là chuẩn truyền thông 4 dây. Bốn đường tín hiệu chính bao gồm:
SCK – Serial Clock
SCK (Serial Clock) là đường xung clock do thiết bị Master tạo ra và cung cấp cho thiết bị Slave.
Xung SCK có chức năng giữ nhịp cho quá trình giao tiếp SPI. Mỗi nhịp trên chân SCK tương ứng với quá trình truyền hoặc nhận một bit dữ liệu.
Nhờ dữ liệu được đồng bộ với xung clock, quá trình truyền nhận diễn ra ổn định và có thể đạt tốc độ cao.
MISO – Master Input Slave Output
MISO (Master Input Slave Output) là đường tín hiệu được tạo bởi thiết bị Slave và được nhận bởi thiết bị Master.
Đường MISO cần được kết nối giữa thiết bị Master và Slave để truyền dữ liệu từ Slave về Master.
MOSI – Master Output Slave Input
MOSI (Master Output Slave Input) là đường tín hiệu được tạo bởi thiết bị Master và được nhận bởi thiết bị Slave.
Đường MOSI được sử dụng để truyền dữ liệu từ Master đến Slave.
SS – Slave Select
SS (Slave Select) có nhiệm vụ lựa chọn thiết bị Slave cụ thể mà Master muốn giao tiếp. Để chọn một Slave, thiết bị Master sẽ chủ động kéo đường SS tương ứng xuống mức 0 (Low).
Chân SS đôi khi còn được gọi là CS (Chip Select).
Đối với vi điều khiển đóng vai trò Master, chân SS có thể được tạo bằng cách cấu hình một chân GPIO bất kỳ ở chế độ Output.
Khung Truyền SPI
Trong giao tiếp SPI, mỗi chip Master hoặc Slave đều có một thanh ghi dữ liệu 8 bit để thực hiện quá trình truyền và nhận dữ liệu.
Quá trình truyền nhận giữa Master và Slave xảy ra đồng thời. Sau 8 chu kỳ clock, một byte dữ liệu được truyền theo cả hai hướng.
Quá trình trao đổi dữ liệu bắt đầu khi Master tạo một xung clock từ Clock Generator và kéo đường SS của Slave mà nó muốn giao tiếp xuống mức Low.
Sau đó, cứ mỗi xung clock, Master sẽ gửi đi một bit từ Shift Register của mình đến Shift Register của Slave thông qua đường MOSI. Đồng thời, Slave cũng gửi lại một bit dữ liệu cho Master thông qua đường MISO.
Như vậy, sau 8 chu kỳ clock, quá trình truyền và nhận một byte dữ liệu được hoàn tất.
Do dữ liệu của hai thanh ghi được trao đổi đồng thời nên tốc độ trao đổi dữ liệu của SPI diễn ra nhanh và hiệu quả.
Một điểm cần lưu ý là trong giao tiếp SPI chỉ có thể có một thiết bị Master, nhưng có thể có một hoặc nhiều thiết bị Slave cùng lúc. Khi ở trạng thái nghỉ, chân SS của các Slave ở mức 1 (High). Khi muốn giao tiếp với Slave nào, Master chỉ cần kéo chân SS tương ứng xuống mức 0 (Low).
Chế Độ Hoạt Động
Giao tiếp SPI có 4 chế độ hoạt động, phụ thuộc vào hai thông số là cực của xung clock (Clock Polarity – CPOL) và pha của xung clock (Clock Phase – CPHA).
- CPOL dùng để chỉ trạng thái của chân SCK ở trạng thái nghỉ. Chân SCK giữ ở mức cao khi CPOL=1 hoặc mức thấp khi CPOL=0.
- CPHA dùng để chỉ các mà dữ liệu được lấy mẫu theo xung. Dữ liệu sẽ được lấy ở cạnh lên của SCK khi CPHA=0 hoặc cạnh xuống khi CPHA=1.
- Mode 0 (mặc định) – xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệu được lấy mẫu khi chuyển từ thấp sang cao (cạnh lên) (CPHA = 0).
- Mode 1 – xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệu được lấy mẫu khi chuyển từ cao sang thấp (cạnh xuống) (CPHA = 1).
- Mode 2 – xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấy mẫu khi chuyển từ cao sang thấp (cạnh lên) (CPHA = 0).
- Mode 3 – xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấy mẫu khi chuyển từ thấp sang cao (cạnh xuống) (CPHA = 1).
Sơ Đồ Kết Nối Giao Tiếp SPI
Tùy theo số lượng thiết bị Slave và yêu cầu của hệ thống, SPI có thể được triển khai theo nhiều cách kết nối khác nhau.
- 1 thiết bị Master và 1 thiết bị Slave
- 1 thiết bị Master và nhiều thiết bị Slave ( chế độ độc lập – Independent):Ở chế độ này, mỗi thiết bị Slave kết nối với Master được quy định riêng bởi những chân SS khác nhau. Khi thiết bị Master muốn giao tiếp với Slave nào thì kéo chân SS tương ứng xuống mức 0, những chân SS còn lại giữ ở mức 1.
- 1 thiết bị Master và nhiều thiết bị Slave ( chế độ dây chuyền – Daisy): Chân MOSI của Slave này sẽ nối với MISO của Slave tiếp theo. Dữ liệu gửi từ vi điều khiển (hay thiết bị Master), đi vào Slave 1 bằng đường MOSI. Sau đó lại đi ra từ chân MISO của Slave 1, gửi tới chân MOSI của Slave 2, và quá trình này tiếp tục diễn ra theo cách như vậy.
Các Tham Số Kỹ Thuật Của SPI
Một số thông số đáng chú ý của giao tiếp SPI bao gồm khả năng kết nối nhiều Slave và tốc độ truyền dữ liệu.
Số Lượng Thiết Bị Slave
Với giao tiếp SPI, không giới hạn số lượng Slave mà Master có thể kết nối về mặt lý thuyết. Tuy nhiên, số lượng Slave thực tế còn phụ thuộc vào thiết kế phần cứng, số lượng chân SS, tải điện, tốc độ truyền và đặc điểm của từng thiết bị.
Tốc Độ Truyền Dữ Liệu
SPI là giao tiếp full-duplex, cho phép truyền và nhận dữ liệu đồng thời. Chuẩn SPI không quy định một tốc độ truyền tối đa cố định như một số chuẩn giao tiếp khác.
Tốc độ truyền thường có thể đạt hơn 10 Mbps, phụ thuộc vào tần số của tín hiệu xung clock cũng như khả năng của vi điều khiển và thiết bị ngoại vi được sử dụng.
Tốc độ xung clock càng cao thì tốc độ trao đổi dữ liệu càng lớn, tuy nhiên hệ thống vẫn cần đáp ứng các yêu cầu về thiết kế mạch, đường truyền và đặc tính của thiết bị.
Lời Kết
Trên đây là những kiến thức cơ bản về giao tiếp SPI. Hy vọng bài viết đã giúp bạn hiểu rõ hơn về cấu tạo đường truyền, cách thức hoạt động và các chế độ giao tiếp của SPI. Trong những bài viết tiếp theo, ELECFARM sẽ tiếp tục chia sẻ thêm nhiều kiến thức hữu ích về điện tử, tự động hóa và các công nghệ liên quan.

036.495.1695





