1 . Giới thiệu chung về I2C
Ngày nay trong các hệ thống điện tử hiện đại, rất nhiều ICs hay thiết bị ngoại vi cần
phải giao tiếp với các ICs hay thiết bị khác – giao tiếp với thế giới bên ngoài. Vói mục tiêu
đạt được hiệu quả cho phần cứng tốt nhất với mạch điện đơn giản, Phillips đã phát triển
một chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter ‐
Intergrated Circuit – Bus giao tiếp giữa các IC với nhau.
Lịch sử I2C – Thêm vào đây…(Phần này sẽ thêm sau…)
I2C mặc dù được phát triển bới Philips, nhưng nó đã được rất nhiều nhà sản xuất IC
trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có
thể kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument (TI), Maxim‐Dallas,
analog Device, National Semiconductor … Bus I2C được sử dụng làm bus giao tiếp ngoại
vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM, chíp
nhớ như RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ
(DAC), IC điểu khiển LCD, LED…
Ảnh mô phỏng protues.
Ngày nay trong các hệ thống điện tử hiện đại, rất nhiều ICs hay thiết bị ngoại vi cần
phải giao tiếp với các ICs hay thiết bị khác – giao tiếp với thế giới bên ngoài. Vói mục tiêu
đạt được hiệu quả cho phần cứng tốt nhất với mạch điện đơn giản, Phillips đã phát triển
một chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter ‐
Intergrated Circuit – Bus giao tiếp giữa các IC với nhau.
Lịch sử I2C – Thêm vào đây…(Phần này sẽ thêm sau…)
I2C mặc dù được phát triển bới Philips, nhưng nó đã được rất nhiều nhà sản xuất IC
trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có
thể kể ra đây một vài tên tuổi ngoài Philips như: Texas Intrument (TI), Maxim‐Dallas,
analog Device, National Semiconductor … Bus I2C được sử dụng làm bus giao tiếp ngoại
vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM, chíp
nhớ như RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ
(DAC), IC điểu khiển LCD, LED…
1 . 1 . Đặ c đ iểm giao tiếp I2C
Mộ t giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường
truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một hướng.
Như hình vẽ trên, khi một thiết bị ngoại vi kết nối vào đường I2C thì chân SDA của nó sẽ
nối với dây SDA của bus, chân SCL sẽ nối với dây SCL.
Mộ t giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường
truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một hướng.
Như hình vẽ trên, khi một thiết bị ngoại vi kết nối vào đường I2C thì chân SDA của nó sẽ
nối với dây SDA của bus, chân SCL sẽ nối với dây SCL.
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một
điện trở kéo lên (pull‐up resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp
I2C của các thiết bị ngoại vi thường là dạng cực máng hở (open‐drain or open‐collector).
Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao
động trong khoảng 1KΩ đến 4.7KΩ.
Trở lại với hình 1.1, ta thấy có rất nhiều thiết bị (ICs) cùng được kết nối vào một bus
I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được
nhận ra bởi một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết
nối. Mỗi thiết bị có thể hoạt đông như là thiết bị nhận dữ liệu hay có thể vừa truyền vừa
nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hay tớ
(slave).
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân
biệt, nó còn được cấu hình là thiết bị chủ (master) hay tớ (slave). Tại sao lại có sự phân biệt
này ? Đó là vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ (master). Thiết bị
chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ/tớ giao tiếp
thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt
quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động
trong viêc giao tiếp.
điện trở kéo lên (pull‐up resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp
I2C của các thiết bị ngoại vi thường là dạng cực máng hở (open‐drain or open‐collector).
Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao
động trong khoảng 1KΩ đến 4.7KΩ.
Trở lại với hình 1.1, ta thấy có rất nhiều thiết bị (ICs) cùng được kết nối vào một bus
I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được
nhận ra bởi một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết
nối. Mỗi thiết bị có thể hoạt đông như là thiết bị nhận dữ liệu hay có thể vừa truyền vừa
nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hay tớ
(slave).
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân
biệt, nó còn được cấu hình là thiết bị chủ (master) hay tớ (slave). Tại sao lại có sự phân biệt
này ? Đó là vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ (master). Thiết bị
chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ/tớ giao tiếp
thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt
quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động
trong viêc giao tiếp.
Link download project.
EmoticonEmoticon