Loại | Bus nối tiếp | ||
---|---|---|---|
Lịch sử | |||
Người thiết kế | Philips Semiconductor, ngày nay là NXP Semiconductors | ||
Ngày thiết kế | 1982 | ||
Dữ liệu | |||
Tín hiệu dữ liệu | Cực thu hở và cực máng hở | ||
Width | 1-bit (SDA) với tín hiệu xung nhịp riêng lẻ (SCL) | ||
Bitrate | 0.1, 0.4, 1.0, 3.4 hoặc 5.0 Mbit/s tùy chế độ làm việc | ||
Giao thức | Truyền thông nối tiếp, Bán bán song công |
I²C (viết tắt của từ tiếng Anh "Inter-Integrated Circuit", phát âm tiếng Anh I-two-C, hoặc cũng có thể viết là IIC) là một loại bus nối tiếp hai chiều với hai dây tín hiệu được phát triển bởi hãng sản xuất linh kiện điện tử Philips (nay là hãng NXP Semiconductors) cho quá trình giao tiếp giữa các IC.[1] Truyền thông với bus I²C là quá trình truyền thông đồng bộ nối tiếp, hỗ trợ nhiều master và slave trên đường truyền. I²C phù hợp với các ngoại vi mà sự ưu tiên về kết nối đơn giản và chi phí sản xuất thấp quan trọng hơn là yêu cầu về tốc độ truyền.
SMBus (System Management Bus), là một "chuẩn con" của I²C, được giới thiệu bởi Intel vào năm 1995, với đặc tính sử dụng nghiêm ngặt hơn. SMBus nổi bật bởi tính ổn định và độ tương thích cao. Do đó, các hệ thống I²C ngày nay đã sử dụng một số chính sách và nguyên tắc của SMBus, và đôi khi hỗ trợ cả I²C và SMBus, thông qua việc sử dụng câu lệnh (command) hoặc thay đổi kết nối các chân linh kiện.
Bus I²C được phát triển vào những năm 1980.[2] Ban đầu, loại bus này chỉ được dùng trong các linh kiện điện tử của Philips. Sau đó, do tính ưu việt và đơn giản của nó, I²C đã được chuẩn hóa và được dùng rộng rãi trong các module truyền thông nối tiếp của vi mạch tích hợp ngày nay.
Từ ngày 10 tháng 10 năm 2006, việc triển khai giao thức I²C trong quá trình sản xuất, thương mại sẽ không bị tính phí.[3] Tuy nhiên, việc sở hữu địa chỉ I²C cho các thiết bị slave cung cấp bởi NXP sẽ bị tính phí.
Các đối thủ cạnh tranh của NXP như Siemens AG (sau này là Infineon Technologies AG, và hiện tại là Intel mobile communications), NEC, Texas Instruments, STMicroelectronics (trước đó là SGS-Thomson), Motorola (sau này là Freescale, hiện tại đã sáp nhập vào NXP), Nordic Semiconductor và Intersil, đã giới thiệu các sản phẩm tích hợp bus I²C từ giữa những năm 1990.
Các thiết bị tương thích với bus I²C đều tích hợp một giao diện trên chip (on-chip interface) cho phép các thiết bị đó giao tiếp với nhau thông qua bus I²C.[4] Các tính năng của một bus I²C:[5]
I²C sử dụng 2 đường dây 2 chiều là SCL và SDA với cực thu hở và cực máng hở, 2 dây này luôn được kéo lên nguồn bằng một điện trở kéo lên[6] có giá trị xấp xỉ 4,7 kΩ. Khi bus ở trạng thái rảnh (free), cả 2 dây SDA và SCL đều ở mức logic cao.[6] Không gian địa chỉ (7-bit hoặc 10-bit địa chỉ) và thông số điện dung của bus sẽ giới hạn số lượng thiết bị hoặc node có thể kết nối vào bus.[6]
Bus I²C sử dụng 7 bit để định địa chỉ. Các node trên bus sẽ đóng 2 vai trò là master hoặc slave:[7]
Có 4 chế độ hoạt động cho một thiết bị trên bus I²C, bao gồm:[7]
Bus I²C có thể là một bus có nhiều master (multi-master bus).[7] Tức là có thể có nhiều hơn một thiết bị có thể điều khiển các thiết bị khác kết nối vào bus I²C đó.[7]
Về hoạt động tổng quan giữa master và slave, xét 2 ví dụ sau:
Với hình minh họa, xét trường hợp vi điều khiển master (µC Master trên hình) muốn gởi thông tin đến vi điều khiển slave (µC Slave) trên hình, toàn bộ quá trình diễn ra như sau:[8]
Với hình minh họa, xét trường hợp vi điều khiển master (µC Master trên hình) muốn nhận thông tin từ vi điều khiển slave (µC Slave) trên hình, toàn bộ quá trình diễn ra như sau:[8]
Tần số xung nhịp đồng hồ có thể xuống 0 Hz. Trên một bus I²C có thể định địa chỉ tới 112 nút, 16 địa chỉ còn lại được sử dụng vào mục đích riêng.
TWI (Two-Wire Interface) hoặc TWSI (Two-Wire Serial Interface) về cơ bản là một dạng I²C bus triển khai trên các bộ xử lý system-on-chip của Atmel và các nhà phân phối khác.[11]
Trên thực tế, bus I²C ngày nay đã trở thành một tiêu chuẩn thế giới được triển khai trong hơn 1000 loại IC khác nhau bởi hơn 50 nhà sản xuất IC.[12] Các bus I²C đa tính năng được dùng trong nhiều kiến trúc điều khiển, như SMBus (System Management Bus), PMBus (Power Management Bus), IPMI (Intelligent Platform Management Interface), DDC (Display Data Channel) và ATCA (Advanced Telecom Computing Architecture).[12]
Một điểm mạnh khác của I²C nằm ở khả năng vi điều khiển có thể điều khiển được một mạng lưới các thiết bị khác mà chỉ thông qua 2 chân của vi điều khiển. Với một số công nghệ bus nối tiếp khác cho cùng yêu cầu này, như SPI, thì việc điều khiển sẽ yêu cầu nhiều chân kết nối và dây tín hiệu hơn để kết nối nhiều thiết bị.