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 (ở đây là Arduino) và tất cả các thiết bị khác. Bên cạnh đó, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave. Hình 4-8 minh họa cho sơ đồ với một thiết bị Master và một Slave. Bus SPI bao gồm 4 tín hiệu hoặc chân như sau:
Master–Out/Slave–In (MOSI hay SI): cổng ra của bên Master, cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave. Master–In/Slave–Out (MISO hay SO):cổng vào của bên Master, cổng ra của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Slave đến thiết bị Master. Serial Clock (SCK hay SCLK): xung giữ nhịp cho giao tiếp SPI.
Thiết kế mô hình nhà thông minh
Hình 4-35 Kết nối của chuẩn giao tiếp SPI
Nếu dữ liệu phải được truyền bởi chỉ một thiết bị, thì thiết bị kia phải gửi một cái gì đó (dữ liệu giả) và nó phụ thuộc vào thiết bị cho dù dữ liệu được truyền là dữ liệu thực tế hay không. Điều này có nghĩa là đối với mỗi bit được truyền bởi một thiết bị, thiết bị kia phải gửi dữ liệu một bit, tức là Master truyền dữ liệu đồng thời trên MOSI và nhận dữ liệu từ Slave trên đường MISO.
Hình 4-36 Mô hình kết nối Master với nhiều Slave
Nếu Slave muốn truyền dữ liệu, Master phải tạo ra tín hiệu Clock cho phù hợp bằng cách biết khi nào Slave muốn gửi dữ liệu trước. Nếu một Master được kết nối với nhiều Slave thì sơ đồ kết nối như hình 4-10 sau đây: