Giao tiếp SPI với vi điều khiển PIC PHẦN 1

0
1416

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 SPI

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

 

Cả Master và Slave đều có thanh ghi dịch nối tiếp ở bên trong. Thiết bị Master bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một Byte vào thanh ghi dịch của nó, sau đó Byte dữ liệu sẽ được đưa sang Slave theo đường tín hiệu MOSI (SDI), Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó ngược trở về Master thông qua đường tín hiệu MISO (SDO). Bằng cách này, dữ liệu của hai thanh ghi sẽ được trao đổi với nhau. Việc đọc và ghi dữ liệu vào Slave diễn ra cùng một lúc nên tốc độ trao đổi dữ liệu diễn ra rất nhanh. Do đó, giao thức SPI là một giao thức rất có hiệu quả.

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:

giao tiếp SPI

b. Kết nối Daisy chain

giao tiếp SPI

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 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:

SPI mode 0 và mode 2

 

                         Dạng sóng của SPI mode 0 và Mode 2

 

 

SPI mode 1 và mode 3

                       Dạng sóng của SPI mode 1 và Mode 3

Leave a Reply