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; 42 năm trước | ||
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 'Inter-Integrated Circuit', phát âm là I-two-C hoặc cũng có thể là IIC) là một bus nối tiếp hai chiều với hai dây tín hiệu, được phát triển bởi Philips (hiện là NXP Semiconductors) để giao tiếp giữa các IC. Giao tiếp qua bus I²C là đồng bộ và hỗ trợ nhiều master và slave trên cùng một đường truyền. I²C lý tưởng cho các thiết bị cần kết nối đơn giản và tiết kiệm chi phí hơn là yêu cầu tốc độ cao.
SMBus (System Management Bus) là một phiên bản mở rộng của I²C, được Intel giới thiệu vào năm 1995 với các quy định nghiêm ngặt hơn. SMBus nổi bật với độ ổn định và tính tương thích cao, vì vậy nhiều hệ thống I²C hiện nay đã tích hợp các nguyên tắc và chính sách của SMBus, thậm chí hỗ trợ cả hai chuẩn qua lệnh hoặc thay đổi kết nối chân linh kiện.
Quá trình phát triển
Bus I²C được phát triển vào những năm 1980, ban đầu chỉ được sử dụng trong các sản phẩm của Philips. Với những ưu điểm nổi bật về sự đơn giản và hiệu quả, I²C đã được chuẩn hóa và hiện được áp dụng rộng rãi trong các mô-đun 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 sản xuất và thương mại sẽ không phải trả phí. Tuy nhiên, phí sẽ được áp dụng cho việc sở hữu địa chỉ I²C cho các thiết bị slave từ NXP.
Các đối thủ cạnh tranh của NXP bao gồm 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, đều đã cho ra mắt sản phẩm tích hợp bus I²C từ giữa những năm 1990.
Thông số kỹ thuật
Các thiết bị tương thích với bus I²C đều có một giao diện trên chip cho phép giao tiếp qua bus I²C. Các đặc điểm của bus I²C bao gồm:
- Sử dụng hai đường bus: SDA (đường truyền dữ liệu nối tiếp) và SCL (đường xung nhịp nối tiếp).
- Hoạt động theo cơ chế master-slave, cho phép cả master và slave truyền và nhận dữ liệu. Hỗ trợ nhiều master với cơ chế phát hiện va chạm và phân xử khi có va chạm tín hiệu để ngăn ngừa mất dữ liệu khi nhiều master truyền tín hiệu cùng lúc.
- Mỗi thiết bị kết nối vào bus được cấp một địa chỉ duy nhất bằng phần mềm.
- Quá trình truyền dữ liệu nối tiếp hai chiều 8-bit có thể đạt tốc độ lên đến 100 kbit/giây với chế độ Standard, 400 kbit/giây với chế độ Fast, 1 Mbit/giây với chế độ Fast-mode Plus hoặc đến 3.4 Mbit/s với chế độ High-speed. Chế độ Ultra Fast-mode chỉ truyền đơn hướng với tốc độ lên đến 5Mbit/giây.
- Lọc nhiễu các xung nhọn trên đường bus để đảm bảo tính toàn vẹn dữ liệu.
- Số lượng IC tối đa kết nối trên I²C bus chỉ bị giới hạn bởi khả năng của bus.
Thiết kế kỹ thuật
I²C sử dụng hai đường dây hai chiều là SCL và SDA với các cực thu hở và cực máng hở. Cả hai dây này luôn được kéo lên nguồn bằng điện trở kéo lên có giá trị khoảng 4,7 kΩ. Trong trạng thái rảnh (free), cả hai dây SDA và SCL đều ở mức logic cao. Không gian địa chỉ (7-bit hoặc 10-bit) và thông số điện dung của bus quyết định số lượng thiết bị hoặc node có thể kết nối vào bus.
Thiết kế tham khảo
Bus I²C sử dụng 7 bit để định danh địa chỉ. Các node trên bus có thể hoạt động như master hoặc slave:
- Master node: node phát xung đồng hồ và bắt đầu giao tiếp với slave.
- Slave node: node nhận xung đồng hồ và phản hồi khi được địa chỉ hóa bởi master.
Có 4 chế độ hoạt động cho thiết bị trên bus I²C, bao gồm:
- master transmit: Node master gửi dữ liệu đến slave
- master receive: Node master nhận dữ liệu từ slave
- slave transmit: Node slave gửi dữ liệu đến master
- slave receive: Node slave nhận dữ liệu từ master
Bus I²C có thể hoạt động với nhiều master (multi-master bus). Điều này có nghĩa là có thể có nhiều thiết bị cùng điều khiển các thiết bị khác kết nối vào bus I²C.
Để hiểu rõ hơn về hoạt động giữa master và slave, hãy xem xét hai ví dụ dưới đây:
Dựa trên hình minh họa, khi vi điều khiển master (µC Master) muốn gửi thông tin đến vi điều khiển slave (µC Slave), quy trình sẽ như sau:
- µC Master thiết lập địa chỉ (address) cho µC Slave
- µC Master (đang ở chế độ master-transmitter) gửi dữ liệu đến µC Slave (đang ở chế độ slave-receiver)
- µC Master kết thúc quá trình truyền
Dựa trên hình minh họa, khi vi điều khiển master (µC Master) muốn nhận thông tin từ vi điều khiển slave (µC Slave), quy trình sẽ như sau:
- µC Master thiết lập địa chỉ (address) cho µC Slave
- µC Master (đang ở chế độ master-receiver) nhận dữ liệu từ µC Slave (đang ở chế độ slave-transmitter)
- µC Master kết thúc quá trình truyền
Xung đồng hồ
Tần số xung nhịp đồng hồ có thể giảm xuống đến mức 0 Hz. Trên một bus I²C, bạn có thể định địa chỉ cho tối đa 112 nút, với 16 địa chỉ còn lại dành cho các mục đích đặc biệt.
Các hệ điều hành hỗ trợ
- AmigaOS hỗ trợ thành phần i2c.resource cho các phiên bản AmigaOS 4.x và MorphOS 3.x, cùng với thư viện chia sẻ i2c.library (do Wilhelm Noeker phát triển) cho các hệ thống cũ hơn.
- Nền tảng Arduino với thư viện Wire
- Maximite hỗ trợ giao tiếp IC thông qua thành phần trong MMBasic.
TWI (Two-Wire Interface) hoặc TWSI (Two-Wire Serial Interface) là một phiên bản của bus I²C được triển khai trên các bộ xử lý system-on-chip của Atmel và các nhà sản xuất khác.
Ứng dụng
Hiện nay, bus I²C đã trở thành một chuẩn toàn cầu, được tích hợp vào hơn 1000 loại IC từ hơn 50 nhà sản xuất. Các hệ thống đa chức năng sử dụng bus I²C bao gồm SMBus (System Management Bus), PMBus (Power Management Bus), IPMI (Intelligent Platform Management Interface), DDC (Display Data Channel), và ATCA (Advanced Telecom Computing Architecture).
Điểm mạnh đáng chú ý của I²C là khả năng điều khiển nhiều thiết bị chỉ bằng hai chân của vi điều khiển. Điều này so với các công nghệ bus nối tiếp khác như SPI, yêu cầu nhiều chân kết nối và dây tín hiệu hơn để quản lý nhiều thiết bị.
- SMBus
Tài liệu tham khảo
- NXP (2014). Tài liệu hướng dẫn và đặc tả I²C-bus, Phiên bản 6 - Ngày 4 tháng 4 năm 2014 (PDF). NXP. Phiên bản gốc (PDF) lưu trữ ngày 26 tháng 4 năm 2021. Truy cập ngày 14 tháng 2 năm 2021.
Chú giải
Tài nguyên bên ngoài
Các tiêu chuẩn kỹ thuật và Tiêu chuẩn chung của các Bus máy tính có dây | |
---|---|
Tổng quan |
|
Tiêu chuẩn |
|
Lưu trữ |
|
Ngoại vi |
|
Âm thanh |
|
Cầm tay |
|
Nhúng |
|
Chú ý: các bus liệt kê theo sắp xếp tăng dần về tốc độ (thô), bus ở cuối có tốc độ nhanh nhất Category:Bus máy tính |