Bus I2C chỉ sử dụng hai tín hiệu: SDA và SCL, được đặt tên I2CSDA và I2CSCL trên vi điều khiển Stellaris. SDA là đườn dữ liệu nối tiếp hai chiều và SCL là đường clock nối tiếp hai chiều. Bus được xem là rỗi, khi cả hai đường ở mức cao. Mỗi giao dịch trên bus I2C dài 9bit, bao gồm 8bit dữ liệu và một bit báo nhận. Số byte trên mỗi lần truyền (được định nghĩa là thời gian giữa một điều kiện START và STOP) là không hạn chế, nhưng mỗi byte phải được theo sau bởi một bit báo nhận, và các dữ liệu phải truyền MSB đầu tiên. Khi một bộ nhận không thể nhận được một byte hoàn thành, nó có thể giữ đường clock SCL ở mức thấp và để bộ truyền vào trạng thái chờ đợi. Việc truyền dữ liệu tiếp tục khi bộ nhận phát các
5.2.1.1 Điều kiện START và STOP
Giao thức của bus I2C có hai trạng thái để bắt đầu và kết thúc giao dịch: START và STOP. Một chuyển từ cao xuồng thấp trên đường SDA khi SCL là cao được định nghĩa là một điều kiện START, và một sự chuyển đổi thấp đến cao trên đường SDA khi SCL là cao được định nghĩa là một điều kiện STOP. Bus được coi là bận sau một điều kiện START và tự do sau một điều kiện STOP.
Hình 5-3. Điều kiện START và STOP
5.2.1.2 Định dạng dữ iệu 7-Bit Địa chỉ
Dữ liệu truyền theo các định dạng như hình 3-4. Sau khi điều kiện START, một địa chỉ slave được gửi. Địa chỉ này dài 7-bit tiếp theo một bit thứ tám, là một bit hướng dữ liệu (bit R / S trong thanh ghi I2CMSA). Một số 0 cho thấy một hoạt động truyền (gửi), và 1 cho biết một yêu cầu dữ liệu (nhận được). Việc truyền dữ liệu luôn luôn kết thúc bằng một điều kiện STOP tạo bởi master, tuy nhiên, một master có thể bắt đầu truyền thông với một thiết bị khác trên bus bằng cách tạo ra một điều kiện START lặp đi lặp lại và địa chỉ slave khác mà không cần tạo ra một điều kiện STOP. Nhiều kết hợp khác nhau định dạng của nhận / gửi sau đó có thể có trong một truyền đơn
Hình 5-4. Hoàn thành truyền dữ liệu với 7-Bit địa chỉ
Bảy bit đầu tiên của byte đầu tiên tạo nên địa chỉ slave. bit thứ tám xác định hướng của tin nhắn. 0 ở vị trí R S / của byte đầu tiên có nghĩa là rằng master sẽ ghi (gửi) dữ liệu vào slave được lựa chọn, và 1 ở vị trí này có nghĩa là master sẽ nhận dữ liệu từ slave.
Hình 5-5. Bit R / S trong Byte đầu tiên
5.2.1.3 Hiệu ực dữ iệu
Các dữ liệu trên đường SDA phải được ổn định mức cao trong thời gian clock, và đường dữ liệu chỉ có thể thay đổi khi SCL là thấp.
5.2.1.4 Báo nhận
Mọi giao dịch bus có một clock yêu cầu báo nhận được tạo ra bởi master. Trong chu kỳ báo nhận, Bộ truyền (có thể là master hay slave) phát dòng SDA. Để xác nhận các giao dịch, bộ nhận phải kéo SDA xuống trong chu kỳ clock báo nhận.
Khi một slave nhận không thừa nhận địa chỉ slave, SDA phải được dời cao bởi slave vì vậy master tạo ra một điều kiện STOP và hủy bỏ việc truyền hiện hành. Nếu là thiết bị master đang hoạt động như một bộ nhận trong quá trình truyền, nó có trách nhiệm ghi nhận mỗi lần truyền của slave. Kể từ khi master điều khiển số lượng byte trong chuyển giao, nó báo hiệu kết thúc dữ liệu đến bộ truyền slave bằng cách không tạo ra báo nhận trên byte dữ liệu cuối cùng. Sau đó slave phải phát SDA để cho phép master tạo ra STOP hoặc một điều kiện START lặp đi lặp lại
5.2.1.5 Phân xử
Một master có thể bắt đầu một truyền chỉ khi bus rỗi. Có thể cho hai hoặc nhiều hơn master tạo một điều kiện START trong thời gian nắm giữ tối thiểu của điều kiện START. Trong những tình huống này, một phân xử sẽ diễn ra trên đường SDA, trong khi SCL là cao. Trong quá trình phân xử, Các master đầu tiên cạnh tranh để đặt một "1" (cao) về SDA trong khi master khác truyền "0" (thấp) sẽ chuyển đổi dữ liệu đầu ra và nghỉ cho đến khi bus rỗi trở lại.
Phân xử có thể xảy ra trên một số bit. Giai đoạn đầu tiên là so sánh các bit địa chỉ, và nếu cả hai master đang cố gắng để giải quyết cùng một thiết bị, phân xử vẫn tiếp tục so sánh bit dữ liệu.