0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Giao Tiếp I2C: Hiểu Biết Và Ứng Dụng Cơ Bản Trong Hệ Thống Nhúng

Đăng vào 1 tháng trước

• 3 phút đọc

Chủ đề:

KhaiButDauXuan

Giao Tiếp I2C: Hiểu Biết Và Ứng Dụng Cơ Bản Trong Hệ Thống Nhúng

Đầu xuân năm mới, chúng ta gửi lời chúc tốt đẹp đến cộng đồng kỹ thuật, mong rằng năm nay sẽ có nhiều nội dung chất lượng và hữu ích. Trong bài viết này, chúng tôi sẽ giới thiệu về giao thức truyền thông I2C - một trong những giao thức phổ biến trong các hệ thống nhúng.

Một Vài Khái Niệm Cơ Bản

Trước khi đi sâu vào I2C, hãy cùng chúng tôi tìm hiểu một số thuật ngữ quan trọng:

  • Transmitter: Thiết bị gởi dữ liệu đến bus. Có thể là master-transmitter (gửi dữ liệu chủ động) hoặc slave-transmitter (gửi phản hồi yêu cầu).
  • Receiver: Thiết bị nhận dữ liệu từ bus.
  • Master: Thiết bị khởi tạo truyền nhận dữ liệu, tạo tín hiệu clock, và quản lý quá trình kết thúc truyền nhận.
  • Slave: Thiết bị được truy cập bởi master.
  • Multi-master: Nhiều master tồn tại trên bus mà không gây xung đột dữ liệu.
  • Arbitration: Cơ chế cho phép một master duy nhất kiểm soát bus tại một thời điểm.
  • SDA: Dữ liệu tín hiệu (serial data).
  • SCL: Tín hiệu xung nhịp (serial clock).

Khái Niệm I2C Là Gì?

I2C, viết tắt của Inter-Integrated Circuit, là một giao thức truyền thông nối tiếp (serial communication protocol) được phát triển bởi Philips Semiconductor vào năm 1982. I2C được sử dụng rộng rãi trong các thiết bị điện tử và hệ thống nhúng nhờ vào các đặc điểm sau:

  • Chỉ cần 2 dây bus: SDA (data) và SCL (clock).
  • Hỗ trợ nhiều master và nhiều slave trên cùng một bus.
  • Mỗi slave được định danh bằng một địa chỉ duy nhất.
  • Tốc độ truyền dữ liệu: từ vài trăm kilobits/s đến vài megabits/s, tùy thuộc vào chế độ hoạt động.

Cách I2C Hoạt Động

Quá trình giao tiếp qua I2C thường diễn ra qua các bước sau:

  1. Đảm bảo bus ở trạng thái "free" (cả SDA và SCL đều ở mức cao).
  2. Tạo "START signal" để bắt đầu giao tiếp, các thiết bị lắng nghe dữ liệu trên bus.
  3. Cung cấp xung CLOCK qua SCL cho phép các thiết bị đồng bộ hóa quá trình truyền nhận.
  4. Gửi địa chỉ của thiết bị cần giao tiếp qua bus.
  5. Chỉ định việc gửi hoặc nhận dữ liệu (SEND or RECEIVE) từ thiết bị mục tiêu.
  6. Yêu cầu ACK từ thiết bị mục tiêu cho biết sẵn sàng giao tiếp.
  7. Bắt đầu trao đổi dữ liệu.
  8. Sau mỗi 8-bit dữ liệu, transmitter yêu cầu nhận ACK từ receiver cho mỗi lần truyền.
  9. Kết thúc giao tiếp bằng cách tạo "STOP signal" và giải phóng bus.

Giải Thích Một Số Cơ Chế Quan Trọng

  • Start Signal: Để tạo start signal, master kéo SDA xuống mức thấp rồi kéo SCL xuống mức thấp.
  • Stop Signal: Kết thúc giao tiếp bằng cách kéo SCL lên mức cao và sau đó SDA cũng lên mức cao.
  • ACK Bit: Sau mỗi 1 byte dữ liệu, một bit thứ 9 (ACK bit) được thêm vào để xác nhận giao tiếp thành công. Nếu ACK bit ở mức thấp, giao tiếp thành công; nếu ở mức cao, giao tiếp thất bại.

Kết Luận

I2C là một giao thức giao tiếp hiệu quả và đáng tin cậy cho các thiết bị trong hệ thống nhúng. Hy vọng bài viết này đã cung cấp cho bạn những thông tin bổ ích và giúp bạn hiểu rõ hơn về I2C, cũng như các khái niệm cơ bản liên quan đến nó.

Tài Liệu Tham Khảo

  1. I2C - Wikipedia (truy cập ngày 22 tháng 2 năm 2024).
  2. AN10216-01 I2C Manual (truy cập ngày 22 tháng 2 năm 2024).
  3. TI Application Note (truy cập ngày 22 tháng 2 năm 2024).
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào