L ỜI CAM Đ OAN i
2.5. Truyền thông đồng bộ I2C 46
I2C (Inter Integrated Circuit): chuẩn truyền thông do hãng Philips Semiconductor sáng lập và xây dựng thành chuẩn 1990.
Là 1 chuẩn truyền thông “multi master”: trên 1 bus có thể có nhiều hơn 1 chip làm master, 1 slave có thể trở thành 1 master nếu nó có khả năng. I2C được thực hiện trên 2 đường SDA và SCL trong đó SDA là đường truyền dữ liệu và SCL là
Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị
cần giao tiếp và tạo xung giữ nhịp trên đường truyền.
Slave: là chip có địa chỉ cốđịnh được gọi bởi Master và phục vụ yêu cầu của Master.
SDA (Serial Data): đường truyền dữ liệu nối tiếp, bit MSB được truyền đầu tiên.
SCL (Serial Clock): xung giữ nhịp nối tiếp, mỗi 1 xung được tạo ra thì 1 bít dữ liệu sẽ được lấy mẫu. Dữ liệu được lấy mẫu khi đường SCL ở mức cao trong mỗi chu kỳ xung nhịp vì vậy SDA chỉ được thay đổi dữ liệu khi ở mức thấp của xung giữ nhịp (trừ Start và Stop condition).
Start and Stop condition: luôn luôn được tạo bởi Master, nếu muốn thực hiện 1 cuộc gọi đến slave thì nó tạo ra 1 Start condition bằng cách kéo trạng thái SDA xuống thấp trong khi SCL đang ở mức cao. Nếu muốn kết thúc qua trình truyền nhận giữa Master và Slave thì Master gửi 1 điều kiên kết thúc được gọi là Stop Condition bằng cách kéo đường SDA lên cao khi SCL đang ở mức cao, Stop condtion chỉ có thể thực hiện khi gói địa chỉ hay gói dữ liệu đã được gửi hết.
Hình 2-29: Start and Stop condition
Repeat Start: sau khi kết thúc truyền nhận mà Master không gửi Stop condition mà tiếp tục thực hiện việc gửi Start condition trạng thái này được gọi là repeat start. Trạng thái này thường sử dụng khi Master muốn lấy dữ liệu liên tiếp từ
Slave.
Định dạng gói địa chỉ: gói địa chỉ trong I2C có định dạng 9 bits
1 bit R/W (“1” read, “0”write).
1 bít ACK (bit xác nhận được slave phản hồi).
Cuộc gọi chung: được Master thực hiện khi muốn gửi 1 gói dữ liệu tới tất cả
các slave. 7 bit địa chỉ trong trường hợp này bằng 0.
Định dạng gói dữ liệu: sau khi qua trình gọi Slave hoàn tất tức có slave đáp lại thì gói dữ liệu tiếp theo luôn là 9 bit với định dạng:
8 bit data.
1 bit Ack.