Được phát triển bởi Philips vào những năm 1980, I2C đã trở thành một trong những giao thức truyền thông nối tiếp phổ biến nhất trong ngành điện tử. I2C cho phép liên lạc giữa các linh kiện điện tử hoặc IC với IC, cho dù các thành phần có cùng PCB hay kết nối qua cáp hay không. Tính năng chính của I2C là khả năng có một số lượng lớn các thành phần trên một bus giao tiếp duy nhất chỉ với hai dây giúp I2C hoàn hảo cho các ứng dụng đòi hỏi sự đơn giản và chi phí thấp hơn tốc độ.
Tổng quan về Giao thức I2C
I2C là một giao thức truyền thông nối tiếp chỉ yêu cầu hai đường tín hiệu được thiết kế để giao tiếp giữa các chip trên PCB. I2C ban đầu được thiết kế cho truyền thông 100kbps nhưng các chế độ truyền dữ liệu nhanh hơn đã được phát triển qua nhiều năm để đạt tốc độ lên tới 3,4Mbit. Giao thức I2C đã được thiết lập như một tiêu chuẩn chính thức, cung cấp khả năng tương thích tốt giữa các triển khai I2C và khả năng tương thích ngược tốt.
Tín hiệu I2C
Giao thức I2C chỉ sử dụng hai đường tín hiệu hai hướng để giao tiếp với tất cả các thiết bị trên bus I2C. Hai tín hiệu được sử dụng là:
- Dòng dữ liệu nối tiếp (SDL)
- Đồng hồ dữ liệu nối tiếp (SDC)
Lý do I2C chỉ có thể sử dụng hai tín hiệu để giao tiếp với một số thiết bị ngoại vi là cách giao tiếp giữa bus được xử lý. Mỗi giao tiếp I2C bắt đầu với một địa chỉ 7 bit (hoặc 10 bit) gọi ra địa chỉ của thiết bị ngoại vi phần còn lại của giao tiếp có nghĩa là để nhận được thông tin liên lạc. Điều này cho phép nhiều thiết bị trên bus I2C đóng vai trò của thiết bị chính khi nhu cầu của hệ thống ra lệnh. Để ngăn chặn xung đột giao tiếp, giao thức I2C bao gồm khả năng phát hiện va chạm và trọng tài cho phép truyền thông trơn tru dọc theo xe buýt.
Ưu điểm và hạn chế
Là một giao thức truyền thông, I2C có rất nhiều lợi thế mà thực hiện là một lựa chọn tốt cho nhiều ứng dụng thiết kế nhúng. I2C mang lại những ưu điểm sau:
- I2C chỉ yêu cầu hai đường tín hiệu
- Tốc độ truyền dữ liệu linh hoạt
- Mỗi thiết bị trên xe buýt là địa chỉ độc lập
- Thiết bị có mối quan hệ Master / Slave đơn giản
- I2C có khả năng xử lý nhiều giao tiếp chính bằng cách cung cấp phát hiện xung đột trọng tâm và giao tiếp
- Giao tiếp khoảng cách dài hơn SPI
Với tất cả những ưu điểm này, I2C cũng có một vài hạn chế có thể cần phải được thiết kế xung quanh. Các giới hạn I2C quan trọng nhất bao gồm:
- Vì chỉ có 7 bit (hoặc 10 bit) có sẵn cho việc định địa chỉ thiết bị, các thiết bị trên cùng một bus có thể chia sẻ cùng một địa chỉ. Một số thiết bị có khả năng cấu hình một vài bit cuối cùng của địa chỉ, nhưng điều này vẫn áp đặt một giới hạn của các thiết bị trên cùng một bus.
- Chỉ có một vài tốc độ truyền thông giới hạn có sẵn và nhiều thiết bị không hỗ trợ tốc độ truyền cao hơn. Hỗ trợ một phần cho mỗi tốc độ trên xe buýt là cần thiết để ngăn chặn các thiết bị chậm hơn bắt truyền một phần sẽ dẫn đến hoạt động ổn định.
- Bản chất chung của xe buýt I2C có thể dẫn đến toàn bộ xe buýt treo khi một thiết bị duy nhất trên xe buýt ngừng hoạt động. Đi xe đạp sức mạnh đến xe buýt có thể được sử dụng để khởi động lại xe buýt và khôi phục hoạt động thích hợp.
- Vì thiết bị có thể đặt tốc độ truyền thông của mình, các thiết bị hoạt động chậm hơn có thể làm chậm hoạt động của các thiết bị tốc độ nhanh hơn.
- I2C thu hút nhiều năng lượng hơn các bus giao tiếp nối tiếp khác do cấu trúc liên kết mở của các đường truyền thông.
- Các giới hạn của bus I2C thường giới hạn số lượng thiết bị trên một bus đến khoảng một chục thiết bị.
Các ứng dụng
Bus I2C là một lựa chọn tuyệt vời cho các ứng dụng đòi hỏi chi phí thấp và thực hiện đơn giản hơn là tốc độ cao. Ví dụ, đọc IC bộ nhớ nhất định, truy cập DAC và ADC, đọc cảm biến , truyền và điều khiển hành động hướng người dùng, đọc cảm biến phần cứng và giao tiếp với nhiều bộ vi điều khiển là sử dụng phổ biến của giao thức truyền thông I2C.