Cũng giống nhƣ I2C, SPI cũng là một giao diện bus cho phép truyền và nhận dữ liệu với thiết bị bên ngoài nhƣng chƣa đủ thông minh để quản lý bus:
Trang 82
Hình 3.27. Giao diện SPI
Giao diện SPI có 4 chân: một chân clock, một chận chọn slave và hai chân dữ liệu master in/slave out và master out/slave in. Chân clock cung cấp một xung 400kbits/s khi ở chế độ master, hoặc nhận nguồn xung từ bên ngoài khi ở chế độ slave. Bus SPI hoàn toàn chỉ để truyền dữ liệu nối tiếp với tốc độ cao và không giống nhƣ giao diện I2C, nó không có sơ đồ địa chỉ đƣợc xây dựng khi truyền nối tiếp.
Một thiết bị ngoại vi ngoài đƣợc chọn qua chân slave. Thông thƣờng LPC2000 đƣợc kích hoạt ở chế độ chủ và sử dụng các chân vào ra chung để chọn thiết bị SPI mong muốn. Khi SPI ở chế độ slave, chân slave của nó đƣợc đẩy về mức 0 để cho phép SPI chủ truyền thông với nó. Hai chân dữ liệu đƣợc kết nối với thiết bị SPI từ xa và chiều truyền phụ thuộc vào thiết bị hoạt động ở chế độ chủ hay khách (master hay slave). Lập trình qua giao diện SPI có 5 thanh ghi:
- Thanh ghi đến xung (clock counter register) quyết định tốc độ, Pclk đƣợc chia ở giá trị trong bộ đến xung tạo tốc độ cho SPI. Thanh ghi này giữ giá trị nhỏ nhất trong 8 bít.
- Thanh ghi điều khiển đƣợc sử dụng để cấu hình hoạt động của bus SPI. Do các thiết bị SPI chỉ để truyền dữ liệu và có giải rộng các thiết bị có thể kết nối, xung SPI và
Trang 83
đƣờng dữ liệu có thể đƣợc cấu hình để hoạt động trong chế độ cấu hình riêng. Trƣớc hết cần tạo cực (mức thấp hay cao hoặc ở giữa) phân đoạn và xung nhƣ hình sau:
Hình 3.28. Tạo cực và phân đoạn xung clock
Cuối cùng cấu hình hƣớng dữ liệu cho biết MSB hay LSB đƣợc truyền trƣớc.
Hình 3.29. Cấu hình hƣớng dữ liệu qua SPI
- Từng bít trong thanh ghi cấu hình đƣợc cấu hình để kết nối truyền thông với từng thiết bị qua SPI và đƣợc set bởi ngƣời lập trình.
- Dữ liệu đƣợc gửi đi sẽ đƣợc đƣa vào thanh ghi dữ liệu và truyền theo từng byte.