Giao diện ngoại vi nối tiếp SPI

Một phần của tài liệu Tìm hiểu vi điều khiển AVR ATMEGA 128 (Trang 37 - 41)

Giao diện ngoại vi nối tiếp (SPI) cho phép chuyển dữ liệu đồng bộ tốc độ cao giao Atmega128 và các thiết bị ngoại vi hoặc giữa nhiều thiết bị AVR với nhau. Giao diện ngoại vi nối tiếp (SPI) bao gồm các đặc điểm dưới đây:

- Chuyển song công, chuyển dữ liệu đồng bộ 3 dây (Three wire)

- Chế độ điều khiển Master/Slave

- Chuyển dữ liệu MSB First hoặc LSB First - 7 bít rate có thể lập trình

- Cờ ngắt cuối chế độ truyền tải - Đánh thức khỏi chế độ chờ Idle

- Chế độ SPI Master (CK/2) Tốc độ kép

Kết nối giữa các CPU Slave và master với SPI được chỉ ra trong hình 3.1. Hệ thống thì bao gồm 2 thanh ghi Shift và bộ tạo xung nhịp Master. SPI Master khởi tạo 1chu kì giao tiếp khi mà có sườn xung xuống của Slave lựa chọn chân SS của Derised Slave. Master và Slave chuẩn bị dữ liệu để gửi vào các thanh ghi Shift tương ứng của chúng, và master sinh ra 1 xung nhịp cần thiết trên nhánh SCK chuyển tiếp dữ liệu. Dữ liệu thì được chuyển từ Master sang Slave trên đầu ra Master Out -> đầu vào Slave In, MOSI, các nhánh, và từ Slave đến Master bằng chân Master In -> Slave Out, MISO, line. Sau mỗi gói dữ liệu, Master sẽ đồng bộ hóa với Slave bằng 1 xung cao lựa chọn Slave, Bít SS, Line.

Khi được cấu hình như là 1 Master, giao diện SPI không có sự tự động điều khiển của đường SS. Việc này phải được điều khiển bằng phần mềm người sử dụng trước khi quá trình giao tiếp có thể bắt đầu. Khi nó được thực hiện việc viết 1 Byte lên thanh ghi dữ liệu SPI sẽ khởi động bộ tạo xung nhịp SPI và phần cứng sẽ di chuyển 8 bít dữ liệu vào trong Slave. Sau khi di

chuyển 1 Byte, bộ tạo xung nhịp SPI dừng lại, việc cài đặt cờ báo kết thúc quá trình chuyển dữ liệu (SPIF). Nếu như ngắt SPI kích hoạt bít (SPIE) trong thanh ghi SPCR được cài đặt, 1 ngắt được truy vấn. Master có thể tiếp tục chuyển byte dữ liệu tiếp theo bằng việc viết vào trong SPDR hoặc tín hiệu kết thúc của gói dữ liệu bằng xung cao được Slave lựa chọn, nhánh SS. Byte đến cuối cùng sẽ được giữ ở trong bộ đệm của thanh ghi cho lần sử dụng cuối cùng.

Khi được cấu hình như là Slave, giao diện SPI sẽ remain sleeping với 3 trạng thái MISO chỉ cần chân SS được điều khiển ở mức cao. Trong trạng thái này, phần mềm có thể cập nhật các thanh ghi dữ liệu SPI – SPDR, nhưng dữ liệu sẽ không được di chuyển ra ngoài bằng những xung nhịp đến trên chân SCK cho đến khi chân SS được điều khiển ở mức thấp. 1 byte vừa hoàn thành sự di chuyển thì cờ báo kết thúc sự di chuyển SPIF được cài đặt.

Nếu như ngắt SPI kích hoạt bít SPIE trong thanh ghi SPCR được cài đặt, 1 ngắt được yêu cầu. Slave có thể tiếp tục đặt dữ liệu mới để gửi vào trong thanh ghi SPDR trước khi quá trình đọc dữ liệu đến tiếp tục. Byte đến cuối cùng sẽ được dữ trong bộ đệm của thanh ghi sau lần sử dụng.

Hệ thống được ghi vào bộ đệm đơn trong quá trình định hướng chuyển dữ liệu và được ghi vào bộ đệm kép trong quá trình định hướng dữ liệu đến. Điều này có nghĩa là các byte được di chuyển không thể được ghi vào thanh ghi dữ liệu SPI trước khi toàn bộ chu kì chuyển dời được hoàn thành. Khi dữ liệu đang đến, tuy nhiên 1 kí tự đã đến phải được đọc từ thanh ghi dữ liệu SPI trước khi kí tự tiếp theo được di chuyển vào trong hoàn toàn. Nói cách khác bít đầu tiên bị mất. Trong chế độ SPI Slave quá trình điều khiển logic sẽ lấy mẫu tín hiệu đến của chân SCK để đảm bảo việc lấy mẫu chính xác của tín hiệu xung nhịp mức thấp cực tiểu và mức cao của chu kì nên là:

- Chu kì thấp: ngắn hơn 2 lần chu kì xung nhịp CPU - Chu kì cao: dài hơn 2 lần chu kì xung nhịp CPU

Khi mà SPI được kích hoạt, hướng dữ liệu của các chân MOSI, MISO, SCK, SS được ghi đè theo bảng 3.1

Pin Hướng Master SPI Hướng Slave SPI

MOSI User Defined Input

MISO Input User Defined

SCK User Defined Input

SS User Defined Input

Một phần của tài liệu Tìm hiểu vi điều khiển AVR ATMEGA 128 (Trang 37 - 41)