I2c là gì

     

I2C kết hợp các tính năng cực tốt của SPI cùng UART. Với I2C, bạn có thể kết nối các slave với 1 master nhất (như SPI) và chúng ta cũng có thể có các master điều khiển và tinh chỉnh một hoặc các slave. Điều này thực sự bổ ích khi bạn muốn có nhiều hơn thế nữa một vi tinh chỉnh và điều khiển ghi dữ liệu vào trong 1 thẻ nhớ nhất hoặc hiển thị văn bản trên một màn hình hiển thị LCD.Bạn sẽ xem: I2c là gì


*

Giống như tiếp xúc UART, I2C chỉ áp dụng hai dây nhằm truyền dữ liệu giữa các thiết bị:

 

SDA (Serial Data) - mặt đường truyền cho master với slave nhằm gửi cùng nhận dữ liệu.

Bạn đang xem: I2c là gì

 

SCL (Serial Clock) - con đường mang bộc lộ xung nhịp.

 

I2C là 1 trong giao thức truyền thông nối tiếp, do vậy tài liệu được truyền từng bit dọc theo một mặt đường duy độc nhất vô nhị (đường SDA).

 

Giống như SPI, I2C là đồng bộ, do đó đầu ra của những bit được đồng hóa hóa với câu hỏi lấy mẫu những bit bởi một tín hiệu xung nhịp được share giữa master với slave. Biểu đạt xung nhịp luôn được tinh chỉnh bởi master.

 

Cách hoạt động vui chơi của I2C

Với I2C, tài liệu được truyền trong các tin nhắn. Lời nhắn được phân thành các khung dữ liệu. Từng tin nhắn gồm một khung địa chỉ cửa hàng chứa showroom nhị phân của showroom slave cùng một hoặc nhiều khung dữ liệu chứa dữ liệu đang rất được truyền. Thông điệp cũng bao gồm điều kiện khởi cồn và đk dừng, các bit hiểu / ghi và những bit ACK / NACK thân mỗi form dữ liệu:


*

Điều khiếu nại khởi động: Đường SDA chuyển từ mức điện áp cao xuống mức điện áp thấp trước lúc đường SCL đưa từ nút cao xuống mức thấp.

 

Điều khiếu nại dừng: Đường SDA chuyển từ mức điện áp thấp sang mức năng lượng điện áp cao sau khi đường SCL chuyển từ nút thấp lên mức cao.

 

 

Bit Đọc / Ghi: Một bit duy nhất hướng đẫn master sẽ gửi tài liệu đến slave (mức điện áp thấp) tốt yêu cầu tài liệu từ nó (mức điện áp cao).

 

Bit ACK / NACK: Mỗi size trong một tin nhắn được theo sau vì chưng một bit chứng thực / không xác nhận. Nếu một khung add hoặc size dữ liệu được trao thành công, một bit ACK sẽ tiến hành trả lại mang lại thiết bị gởi từ thiết bị nhận.

 

Địa chỉ

 

Master gửi địa chỉ của slave nhưng mà nó muốn giao tiếp với phần lớn slave được kết nối với nó. Sau đó, mỗi slave đang so sánh địa chỉ được nhờ cất hộ từ master với địa chỉ cửa hàng của bao gồm nó. Nếu địa chỉ phù hợp, nó đang gửi lại một bit ACK điện áp thấp mang lại master. Nếu add không khớp, slave không làm gì cả và mặt đường SDA vẫn ở tầm mức cao.

Xem thêm: Dgw Là Gì - Xiaomi Xách Tay

 

Bit hiểu / ghi

Khung add bao gồm một bit tuyệt nhất ở cuối tin nhắn mang lại slave biết master mong ghi tài liệu vào nó tuyệt nhận dữ liệu từ nó. Giả dụ master mong gửi dữ liệu đến slave, bit phát âm / ghi ở mức điện áp thấp. Trường hợp master đang yêu thương cầu dữ liệu từ slave, thì bit tại mức điện áp cao.

 


*

Khung dữ liệu

Sau khi master phát hiện tại bit ACK từ bỏ slave, khung dữ liệu đầu tiên đã chuẩn bị sẵn sàng được gửi.

 

Khung dữ liệu luôn luôn có độ nhiều năm 8 bit và được gửi với bit quan trọng nhất trước. Từng khung dữ liệu ngay tiếp đến là một bit ACK / NACK để xác minh rằng size đã được trao thành công. Bit ACK phải được trao bởi master hoặc slave (tùy nằm trong vào loại nào đã gửi dữ liệu) trước khi khung tài liệu tiếp theo có thể được gửi.

 

Sau khi toàn bộ các khung dữ liệu đã được gửi, master hoàn toàn có thể gửi một đk dừng cho slave nhằm tạm dừng quy trình truyền. Điều kiện dừng là sự biến hóa điện áp tự thấp lên cao trên mặt đường SDA sau thời điểm chuyển tiếp tự thấp lên rất cao trên con đường SCL , với đường SCL vẫn ở mức cao.

 

Các bước truyền dữ liệu I2C

Master gửi đk khởi rượu cồn đến phần nhiều slave được kết nối bằng cách chuyển mặt đường SDA từ bỏ mức năng lượng điện áp quyền quý mức năng lượng điện áp thấp trước khi chuyển con đường SCL từ mức cao xuống mức thấp.

 

Master gửi cho mỗi slave địa chỉ cửa hàng 7 hoặc 10 bit của slave nhưng mà nó mong muốn giao tiếp, cùng với bit phát âm / ghi.

 

mỗi slave sẽ so sánh địa chỉ được giữ hộ từ master với địa chỉ cửa hàng của thiết yếu nó. Nếu địa chỉ cửa hàng trùng khớp, slave vẫn trả về một bit ACK bằng cách kéo chiếc SDA xuống thấp cho một bit. Nếu địa chỉ từ master không hợp với địa chỉ của slave, slave rời khỏi đường SDA cao. Master giữ hộ hoặc thừa nhận khung dữ liệu.

 

sau khi mỗi khung tài liệu được chuyển, thiết bị thừa nhận trả về một bit ACK khác mang đến thiết bị gửi để xác thực đã nhận thành công khung.

Xem thêm: Các Món Giảm Cân Từ Khoai Tây Trong 1 Tuần Ngon Miệng, Cách Làm Khoai Tây Nghiền Giảm Cân

 

Để giới hạn truyền dữ liệu, master gửi đk dừng cho slave bằng cách chuyển thay đổi mức cao SCL trước khi chuyển nút cao SDA.

 

Một master với rất nhiều slave

Vì I2C áp dụng định địa chỉ nên nhiều slave hoàn toàn có thể được điều khiển và tinh chỉnh từ một master duy nhất. Với địa chỉ 7 bit sẽ sở hữu được 128 (2 mũ 7) add duy nhất. Việc sử dụng địa chỉ cửa hàng 10 bit ko phổ biến, tuy thế nó hỗ trợ 1.024 (2 mũ 10) địa chỉ duy nhất. Để kết nối nhiều slave cho một master duy nhất, bạn có thể đấu dây như thế này, với điện trở vuốt lên 4,7K Ohm kết nối đường SDA và SCL cùng với Vcc:


*

Nhiều master với khá nhiều slave

Nhiều master hoàn toàn có thể được liên kết với một slave hoặc những slave. Sự cố với nhiều master trong cùng một hệ thống xảy ra khi nhị master cố gắng gửi hoặc nhận tài liệu cùng một thời điểm qua mặt đường SDA. Để giải quyết và xử lý vấn đề này, mỗi master rất cần được phát hiện xem mặt đường SDA thấp xuất xắc cao trước lúc truyền tin nhắn. Nếu đường SDA thấp, điều này có nghĩa là một master khác gồm quyền điều khiển và tinh chỉnh bus cùng master đó cần đợi để gửi tin nhắn nhắn. Nếu đường SDA cao thì có thể truyền tin nhắn an toàn. Để liên kết nhiều master với tương đối nhiều slave, hãy áp dụng sơ đồ sau, với các điện trở đẩy lên 4,7K Ohm kết nối những đường SDA và SCL cùng với Vcc:


*

Ưu điểm với nhược điểm của I2C

Có không ít điều làm việc I2C rất có thể khiến nó nghe tất cả vẻ phức hợp so với các giao thức khác, nhưng lại có một số trong những lý do chính đáng khiến bạn có thể muốn hoặc không muốn sử dụng I2C để kết nối với một thiết bị cụ thể: