I2C – Inter-Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990. I2C đƣợc thực hiện trên 2 đƣờng SDA (Serial Data) và SCL (Serial Clock) trong đó SDA là đƣờng truyền/nhận dữ liệu và SCL là đƣờng xung nhịp. Các đƣờng SDA và SCL đƣợc cấu hình trở treo.
Hình 2-25 Các thiết bị I2C cùng kết nối vào 2 đường dây SDA, SCL được treo trở
SDA – Serial Data: là đƣờng dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay dữ liệu đều đƣợc truyền trên đƣờng này theo thứ tự từng bit một. Chú ý là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) đƣợc truyền trƣớc nhất, đặc điểm này ngƣợc lại với chuẩn UART.
SCL –Serial Clock: là đƣờng giữ nhịp nối tiếp. I2C là chuần truyền thông nối tiếp đồng bộ, cần có 1 đƣờng tạo xung giữ nhịp cho quá trình truyền/nhận, cứ mỗi xung trên đƣờng giữ nhịp SCL, một bit dữ liệu trên đƣờng SDA sẽ đƣợc lấy mẫu (sample). Dữ liệu nối tiếp trên đƣờng SDA đƣợc lấy mẫu khi đƣờng SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đƣờng SDA không đƣợc đổi trạng thái khi SCL ở mức cao (trừ START và STOP condition). Chân SDA có thể đƣợc đổi trạng thái khi SCL ở mức thấp.
49
Start Condition: điều kiện bắt đầu từ trạng thái nghỉ, khi cả SDA và SCL ở mức cao nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA xuống thấp trong khi SCL vẫn cao. Trạng thái này gọi là START Condition ( gọi tắt là S).
Stop Condition: Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu, nếu Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition. STOP condition đƣợc Master thực hiện bằng cách kéo chân SDA lên cao khi đƣờng SCL đang ở mức cao. STOP condition chỉ đƣợc tạo ra sau khi địa chỉ hoặc dữ liệu đã đƣợc truyền/nhận.
Repeat Start: lặp lại bắt đầu khoảng giữa START và STOP condition là khoảng bận của đƣờng truyền, các Master khác không tác động đƣợc vào đƣờng truyền trong khoảng này. Trƣờng hợp sau khi kết thúc truyền/nhận mà Master không gởi STOP condition lại gởi thêm 1 START condition gọi là REPEAT START. Khả năng này thƣờng đƣợc dùng khi Master muốn lấy dữ liệu liên tiếp từ các Slaves. Hình bên dƣới mô tả các Master tạo ra START, STOP và REPEAT START.
Address Packet Format: định dạng gói địa chỉ, tất cả các thiết bị I2C đều có một địa chỉ cố định gọi là Device Address (địa chỉ thiết bị). Khi một Master muốn giao tiếp với một Slave nào đó, nó trƣớc hết tạo ra một START condition và tiếp theo là gởi địa chỉ Device address của Slave cần giao tiếp trên đƣờng truyền, vì thế xuất hiện khái niệm “gói địa chỉ” (Address Packet).
Data Packet Format: định dạng gói dữ liệu, sau khi địa chỉ đã đƣợc phát đi, Slave đã đáp lại Master bằng ACK thì quá trình truyền/nhận dữ liệu sẽ diễn ra giữa cặp Master/Slave này. Tùy vào bit R/W trong gói địa chỉ, dữ liệu có thể đƣợc truyền theo hƣớng từ Master đến Slave hay từ Slave đến Master. Dù di chuyển theo hƣớng nào, gói dữ liệu luôn bao gồm 9 bits trong đó 8 bits đầu là dữ liệu và 1 bit cuối là bit ACK. Tám bits dữ liệu do thiết bị phát gởi và bit ACK do thiết bị nhận tạo ra.
50