CHƯƠNG 2– TÌM HIỂU VỀ PIC16F877A
2.10.2.2. I2C (Inter-Intergrated Circuit).
Đây là một dạng khác của MSSP. Chuẩn giao tiếp I2C cũng có hai chế độ Master, Slave và cũng được kết nối với ngắt. I2C sẽ sử dụng 2 chân để truyền dữ liệu nhận:
- RC3/SCK/SCL: chân truyền xung clock. - RC4/SDI/SDA: chân truyền dữ liệu.
Các khối cơ bản trong sơ đồ khối của I2C không có nhiều khác biệt so với SPI. Tuy nhiên I2C còn có thêm khối phát hiện bit Start và bit Stop của dữ liệu (Start and Stop bit detect) và khối xác định địa chỉ (Match detect).
Các thanh ghi liên quan đến I2C bao gồm:
- Thanh ghi SSPCON và SSPCON2: điều khiển MSSP.
- Thanh ghi SSPSTAT: thanh ghi chứa các trạng thái hoạt động của MSSP.
- Thanh ghi SSPBUF: truyền nhận nối tiếp.
- Thanh ghi SSPSR: thanh ghi dịch dùng để truyền nhận dữ liệu nối tiếp.
- Thanh ghi SSPADD: thanh ghi chứa địa chỉ của giao diện MSSP. - Các thanh ghi SSPCON, SSPCON2 cho phép đọc và ghi. Thanh
ghi SSPSTAT chỉ cho phép đọc và ghi ở 2 bit đầu, 6 bit còn lại chỉ cho phép đọc..
- Thanh ghi SSPBUF chứa dữ liệu sẽ được truyền đi hoặc nhận được và đóng vai trò như một thanh ghi đệm cho thanh ghi dịch dữ liệu SSPSR.
- Thanh ghi SSPADD chứa địa chỉ của thiết bị ngoại vi cần truy xuất dữ liệu của I2C khi hoạt động ở Slave mode. Khi hoạt động ở
Master mode, thanh ghi SSPADD chứa giá trị tạo ra tốc độ baud cho xung dùng để truyền nhận dữ liệu.
Trong quá trình nhận dữ liệu, sau khi nhận được 1 byte dữ liệu hoàn chỉnh, thanh ghi SSPSR sẽ chuyển dữ liệu vào thanh ghi SSPBUF. Thanh ghi không đọc và ghi được, quá trình truy xuất thanh ghi này phải thông qua thanh ghi SSPBUF.
Trong quá trình truyền dữ liệu, dữ liệu cần truyền khi được đưa vào thanh ghi SSPBUF cũng sẽ đồng thời đưa vào thanh ghi SSPSR.
I2C có nhiều chế độ hoạt động và được điều khiển bởi các bit SSPCON<3:0>, bao gồm:
- I2C Master mode, xung clock = fosc/4*(SSPADD+1). - I2C Slave mode, 7 bit địa chỉ.
- I2C Slave mode, 10 bit địa chỉ.
- I2C Slvae mode, 7 bit địa chỉ, cho phép ngắt khi phát hiện bit Start và bit Stop.
- I2C Slave mode, 10 bit địa chỉ, cho phép ngắt khi phát hiện bit Start vaø bit Stop.
- I2C Firmware Control Master mode.
Địa chỉ truyền đi sẽ bao gồm các bit địa chỉ và một bit để xác định thao tác (đọc hay ghi dữ liệu) với đối tượng cần truy xuất dữ liệu.
Khi lựa chọn giao diện I2C và khi Set bit SSPEN, các chân SCL và SDA sẽ ở trạng thái cự thu hở. Do đó trong trường hợp cần thiết ta phải sử dụng điện trở kéo lên ở bên ngoài vi điều khiển, bên cạnh đó cần ấn định các giá trị phù hợp cho các bit TRISC<4:3> ( bit điều khiển xuất nhập các chân SCL và SDA).