3. Họ và tên giáo viên hướng dẫn: TS Nguyễn Trường Thịnh
2.5.5. Giao tiếp SPI
Đây là chuẩn giao tiếp nối tiếp đồng bộ (synchronous receiver transmitter) dùng kết nối giữa các thiết bị ngoại vi với nhau…Theo đó, có ít nhất là một đường xung clock đồng bộ tín hiệu và một đường data để truyền dữ liệu theo mỗi nhịp xung clock.
47
Với cách giao tiếp này sẽ có một Master thiết lập và điều khiển kết nối với một Slave nhận và truyền dữ liệu ngược về Master. Sơ đồ khối truyền nhận của SPI như sau:
Hình 2.33 Sơ đồ khối truyền nhận SPI
Điều mấu chốt của SPI là thanh ghi dịch ở cả Master và Slave, và nguồn xung clock tạo bởi Master. Sau đây là cách Master truyền một byte dữ liệu (gọi là A) cho Slave và cùng lúc đó nó cũng nhận một byte khác (gọi là B) từ Slave. Trước khi truyền, Master ghi A vào thanh ghi dịch của mình và Slave cũng ghi B vào thanh ghi dịch của mình. Sau đó Master tạo ra 8 xung clock, tương ứng mỗi xung clock thì một bit trong thanh ghi dịch của Master được truyền sang thanh ghi dịch của Slave và ngược lại. Sau khi xung clock cuối cùng thì Master hoàn thành nhận B còn Slave hoàn thành nhận A. Có thể nhận thấy rằng quá trình truyền và nhận diễn ra đồng thời do đó đây được gọi là truyền “song công” (duplex).
Để giao tiếp nhiều Slave trên cùng bus SPI ta cần có phương pháp chọn Slave nào mà ta muốn kết nối ngay lúc đó. Đây chính là chức năng của chân SS. Nếu SS treo lên mức cao thì các chân SPI của thiết bị đó là các ngõ vào bình thường, và sẽ không thể nhận dữ liệu qua SPI. Nếu SS ở mức thấp, SPI ở chế độ Slave và có thể truyền nhận dữ liệu qua SPI. Nếu giao tiếp đồng thời hai Salve, chân SS ở mỗi Slave nối với một ngõ ra bất kỳ của Master. Khi muốn truyền SPI với Slave nào thì cho ngõ ra tương ứng với SS của Slave đó xuống mức thấp, các ngõ ra tương ứng với các chân SS của các Salve khác đưa lên mức cao. Do các chân của chuẩn SPI được nối chung giữa Master và tất cả các Slave nên việc quản lý quá trình truyền nhận với một Slave nhất định phải được quy định chặt chẽ (mỗi lần chỉ giao tiếp với “một” Slave) nếu không có thể xảy ra tình trạng xung đột đường truyền.
48
Hình 2.34 Sơ đồ kết nối SPI
Như vậy, việc quy định chân I/O cũng rất quan trọng vì chức năng I/O của các chân trên Master và Slave không giống nhau.
Bảng 2.10 Chức năng các chân kết nối SPI
Tên chân Mater Slave
MOSI Output Input
MISO Input Output
SCK Output Input
SS Người dùng định nghĩa Input