CHƯƠNG 2– TÌM HIỂU VỀ PIC16F877A
2.10.2.1. SPI (Serial Pheripheral Interface).
Hình 2.21: Sơ Đồ Khối MSSP (Giao Diện SPI).
Chuẩn giao tiếp SPI cho phép truyền nhận đồng bộ. Ta cần sử dụng 4 chân cho chuẩn giao tiếp này:
- RC5/SDO: ngõ ra dữ liệu dạng nối tiếp (Serial Data output).
- RC4/SDI/SDA: ngõ vào dữ liệu dạng nối tiếp (Serial Data Input). - RC3/SCK/SCL: xung đồng bộ nối tiếp (Serial Clock).
- RA5/AN4/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) khi giao tiếp ở chế độ Slave mode.
Các thanh ghi liên quan đến MSSP khi hoạt động ở chuẩn giao tiếp SPI bao gồm:
- Thanh ghi điều khiển SSPCON, thanh ghi này cho phép đọc và ghi. - Thanh ghi trạng thái SSPSTAT, thanh ghi này chỉ cho phép đọc và
ghi ở 2 bit trên, 6 bit còn lại chỉ cho phép đọc.
- Thanh ghi đóng vai trò là buffer truyền nhậ SSPBUF, dữ liệu truyền đi hoặc nhận được sẽ được đưa vào thanh ghi này.
SSPBUF không có cấu trúc đệm 2 lớp (doubled-buffer), do đó dữ liệu đưa vào thanh ghi SSPBUF ghi nàysê lập tức được ghi vào thanh ghi thanh ghi SSPSR.
- Thanh ghi dịch dữ liệu SSPSR dùng để dịch dữ liệu vào hoặc ra Khi 1 byte dữ liệu được nhận hoàn chỉnh, dữ liệu sẽ từ thanh ghi SSPSR chuyển qua thanh ghi SSPBUF và cờ hiệu được Set, đồng thời ngắt sẽ xảy ra.
Khi sử dụng chuẩn giao tiếp SPI trước tiên ta cần thiết lập các chế độ cho giao diện bằng cách đưa các giá trị thích hợp vào hai thanh ghi SSPCON và SSPSTAT. Các thông số cần thiết lập bao gồm:
- Master mode hay Slave mode. Đối với Master mode, xung clock đồng bộ sẽ được nhận từ bên ngoài qua chân RC3/SCK/SCL. Đối với Slave mode, xung clock đồng bộ sẽ được nhận từ bên ngoài qua chân RC3/SCK/SCL.
- Các chê độ của Slave mode.
- Mức logic của xung clock khi ở trạng thái tạm ngưng truyền dữ liệu (Idle).
- Cạnh tác động của xung clock đồng bộ (cạnh lên hay cạnh xuống). - Tốc độ xung clock (khi hoạt động ở Master mode).
- Thời điểm xác định mức logic của dữ liệu ( ở giữa hay ở cuối thời gian 1 bit dữ liệu được đưa vào).
- Master mode, Slave mode và các chế độ của Slave mode được điều khiển bởi các bit SSPM3:SSPM0 (SSPCON<3:0>)