Giao tiếp SPI được hãng motorola giới thiệp ở giữa năm 1980 và được sử dụng trong các dòng vi điều khiển của họ. Ngày nay giao tiếp SPI được sử dụng phổ biến để giao tiếp với các vi điều khiển, eeprom, IC thời gian thực…
SPI là giao thức nối tiếp đồng bộ đa mục đích (general-purpose synchronous serial interface), trong khi thực hiện giao tiếp SPI dữ liệu truyền và nhận được diễn ra một các đồng thời. Một xung clock đồng bộ dùng để dịch và lấy mẫu thông tin trên hai đường dữ liệu.
Thiết bị giao tiếp SPI sử dụng mối quan hệ master- slaver (chủ-tớ), do thiết bị tớ không được định địa chỉ nên khi giao tiếp một master với nhiều slaver ta cần đường chọn chíp CS, để chọn slave nào cần truyền nhận dữ liệu. Vậy số bus cho giao tiếp này là 3 + (1….n) dây.
Các cách kết nối cơ bản:
Giao tiếp 1 master – 1 slave
Tên và chức năng của các chân
MOSI (Master Output Slave Input.):Chân này được sử dụng để truyền dữ liệu khi thiết bị được cấu hình là master và là chân nhận dữ liệu khi cấu hình là slave
MISO (Master Input Slave Output): Chân này được sử dụng để nhận dữ liệu khi khi thiết bị được cấu hình là Master và truyền dữ liệu khi cấu hình bởi slave
SS: Tín hiệu này được tạo bởi Master để lựa chọn thiết bị slave muốn truyền nhận, Đối với thiết bị master chân này được cấu hình là chân xuất (output) và là chân nhập (input) với slave
SCK: Chân SCK cấp xung đồng bộ để truyền nhận dữ liệu với một Slave nào đó được chọn
Trong giao thức chủ-tớ, chỉ có thiết bị Master mới có thể điều khiển (phát ra) xung SCK. Dữ liệu sẽ không được truyền đi nếu như Master không cung cấp xung SCK và tất cả các thiết bị Slave đều được điều khiển bởi xung nhịp phát ra từ Master trong khi đó, Slave lại không có khả năng phát xung.
Các kiểu kết nối trong SPI
a. Kết nối song song nhiều slave:
Các mode trong giao tiếp SPI:
Tùy thuộc vào các cạnh đồng hồ sử dụng cho việc dịch có 4 mode SPI khác nhau:
SPI Mode | SCK (Cạnh bắt đầu) | SCK (cạnh kết thúc) |
0 | Lấy mẫu dữ liệu tại cạnh lên | Truyền dữ liệu mới tại cạnh xuống |
1 | Truyền dữ liệu mới tại cạnh lên | Lấy mẫu dữ liệu tại cạnh xuống |
2 | Lấy mẫu dữ liệu tại cạnh xuống | Truyền dữ liệu mới tại cạnh lên |
3 | Truyền dữ liệu mới tại cạnh xuống | Lấy mẫu dữ liệu tại cạnh lên |
Hình bên dưới là các dạng sóng minh họa:
Dạng sóng của SPI mode 0 và Mode 2
Dạng sóng của SPI mode 1 và Mode 3