Bài viết này, chúng ta sẽ tò mò về giao thức giao tiếp I2C, hartware của nó, cách dữ liệu được truyền cùng các thông số kỹ thuật khác nhau nhưng nó hoạt động.

Bạn đang xem: Giao tiếp i2c

Giới thiệu về giao tiếp I2C

I2C là tên viết tắt của cụm từ giờ anh “Inter-Integrated Circuit”. Nó là một giao thức giao tiếp được trở nên tân tiến bởi Philips Semiconductors để truyền tài liệu giữa một chip xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai tuyến đường truyền tín hiệu.

Do tính đơn giản dễ dàng của nó yêu cầu loại giao thức này được sử dụng rộng thoải mái cho giao tiếp giữa vi điều khiển và tinh chỉnh và mảng cảm biến, những thiết bị hiển thị, sản phẩm công nghệ IoT, EEPROMs, v.v …

Đây là 1 loại giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là các bit dữ liệu được truyền từng bit một theo các khoảng thời hạn đều đặn được tùy chỉnh bởi một tín hiệu đồng hồ tham chiếu.

Đặc điểm

Sau đó là một số sệt điểm quan trọng của giao thức tiếp xúc I2C:

Chỉ cần phải có hai con đường bus (dây) bình thường để điều khiển bất kỳ thiết bị / IC như thế nào trên mạng I2CKhông cần thỏa thuận hợp tác trước về vận tốc truyền tài liệu như trong giao tiếp UART. Vì vậy, vận tốc truyền dữ liệu rất có thể được điều chỉnh bất cứ lúc nào cần thiếtCơ chế đơn giản dễ dàng để xác thực dữ liệu được truyềnSử dụng hệ thống showroom 7 bit để xác minh một vật dụng / IC cụ thể trên bus I2CCác mạng I2C thuận lợi mở rộng. Các thiết bị mới hoàn toàn có thể được kết nối đơn giản với hai đường bus bình thường I2C

Phần cứng

Bus đồ dùng lý I2C

Bus I2C (dây giao tiếp) chỉ có hai dây và được đặt tên là Serial Clock Line (SCL) với Serial Data Line (SDA). Dữ liệu được tương truyền được gửi qua dây SDA với được đồng bộ với tín hiệu đồng hồ thời trang (clock) trường đoản cú SCL. Tất cả các thiết bị / IC trên mạng I2C được liên kết với cùng con đường SCL với SDA như sau:

*

Cả hai tuyến phố bus I2C (SDA, SCL) đều vận động như các bộ lái cực máng hở (open drain). Nó gồm nghĩa là bất kỳ thiết bị / IC bên trên mạng I2C có thể lái SDA cùng SCL xuống tới mức thấp, nhưng quan yếu lái chúng lên đến mức cao. Vì vậy, một điện trở vuốt lên (khoảng 1 kΩ mang lại 4,7 kΩ) được sử dụng cho từng đường bus, để giữ cho chúng ở mức cao (ở điện áp dương) theo mang định.

Lý do sử dụng một khối hệ thống cực máng hở (open drain) là để không xẩy ra hiện tượng ngắn mạch, điều này có thể xảy ra lúc 1 thiết bị cố gắng kéo mặt đường dây lên cao và một số trong những thiết bị khác cố gắng kéo đường dây xuống thấp.

Thiết bị nhà (Master) với tớ (Slave)

Các thiết bị liên kết với bus I2C được phân loại hoặc là thiết bị chủ (Master) hoặc là trang bị Tớ (Slave). Ở bất cứ thời điểm nào thì chỉ tất cả duy nhất một sản phẩm Master làm việc trang thái hoạt động trên bus I2C. Nó điều khiển và tinh chỉnh đường tín hiệu đồng hồ đeo tay SCL và quyết định chuyển động nào đang được tiến hành trên đường tài liệu SDA.

Tất cả những thiết bị đáp ứng nhu cầu các lý giải từ thứ Master này hầu như là Slave. Để khác nhau giữa những thiết bị Slave được kết nối với cùng 1 bus I2C, mỗi thứ Slave được gán một add vật lý 7-bit ráng định.

Khi một sản phẩm công nghệ Master mong muốn truyền dữ liệu đến hoặc nhận dữ liệu xuất phát điểm từ 1 thiết bị Slave, nó xác định địa chỉ thiết bị Slave rõ ràng này trên phố SDA và kế tiếp tiến hành truyền dữ liệu. Bởi vậy, giao tiếp có tác dụng diễn ra giữa sản phẩm Master cùng một thứ Slave cố kỉnh thể.

Tất cả các thiết bị Slave không giống không phản hồi trừ khi add của chúng được chỉ định do thiết bị Master trên mẫu SDA.

*

Giao thức truyền dữ liệu

Giao thức dưới đây (tập hợp các quy tắc) được theo sau vì thiết bị Master và các thiết bị Slave để truyền dữ liệu giữa chúng.

Dữ liệu được truyền giữa đồ vật Master và các thiết bị Slave thông sang một đường tài liệu SDA duy nhất, thông qua các chuỗi có kết cấu gồm các số 0 và 1 (bit). Từng chuỗi số 0 với 1 được call là thanh toán (transaction) và dữ liệu trong mỗi thanh toán có cấu tạo như sau:

*

Điều khiếu nại bắt đầu (Start Condition)

Bất cứ bao giờ một thiết bị nhà / IC quyết định ban đầu một giao dịch, nó sẽ gửi mạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL đưa từ cao xuống thấp.

Khi điều kiện ban đầu được gửi do thiết bị Master, toàn bộ các sản phẩm Slave đều chuyển động ngay cả khi bọn chúng ở cơ chế ngủ (sleep mode) và hóng bit địa chỉ.

*

Khối địa chỉ

Nó bao gồm 7 bit và được bao phủ đầy với địa chỉ cửa hàng của lắp thêm Slave đến / tự đó máy Master phải gửi / nhấn dữ liệu. Toàn bộ các lắp thêm Slave bên trên bus I2C so sánh các bit showroom này với địa chỉ cửa hàng của chúng.

Bit Read / Write 

Bit này xác định hướng truyền dữ liệu. Nếu trang bị Master / IC nên gửi dữ liệu đến thiết bị Slave, bit này được cấu hình thiết lập là ‘0’. Nếu như IC Master cần nhận dữ liệu từ đồ vật Slave, bit này được thiết lập cấu hình là ‘1’.

Bit ACK / NACK

ACK / NACK là viết tắt của Acknowledged/Not-Acknowledged. Nếu địa chỉ vật lý của bất kỳ thiết bị Slave như thế nào trùng với địa chỉ cửa hàng được sản phẩm công nghệ Master phát, quý hiếm của bit này được phối là ‘0’ vì thiết bị Slave. Ngược lại, nó vẫn sinh hoạt mức logic ‘1’ (mặc định).

Khối dữ liệu

Nó bao hàm 8 bit và chúng được thiết lập bởi mặt gửi, với các bit tài liệu cần truyền tới mặt nhận. Khối này được theo sau vày một bit ACK / NACK và được set thành ‘0’ bởi mặt nhận nếu như nó nhận thành công xuất sắc dữ liệu. Ngược lại, nó vẫn nghỉ ngơi mức súc tích ‘1’.

Sự phối hợp của khối dữ liệu theo sau vày bit ACK / NACK được lặp lại cho tới quá trình truyền tài liệu được hoàn tất.

Điều kiện xong (Stop condition)

Sau khi các khung dữ liệu cần thiết được truyền qua mặt đường SDA, máy Master chuyển đường SDA từ mức năng lượng điện áp thấp sang mức năng lượng điện áp cao trước khi đường SCL gửi từ cao xuống thấp.

*

Giao tiếp I2C vận động như cố nào?

Giao tiếp I2C được bước đầu bởi máy Master hoặc để gửi dữ liệu đến sản phẩm Slave hoặc nhận tài liệu từ thiết bị đó. Chúng ta hãy khám phá về cách thao tác của cả hai kịch bản một biện pháp chi tiết.

Gửi tài liệu đến thiết bị Slave

Trình tự chuyển động sau đây diễn ra khi một thứ Master gửi dữ liệu đến một thiết bị Slave rõ ràng thông qua bus I2C:

Thiết bị Master nhờ cất hộ điều kiện bắt đầu đến toàn bộ các máy SlaveThiết bị Master nhờ cất hộ 7 bit địa chỉ của lắp thêm Slave mà lại thiết bị Master muốn giao tiếp cùng cùng với bit Read/Write

*

Mỗi lắp thêm Slave so sánh add được gửi từ lắp thêm Master đến địa chỉ cửa hàng riêng của nó. Nếu địa chỉ cửa hàng trùng khớp, vật dụng Slave gởi về một bit ACK bằng cách kéo mặt đường SDA xuống thấp cùng bit ACK / NACK được thiết lập là ‘0’,. Nếu địa chỉ cửa hàng từ sản phẩm Master không khớp với địa chỉ cửa hàng riêng của thiết bị Slave thì đường SDA ở tại mức cao và bit ACK / NACK sẽ ở tại mức ‘1’ (mặc định).

*

Thiết bị Master gửi hoặc dấn khung dữ liệu. Nếu đồ vật Master mong muốn gửi dữ liệu đến sản phẩm công nghệ Slave, bit Read / Write là mức điện áp thấp. Nếu thứ Master vẫn nhận dữ liệu từ sản phẩm Slave, bit này là mức điện áp cao.

*

Nếu khung dữ liệu được đồ vật Slave nhận ra thành công, nó sẽ thiết lập bit ACK / NACK thành ‘0’, thông báo cho thiết bị Master tiếp tục

*

Sau khi tất cả dữ liệu được gửi cho thiết bị Slave, lắp thêm Master gửi đk dừng để báo hiệu cho tất cả các vật dụng Slave biết rằng bài toán truyền dữ liệu đã kết thúc.

*

Hình tiếp sau đây thể hiện tổng thể các bit tài liệu được gửi trên phố SDA và thiết bị tinh chỉnh chúng khi vật dụng Master gửi dữ liệu đến thứ Slave.

*

Hình dưới đây thể hiện toàn thể các bit dữ liệu được gửi trên đường SDA cùng thiết bị điều khiển chúng khi sản phẩm công nghệ Master nhận tài liệu đến vật dụng Slave.

*

Các chế độ buổi giao lưu của I²C

Dựa vào tốc độ ta chia thành 2 loại

Chế độ chuẩn chỉnh (standard mode) chuyển động ở vận tốc 100 Kbit/s.Chế độ tốc độ thấp (low-speed mode) vận động ở vận tốc 10 Kbit/s.

Nếu phân chia theo quan lại hệ chủ tớ:

Một Master một Slave.Một Master các Slave.Nhiều Master những Slave.

Một Master nhiều Slave

Bởi vị I2C thực hiện địa chỉ, các thiết bị Slave rất có thể được điều khiển từ một thiết bị Master duy nhất. Cùng với 7 bit add tương ứng 128 (27) địa chỉ cửa hàng duy nhất có sẵn. Để liên kết nhiều sản phẩm Slave với cùng một một vật dụng Master duy nhất, hãy nối dây như hình bên dưới, với các điện trở đẩy lên 4.7 kΩ kết nối các đường SDA và SCL cùng với Vcc:

*

Nhiều Master các Slave.

Xem thêm: Câu Hỏi Âm Sắc Là Đặc Trưng Sinh Lí Của Âm Gắn Liền Với Tần Số

Nhiều thiết bị Master có thể được kết nối với một thứ Slave solo hoặc các thiết bị Slave. Sự việc với nhiều thiết bị Master trong cùng một khối hệ thống xuất hiện nay khi hai thiết bị Master cố nạm gửi hoặc nhận dữ liệu cùng một dịp trên mẫu SDA. Để giải quyết vấn đề này, mỗi thiết bị Master cần phát hiện xem con đường SDA thấp xuất xắc cao trước lúc truyền một thông điệp. Nếu mặt đường SDA thấp, điều này có nghĩa là một thiết bị Master khác có quyền điều khiển và tinh chỉnh bus và thiết bị Master còn lại đề xuất đợi để gửi tin nhắn. Nếu đường SDA cao thì bình an để truyền download thông điệp. Để kết nối nhiều thiết bị Master với các thiết bị Slave, hãy sử dụng sơ vật sau đây, với năng lượng điện trở kéo lên 4.7 kΩ kết nối những đường SDA và SCL cùng với Vcc:

*

Tổng kết

I2C là giao thức media nối tiếp đồng điệu phổ biến đổi hiện nay, được sử dụng rộng rãi trong việc liên kết nhiều IC cùng với nhau, hay kết nối giữa IC và các ngoại vi với vận tốc thấp.

Qua bài viết này, tôi hy vọng bạn đã sở hữu những kỹ năng nhất định về loại giao thức này. Nếu bạn có bất kỳ câu hỏi hoặc có chủ ý đóng góp cho bài viết thì vui tươi để lại phản hồi dưới đây. Với hãy nhớ đăng ký để nhấn thêm các nội dung bài viết như cụ này trong hộp thư cho của bạn!