Giao tiếp I2C là gì?

I²C, viết tắt của từ bỏ tiếng Anh“Inter-Integrated Circuit”, làmột loạibus nối tiếpđược trở nên tân tiến bởi hãng sản xuất linh phụ kiện điện tửPhilips. Banđầu, loại bus này chỉ được sử dụng trong cáclinh phụ kiện năng lượng điện tửcủa Philips. Sau kia, bởi vì tínhưu việt vàđơn giản và dễ dàng của nó,I²Cđãđược chuẩn hóa vàđược dùng rộng rãi trong số môđuntruyền thông nối tiếpcủavi mạch tích hợpthời nay.quý khách hàng vẫn xem: Giao tiếp i2c là gì

Đây là một chuẩn kết nối nđính thêm thực hiện cặp dây SCL, SDA. Giao tiếp nối các ngoại vi bằng phương pháp điện thoại tư vấn thúc đẩy . Một Master hoàn toàn có thể kết nối với nhiều slave, mỗi Slave sầu trên phố truyền tất cả shop rất khác nhau.

Bạn đang xem: Giao tiếp i2c là gì


*

Tốc độ:


*

Độ dài bus:


*

lấy ví dụ trong Arduino, sử dụng bình thường bus I2C DS1307 cùng với màn hình hiển thị LCD I2C 1602:


*

Cấu tạo

I²C sử dụng hai đường truyền tín hiệu:

Một đường xung nhịp đồng hồ đeo tay Clochồng (SCL) chỉ do Master phạt đi ( thường thì ngơi nghỉ 100kHz cùng 400kHz. Mức cao nhất là 1Mhz và 3.4MHz).Một mặt đường dữ liệu(SDA) theo 2 phía.Sơ vật dụng liên kết nlỗi hình dưới.
*

Có một xem xét bé dại về xung cloông chồng. Bản hóa học của I2C là tài liệu trên phố SDA chỉ được ghi thừa nhận ngơi nghỉ sườn lên của đôi bàn chân CLK. Do vậy xung clochồng hoàn toàn có thể không nên đúng đắn tốc độ là 1MHz xuất xắc 3.4Mhz. Lợi dụng điểm này hoàn toàn có thể sử dụng 2 chân GPIO để làm chân tiếp xúc I2Cmềmnhưng không nhất thiết phải một chân CLK chế tác xung với tốc độ đúng chuẩn (hoàn toàn có thể chỉ việc dùng delay cùng tắt bật mức logic)

SCL vàSDA luônđược dàn ra mối cung cấp bằng mộtnăng lượng điện trnghỉ ngơi dàn ra cógiátrị giao động 4,7 KOhm(tùy theo từng thiết bị và chuẩn giao tiếp, rất có thể daođụng trong vòng 1KOhmcho 4.7 Kohm. Chụ ý rằng theo cấu hình này, một sản phẩm hoàn toàn có thể ở mức súc tích LOW giỏi cao trlàm việc tuy nhiên ko thể ở dạng HIGH => Chính trngơi nghỉ pull up tạo thành nấc logic HIGH).


Lý vị là những chân này còn có dạng opendrain để sở hữu thểhoạt động ở những nấc điệnáp lô ghích không giống nhau => Dùng mang lại những nhiều loại vi điều khiển và tinh chỉnh, vi xử lý

Việc chọn lọc trsinh sống pull up phù hợp sẽđược trình bàytại đoạn sau.

Các chếđộ hoạtđụng của I²C

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

Chếđộ chuẩn (standard mode) hoạtđụng ở tốcđộ 100 Kbit/s.Chếđộ tốcđộ rẻ (low-speed mode) hoạthễ làm việc tốcđộ 10 Kbit/s.

Nếu chia theo quan hệ tình dục chủ tớ:

Một nhà một tớ.Một công ty những tớ.phần lớn chủ nhiều tớ.

Quá trình truyền dữ liệu

Thiết bị A (chủ) xác địnhđúng liên tưởng của sản phẩm B (Tớ), cùng với việc xác địnhliên can, vật dụng A đã quyếtđịnhđọc giỏi ghi vào sản phẩm tớ.Thiết bị A gửi gữi liệu tới thứ BThiết bị A xong xuôi quá trình truyền tài liệu.Lúc A ước ao nhận tài liệu từ B, quá trình ra mắt tương tự, chỉ không giống A đang nhấn tài liệu tự B.

Cách tấn công địa chỉ

I²C áp dụng 7 bit để định địa chỉ, do đó bên trên một bus rất có thể định can dự cho tới 112 nút, 16 địa chỉ còn lại được áp dụng vào mục đích riêng biệt. Bit sót lại cách thức vấn đề phát âm xuất xắc ghi dữ liệu (một là write, 0 là read)

Ví dụ:

– Địa chỉ của một trang bị là 0x20. Lúc nên phát âm vào vật dụng này thì tkhô cứng ghi sẽ có được quý hiếm 0x40 (thêm bit 0) còn khi ghi thì quý giá là 0x41 (cấp dưỡng 0).

Điểm mạnh của I²C chính là năng suất cùng sự đơn giản của nó: một kân hận tinh chỉnh trung trung khu có thể điều khiển cả một mạng lắp thêm cơ mà chỉ cần nhì lối ra điều khiển.

Định dạng tài liệu truyền

DữliệuđượctruyềntrênbusI2Ctheotừngbit,bitdữliệuđượctruyềnđitạitừng sườn lêncủaxung clochồng bên trên SCKL , Quá trình biến đổi bit dữ liệu xẩy ra lúc SCL tại mức rẻ.

Xem thêm: Đối Kháng Thụ Thể Mineralocorticoid Là Gì, Suy Vỏ Thượng Thận

Start = HIGH lớn LOW on SDA when SCL is HIGHStop = LOW TO HIGH on SDA when SCL is HIGHOther when SCL low => Data!

Mỗibyteđượctruyềnđã chờ dấu hiệu phản hồi là mộtbitACKđểbáohiệuđãnhậndữliệu.=>Mỗi lần I2C vẫn truyền 8bit với dấn 1bit. ACK(Acknowledge : vượt nhận) cùng NACK (Not Acknowledge : Không quá nhận)


Bitcótrọngsốcaonhất(MSB)sẽđượctruyềnđiđầutiên,cácbítsẽđượctruyềnđilầnlượt.Sau8xungclocktrêndâySCL,8bitdữliệuđãđượctruyềnđi.Lúcnàythiếtbịthừa nhận,saukhiđãnhậnđủ8bítdữliệusẽkéoSDAxuốngmứcthấptạomộtxungACK ứngvớixungclockthứ9trêndâySDAđểbáohiệuđãnhậnđủ8bit.ThiếtbịtruyềnkhinhậnđượcbitACKsẽtiếptụcthựchiệnquátrìnhtruyềnhoặckếtthúc.

Thuật toán truyền dấn dữ liệu:

Bước 1:Host khẳng định trang bị nên giao tiếp cùng cơ chế giao tiếp là read xuất xắc là write. Việc này được thực hiện bằng phương pháp gửi 7bit can dự sản phẩm công nghệ và thêm bit sau cuối, 0 nếu như read với 1 giả dụ write.

Bước 2:Remix chế độ bằng phương pháp triển khai thường xuyên việc start và stop.

Cách 3:Gửiđịachỉtkhô nóng ghiđề nghị truynhậpcủathiếtbị cũng nhưchế độread tuyệt write.

Bước 4:Gửihoặcnhận 1bytedữ liệu. Sau khitruyền 1bytedữ liệu, bênnhận đcdữ liệuvẫn gửilại 1bit ACKnhằm xácnhậnsẽ nhậnđượcdữ liệucùng tiếptụctruyềnhoặc bit NACKđể báodìm đctài liệu nhưngkếtthúcquy trình trulặng.

Chụ ý: ASK là bit do slave truyền chđọng ko phải vì chưng master truyền

MộtbytetruyềnđicókèmtheobitACKlàđiềukiênbắtbuộc,nhằmđảmbảochoquá trìnhtruyềnnhậnđượcdiễnrachínhxác.KhikhôngnhậnđượcđúngđịachỉhayLúc muốnkếtthúcquátrìnhgiaotiếp,thiếtbịnhậnsẽgửimộtxungNot‐ACK(SDAởnút cao)đểbáochothiếtbịchủbiết,thiếtbịchủsẽtạoxungSTOPđểkếtthúchaylặplạimộtxungSTARTđểbắtđầuquátrìnhmới.

Chọn trsinh sống Pullup I2C

Do I2C sử dụngcổng output dạng Opendrain/mở cửa colector cần có thể sử dụng với rất nhiều dạngđiệnáp không giống nhau. Để có tác dụng đượcvấn đề này ta đề nghị thực hiện trở pullupnhằm kéo lên mứcđiệnáp phù hợp. Giá trị của trsống pullup kha khá đặc biệt, nếu tìm không cân xứng có thể dẫnđến việc mất mát tín hiệu.

Giá trị trsinh hoạt pull up phù hợp cầnbảo vệ 2 yếu hèn tố:

Thỏa mãn tương xứng nấc logic: Rp(min)Đảm bảo rise time của tín hiệu: Rp(max)

Để IC (microcontroller hoặc processor) dấn đúng nấc xúc tích thì năng lượng điện áp chân cần to hơn VOL(điện áp tối đa nấc LOW). Ta tất cả bí quyết tính trnghỉ ngơi nhỏ dại tốt nhất min nhỏng sau:

Trong khi, do tính chất của I2C bao gồm góp phần rise time. Nếu quý hiếm trlàm việc quá rộng đã dẫnđến việc rise time cao. Nhất là với các mode làm việc vận tốc cao.

Xem kết nối nhỏng một mạch RC (C là tụ kháng sinh) thì ta bao gồm điệnáp theo thời hạn trong mạch RC tính theo cách làm sau:

thường thì, VIH cùng VIL thường tính thứu tự bởi 0.7*VCC với 0.3*VCC nên ta có:

Giá trị rise time được tính:

ví dụ như về tính trlàm việc pull up:

Cho tiếp xúc I2C chuyển động làm việc chính sách Fast-mode, với thông số kỹ thuật Cb=200 pF, Vcc=3.3V, những thông số kỹ thuật sống Table 1. Tính quý hiếm năng lượng điện trsống Pull-up:

Sử dụng các cách làm tính Rp min, Rp max sống trên ta có:

Kết quả: Chọn giá trị trong vòng 966.667 Ω đến1.77 kΩ, chọn lựa cân nhắc thân vận tốc và tiêu thú nguồn.

Ví dụ khác theo tài liệu AN255 của NXP https://www.nxp.com/docs/en/application-note/AN255.pdf:

Mẹo nhỏ tuổi bên trên internert:

Tài liệu UM10204 của NXP:


Tđê mê khảo: https://kienltb.wordpress.com/SLVA689 I2C Bus Pullup Resistor Calculation

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *