🌱 Bài 21. 8051 I2C Overview
Giống như giao thức SPI, I2C là một giao thức nối tiếp đồng bộ thường được sử dụng để giao tiếp giữa các IC trong cùng bo mạch. Nhưng I2C có một số đặc điểm khác với SPI.
👉 Tổng quan về chuẩn giao tiếp I2C
I2C - Viết tắt của Inter-Integrated Circuit, là một chuẩn truyền thông nối tiếp, đồng bộ. Giống như SPI, đồng bộ ở đây có nghĩa là dữ liệu truyền nhận sẽ được đồng bộ theo xung clock (cụ thể 1 chu kỳ xung clock sẽ cho phép truyền/nhận 1 bit dữ liệu).
I2C hoạt động theo cơ chế Multi Master - Multi Slave, và có thể có nhiều Master cũng như Slave trên đường bus giao tiếp.
Sơ đồ chân:
- SDA - Serial Data, là chân truyền dữ liệu giữa các master - slave.
- SCL - Serial Clock, là chân cấp clock từ các master sang slave để đồng bộ dữ liệu.
👉 Đặc điểm giao thức I2C
Do chỉ có duy nhất 1 đường bus data nên I2C hoạt động theo cơ chế half - duplex. Với việc có nhiều master cũng như slave trên một đường bus data, nên việc quản lý việc master nào giao tiếp với slave nào được quy định bằng phương pháp đánh địa chỉ (cụ thể là 7 bit địa chỉ).
Mỗi slave sẽ được định một địa chỉ cố định duy nhất, và phân biệt với các slave khác. Khi master muốn giao tiếp với một slave nào, nó sẽ gửi địa chỉ lên đường bus SDA, và slave nào có địa chỉ tương ứng sẽ gửi phản hồi về master để bắt đầu giao tiếp.
Một đặc điểm khác của giao thức I2C là cần có điện trở Pullup trên 2 đường bus. Các chân giao tiếp I2C thường được cấu hình ở chế độ Open-drain nên cần các điện trở Pullup này để kéo đường truyền lên mặc định ở mức cao.
👉 Cơ chế truyền nhận dữ liệu
Master sẽ giao tiếp với các slave theo khung truyền như sau:- Start & Stop Condition
Slave Address & Bit Read/Write
Sau Start Condition, Master sẽ gửi 7 bit địa chỉ sang các Slave, cùng với đó là bit Read/Write để xác nhận Master này muốn truyền hay nhận dữ liệu. Các Slave sẽ kiểm tra địa chỉ này và so sánh với địa chỉ của chúng, nếu đúng, slave sẽ phản hồi về master một bit ACK (mức thấp). Trong khi các slave khác sẽ phản hồi là NACK (mức cao mặc định của bus).
👉 Các ứng dụng của I2C
Giao thức I2C được tích hợp trong một số loại thiết bị:
- Giao tiếp giữa vi điều khiển và các mảng cảm biến.
- Giao tiếp các thiết bị hiển thị (LCD, TFT, ...).
- Giao tiếp một số thiết bị IoT, EEPROMs, …