Tìm Hiểu Cơ Bản Về Giao Tiếp I2C

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.

giao tiếp I2C
Giao tiếp I2C

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.
giao tiếp I2C
Sơ đồ kết nối giữa các thành phần trong giao tiếp 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.

giao tiếp I2C
Địa chỉ Slave trong giao tiếp I2C

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

giao tiếp I2C
Khung truyền dữ liệu giao tiếp-I2C

ư 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.

giao tiếp I2C
Thiết lập quá trình gửi dữ liệu của bên Master

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.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *