Chuẩn giao tiếp I2C cùng với SPI và UART được sử dụng rất phổ biến trong việc kết nối các IC, cảm biến và thiết bị ngoại vi trong mạch điện tử. Vậy giao thức I2C hoạt động theo nguyên tắc nào và có những tham số kỹ thuật gì? Hãy cùng ELECFARM tìm hiểu qua bài viết dưới đây.
Giao Tiếp I2C Là Gì?
I2C (Inter-Integrated Circuit) là một giao thức giao tiếp nối tiếp đồng bộ được phát triển bởi Philips Semiconductors. Giao thức này cho phép truyền và nhận dữ liệu giữa các IC chỉ với hai đường tín hiệu. Dữ liệu được truyền từng bit theo các chu kỳ được thiết lập bởi một tín hiệu đồng hồ (Clock). Bus I2C thường được sử dụng để giao tiếp với nhiều loại thiết bị khác nhau như vi điều khiển, cảm biến, EEPROM và các IC ngoại vi khác.

Cách Hoạt Động Của Giao Tiếp I2C
Cấu Trúc Bus I2C
Bus I2C sử dụng hai đường truyền tín hiệu:
- SCL (Serial Clock Line): Là đường tạo xung nhịp đồng hồ (Clock) và được điều khiển bởi thiết bị Master.
- SDA (Serial Data Line): Là đường truyền và nhận dữ liệu giữa các thiết bị trên bus I2C.

Nguyên Lý Hoạt Động
Giao tiếp I2C hoạt động dựa trên cơ chế truyền nhận dữ liệu giữa thiết bị chủ (Master) và thiết bị tớ (Slave).
Thiết bị Master thường là vi điều khiển, có nhiệm vụ điều khiển tín hiệu trên đường SCL và gửi hoặc nhận dữ liệu thông qua đường SDA đến các thiết bị khác. Các thiết bị nhận lệnh và dữ liệu từ Master được gọi là Slave. Các Slave có thể là IC, cảm biến hoặc thậm chí là các vi điều khiển khác.
Master và Slave được kết nối với nhau thông qua hai đường bus SCL và SDA. Cả hai đường tín hiệu này đều hoạt động ở chế độ Open Drain. Trong chế độ Open Drain, các thiết bị chỉ có thể kéo đường tín hiệu xuống mức thấp (LOW) mà không thể chủ động đưa tín hiệu lên mức cao (HIGH). Điều này giúp tránh trường hợp một thiết bị kéo mức cao trong khi thiết bị khác kéo mức thấp gây ra hiện tượng ngắn mạch. Do đó, trên bus I2C cần sử dụng các điện trở kéo lên có giá trị thường từ 1 kΩ đến 4,7 kΩ để duy trì trạng thái mặc định ở mức cao.

Khung Truyền Dữ Liệu I2C
Dữ liệu trên giao thức I2C được truyền theo cấu trúc nh

ư sau:
Khối Bit Địa Chỉ
Trong hệ thống I2C có thể tồn tại nhiều thiết bị cùng kết nối trên một bus. Để phân biệt các thiết bị này, mỗi thiết bị sẽ được gán một địa chỉ vật lý 7 bit cố định.
Bit Read/Write
Bit này xác định chiều truyền dữ liệu:
- Bit bằng 0: Master gửi dữ liệu đến Slave (Write).
- Bit bằng 1: Master nhận dữ liệu từ Slave (Read).
Bit ACK/NACK
ACK/NACK là viết tắt của Acknowledged và Not Acknowledged. Bit này được sử dụng để xác nhận địa chỉ hoặc dữ liệu đã được nhận thành công.
Nếu địa chỉ nhận được trùng với địa chỉ của Slave, thiết bị sẽ phản hồi ACK bằng mức 0. Ngược lại, tín hiệu sẽ ở trạng thái NACK với mức 1.
Khối Bit Dữ Liệu
Khối dữ liệu gồm 8 bit do thiết bị gửi truyền đến thiết bị nhận. Sau mỗi byte dữ liệu được truyền đi, một bit ACK/NACK sẽ được gửi ngay sau đó để xác nhận việc nhận dữ liệu thành công hay chưa.
Nếu dữ liệu được nhận thành công, bit ACK sẽ ở mức 0. Ngược lại, bit NACK sẽ ở mức 1.
Quá Trình Truyền Nhận Dữ Liệu
Bước 1: Tạo Tín Hiệu Start
Thiết bị Master phát tín hiệu Start bằng cách kéo lần lượt đường SDA và SCL từ mức 1 xuống mức 0.

Bước 2: Gửi Địa Chỉ Thiết Bị
Master gửi địa chỉ 7 bit của Slave cần giao tiếp cùng với bit Read/Write.
Bước 3: Slave Xác Nhận
Slave so sánh địa chỉ nhận được với địa chỉ vật lý của mình.
- Nếu địa chỉ trùng khớp, Slave kéo đường SDA xuống mức 0 và gửi tín hiệu ACK.
- Nếu không trùng khớp, tín hiệu NACK sẽ được gửi.
Bước 4: Truyền Dữ Liệu
Master thực hiện gửi hoặc nhận dữ liệu.
- Nếu Master gửi dữ liệu, bit Read/Write ở mức 0.
- Nếu Master nhận dữ liệu, bit Read/Write ở mức 1.
Sau mỗi byte dữ liệu, Slave sẽ phản hồi ACK để xác nhận dữ liệu đã được nhận thành công.
Bước 5: Tạo Tín Hiệu Stop
Sau khi hoàn tất quá trình truyền dữ liệu, Master phát tín hiệu Stop bằng cách chuyển lần lượt SCL và SDA từ mức 0 lên mức 1.
Tín hiệu này thông báo cho tất cả các thiết bị trên bus rằng quá trình giao tiếp đã kết thúc.
Các Tham Số Kỹ Thuật Của Giao Tiếp I2C
Giao thức I2C có một số tham số kỹ thuật cơ bản như sau:
- Địa chỉ thiết bị sử dụng 7 bit, cho phép tạo ra tối đa 2⁷ địa chỉ. Trong đó có 112 địa chỉ dành cho thiết bị kết nối và 16 địa chỉ được dành riêng cho các mục đích đặc biệt.
- Kích thước của mỗi khung dữ liệu là 8 bit.
- Tốc độ truyền dữ liệu thông thường từ 100 kbps đến 400 kbps, phụ thuộc vào cấu hình hệ thống và giá trị điện trở kéo lên được sử dụng.
Lời Kết
Giao tiếp I2C là một trong những chuẩn truyền thông phổ biến nhất trong lĩnh vực điện tử nhúng. Với ưu điểm chỉ sử dụng hai đường tín hiệu nhưng vẫn cho phép nhiều thiết bị cùng kết nối trên một bus, I2C được ứng dụng rộng rãi trong các hệ thống sử dụng vi điều khiển, cảm biến và IC ngoại vi. Việc hiểu rõ cấu trúc bus, nguyên lý hoạt động và các tham số kỹ thuật của I2C sẽ giúp quá trình thiết kế và phát triển mạch điện tử trở nên hiệu quả hơn.

036.495.1695