Việc truyền dữ liệu chỉ có thể được bắt đầu khi bus không bận.
Trong lúc truyền dữ liệu, đường dữ liệu phải ổn định bất cứ khi nào đường Clock là cao (High).
Do đó, các điều kiện về đường truyền sau được định nghĩa:
- Bus not busy: cả đường dữ liệu và xung đều ở mức cao (High).
- Start data transfer: một sự thay đổi trong trang thái của đường dữ liệu từ
HIGH - LOW trong khi xung clock vẫn cao (H), đây là điều kiện bắt đầu (Start Condition).
- Stop data transfer: một sự thay đổi trong trang thái của đường dữ liệu từ
LOW - HIGH trong khi xung clock vẫn cao (H), đây là điều kiện dừng (Stop Condition).
- Data valid: trạng thái của đường dữ liệu biểu diễn dữ liệu hợp lệ khi mà: sau
điều kiện Start đường dữ liệu ổn định trong khoảng thời gian chu kỳ cao (HIGH) của tín hiệu clock. Dữ liệu trên đường phải thay đổi trong chu kỳ thấp (LOW) của tín hiệu clock. Có 1 xung clock/1 bit dữ liệu. Mỗi dữ liệu truyền đi với điều kiện Start và kết thúc với điều kiện Stop. Số byte dữ liệu truyền giữa điều kiện Start và Stop là không giới hạn và được quyết định bởi thiết bị Master. Sau khi một byte được truyền thì được báo nhận ở bộ thu với bit thứ 9.
- Acknowledge: Mỗi thiết bị nhận khi được định địa chỉ thì phải phát ra tín hiệu
báo nhận sau khi nhận mỗi byte. Thiết bị Master phải phát ra thêm 1 xung clock để ghép với bit báo nhận này.
Thiết bị báo nhận phải kéo đường SDA xuống trong suốt xung clock báo nhận như là cách mà đường SDA ổn định thấp trong chu kỳ High của xung clock báo nhận. Dĩ nhiên, thời gian thiết lập và thời gian giữ (chờ) phải được tính toán đến. Master phải báo hiệu kết thúc dữ liệu đến Slave bằng cách không phát ra một bit báo nhận trên byte cuối cùng mà được ghi vào Slave. Trong trường hơp này, Slave phải để đường dữ liệu ở mức cao (H) để cho phép Master phát ra điều kiện STOP.
2.1.4. Truyền dữ liệu trên bus 2 dây nối tiếp
Tuỳ thuộc vào bit R/ w mà 2 loại truyền dữ liệu sẽ được thực thi.
- Truyền dữ liệu từ master truyền và slave nhận: Master sẽ truyền byte đầu tiên là địa chỉ của slave. Tiếp sau đó là các byte dữ liệu. Slave sẽ gửi lại bit thông báo đã nhận được (bit acknowledge) sau mỗi byte dữ liệu nhận được. Dữ liệu sẽ truyền từ bit có giá trị cao nhất (MSB).
- Truyền dữ liệu từ Slave và Master nhận: byte đầu tiên (địa chỉ của Slave) được truyền tới Slave bởi Master. Sau đó Slave sẽ gửi lại Master bit acknowledge. Tiếp theo đó Slave sẽ gửi các byte dữ liệu tới Master. Master sẽ gửi cho Slave các bit
acknowledge sau mỗi byte nhận được trừ byte cuối cùng, sau khi nhận được byte cuối cùng thì bit acknowledge sẽ không được gửi.
Master phát ra tất cả các chuỗi xung clock và các chỉ thị START và STOP. Sự truyền sẽ kết thúc với chỉ thị STOP hoặc chỉ thị quay vòng START. Khi chỉ thị START quay vòng thì sự truyền chuỗi dữ liệu tiếp theo được thực thi và các bus vẫn chưa được giải phóng. Dữ liệu truyền luôn bắt đầu bằng bit MSB.