I2c là gì

 - 

I. I2C LÀ GÌ?

Tất nhiên là vẫn tất cả bài viết ra mắt về I2C bên trên hawacorp.vn Tuy nhiên nội dung bài viết này bản thân xin nói tới 1 hướng không giống. Các các bạn quan tâm có thể xem xét lại hầu như nội dung bài viết về I2C của các tác giả khác nhé!

Đầu năm 1980 Phillips vẫn cách tân và phát triển một chuẩn chỉnh tiếp xúc tiếp liền 2 dây được Điện thoại tư vấn là I2C. I2C là tên gọi viết tắt của cụm trường đoản cú Inter-Intergrated Circuit. Đây là con đường Bus tiếp xúc thân các IC cùng nhau. I2C tuy vậy được cải cách và phát triển bươi Philips, nhưng mà nó đã có tương đối nhiều nhà chế tạo IC bên trên trái đất thực hiện. I2C đổi mới một chuẩn chỉnh công nghiệp cho các tiếp xúc điều khiển, rất có thể kể ra đây một vài ba danh tiếng ngoài Philips như: Texas Intrument(TI), MaximDallas, analog Device, National Semiconductor ... Bus I2C được thực hiện làm bus giao tiếp nước ngoài vi mang lại không hề ít loại IC khác nhau như những các loại Vi điều khiển 8051, PIC, AVR, ARM... chip lưu giữ như: RAM tĩnh (Static Ram), EEPROM, cỗ biến đổi giống như số (ADC), số tương tự(DAC), IC điểu khiển LCD, LED...

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

Cấu sinh sản với nguyên tắc hoạt động

I2C sử dụng hai tuyến đường truyền tín hiệu:

Một con đường xung nhịp đồng hồ(SCL) chỉ do Master phân phát đi ( thông thường sinh sống 100kHz với 400kHz. Mức tối đa là 1Mhz và 3.4MHz).Một đường dữ liệu(SDA) theo 2 phía.

Có không ít máy rất có thể cùng được kết nối vào trong 1 bus I2C, tuy vậy sẽ không còn xảy ra cthị xã lầm lẫn giữa những đồ vật, bởi vì mỗi sản phẩm sẽ được nhận biết bởỉ một liên tưởng duy nhất với cùng một quan hệ giới tính chủ/tớ vĩnh cửu trong suốt thời hạn kết nối. Mỗi sản phẩm rất có thể hoạt động như là sản phẩm thừa nhận hoặc truyền dữ liệu giỏi hoàn toàn có thể vừa truyền vừa nhận. Hoạt động truyền tốt thừa nhận còn tùy trực thuộc vào bài toán thứ đó là công ty (master) hãy tớ (slave).

Một vật dụng hay như là một IC Khi kết nối với bus I2C, xung quanh một tác động (duy nhất) để sáng tỏ, nó còn được cấu hình là trang bị chủ hay tớ.Tại sao lại có sự rõ ràng này ? Đó nguyên nhân là bên trên một bus I2C thì quyền tinh chỉnh ở trong về đồ vật công ty. Thiết bị chủ nắm mục đích sinh sản xung đồng hồ mang lại toàn khối hệ thống, lúc giữa hai sản phẩm công nghệ chủ-tớ tiếp xúc thì sản phẩm công nghệ công ty tất cả nhiệm vụ chế tác xung đồng hồ thời trang cùng quản lý tương tác của trang bị tớ trong suốt quy trình tiếp xúc. Thiết bị nhà duy trì phương châm dữ thế chủ động, còn sản phẩm công nghệ tớ giữ lại mục đích bị động vào bài toán giao tiếp.

Về lý thuyết lẫn thực tế I²C sử dụng 7 bit để định hệ trọng, cho nên vì thế trên một bus có thể tất cả cho tới 2^7 liên quan tương xứng với 128 sản phẩm công nghệ có thể liên kết, mà lại chỉ có 112 , 16 địa chỉ từ lại được thực hiện vào mục đích riêng. Bit còn lại biện pháp vấn đề phát âm giỏi ghi tài liệu (1 là write, 0 là read)

Điểm mạnh mẽ của I²C chính là năng suất với sự dễ dàng của nó: một khối điều khiển trung trọng điểm có thể điều khiển cả một mạng trang bị mà lại chỉ cần hai lối ra điều khiển và tinh chỉnh.

Xem thêm: Sinh Năm 1983 Tuổi Quý Hợi Hợp Tuổi Gì, Sinh Năm 1983 Tuổi Quý Hợi Hợp Tuổi Nào

Ngoài ra I2C còn có chính sách 10bit tương tác tương tự cùng với 1024 thúc đẩy, giống như như 7 bit, chỉ tất cả 1008 vật dụng rất có thể kết nối, sót lại 16 địa chỉ sẽ dùng để làm sử dụng mục đích riêng biệt (Mình chưa rõ lắm)

Vậy, có tác dụng vậy nào để nó có thể tiếp xúc với tương đối nhiều thiết bị?

II. LÀM THẾ NÀO?

Vâng, nhỏng tôi đã nhắc đến ở trên, Mỗi thứ có một thúc đẩy được thiết lập sẵn hoặc 1 shop thiết bị nhất để sản phẩm công nghệ nhà (Master) có thể giao tiếp. 2 chân SDA VÀ SCL là 2 chân của giao tiếp I2C, trong các số ấy chân SCL là chân Clochồng, có chức năng đồng điệu hóa bài toán truyền dữ liệu thân những đồ vật, cùng việc tạo thành xung clochồng kia là vì trang bị nhà (Master). Chân còn sót lại là chân SDA là chân truyền dữ liệu (DATA). 2 chân này luôn luôn chuyển động sống chế độ msinh hoạt, bởi vì vậy để sử dụng được cần phải gồm trlàm việc kéo. Tức là nối +5v => trsinh hoạt => I2C bởi vì những sản phẩm trên bus i2c chuyển động ở tầm mức thấp. Giá trị thường xuyên được sử dụng cho những điện trsinh sống là trường đoản cú 2K cho tốc độ vào tầm 400 kbps, cùng 10K mang lại tốc độ phải chăng rộng khoảng 100 kbps.

Hãy tưởng tượng bạn là nhân viên phát bưu phẩm, mang lại 1 thành phố trên tay bao gồm bưu phđộ ẩm buộc phải chuyển phạt. Tính năng của chúng ta có thể vạc cùng dấn bưu phđộ ẩm để đưa đi cho cả khu phố, tuy vậy, yếu tố quan trọng là bạn cần phải có thúc đẩy. mỗi 1 sản phẩm sẽ có một địa chỉ riêng rẽ nhằm thiết bị chủ có thể truy cập để mang dữ liệu 

Hải Đăng PPK

ví dụ như cảm biến gia tốc ADXL345

Có 1 tác động tốt nhất đến riêng module với đôi khi thêm bên phía trong có 3 xúc tiến cá biệt cho các trục X,Y,Z. Nếu bọn họ buộc phải phát âm những tài liệu từ trục X, thứ 1 họ đề nghị đến địa chỉ chủ yếu của Module, tiếp nối mới mang lại liên can của trục X. Việc search thương hiệu những địa chỉ này chúng ta buộc phải tìm vào datasheet của linh phụ kiện. Đây là datasheet của cảm ứng tốc độ ADXL345 Mngơi nghỉ ra hiểu tại mục Register map các chúng ta cũng có thể thấy shop của trục X là 0x32 và 0x33

0x32 DATAX0 X-Axis Data 0

0x33 DATAX1 X-Axis Data 1

Trong ví dụ tiếp sau đây mình vẫn chỉ dẫn 1 trường vừa lòng về Việc kết nối hawacorp.vn với 2 cảm biến (Cảm trở nên tốc độ 10 bậc tự do thoải mái GY - 80 và Cảm đổi mới tốc độ 6 bậc tự do GY521), cả hai cảm ứng đầy đủ sử dụng giao tiếp I2C

Cảm thay đổi gia tốc GY-521 

Cảm biến đổi vận tốc GY-80

Dưới đây là biện pháp liên kết 2 module với hawacorp.vn, những chúng ta có thể thấy hơi mâu thuẫn đối với ban sơ bản thân nói, tại vì sao không tồn tại điện trở làm sao kéo nghỉ ngơi đây? Thực tế thì bên phía trong module vẫn gồm điện trsinh hoạt kéo, chính vì như thế chúng ta ko nên kéo gì nữa cả 

*

Bây tiếng nhằm giao tiếp cùng với bọn chúng, ta nên biết được cửa hàng của nó là gì, so với mỗi 1 cảm biến bên trên 1 module kia vẫn có 1 can dự riêng rẽ. Các bạn phải tra cứu bọn chúng vào datasheet của từng một số loại. Tại trên đây bản thân giới thiệu các xúc tiến của các cảm biến để chúng ta nhân tiện theo dõi

Đối cùng với GY-521, chỉ bao gồm một can hệ cùng chính là 0x68. Các bạn cũng có thể kiểm soát cùng xác định được liên can của chúng bằng cách áp dụng bạn dạng sketch mẫu mã I2C Scanner . Nạp code đó vào và nó sẽ từ bỏ mang lại các bạn biết các can hệ tất cả trên máy. 

Sau khi vẫn tìm kiếm thấy tác động của các đồ vật, họ cũng rất cần được tìm thấy liên hệ của những tkhô giòn ghi bên trong của chúng nhằm hiểu tài liệu. lấy ví dụ, nếu như bọn họ hy vọng gọi dữ liệu mang đến trục X trường đoản cú những cảm ứng 3 trục vận tốc của GY-80, họ rất cần được tìm kiếm liên can chỗ tài liệu của trục X được tàng trữ. Bằng giải pháp phát âm datasheet của các cảm ứng của GY-80 cùng làm việc đây là datasheet của cảm ứng 3 trục vận tốc ADXL345 cơ mà mình đã nêu ở đoạn đầu bài viết, bạn cũng có thể thấy rằng dữ liệu mang đến trục X được lưu trữ trong nhì thanh hao ghi, DATAX0 với cùng một địa chỉ 0x32 cùng DATAX1 với 1 cửa hàng 0x33.

Bây tiếng chúng ta chỉ việc code với hãy phân tích coi code đã có tác dụng phần nhiều gì?

#include int ADXLAddress = 0x53; // Địa chỉ của cảm ứng gia tốc vào module GY80#define X_Axis_Register_DATAX0 0x32 // ảnh hưởng của data0 trục X trong cảm biến gia tốc ADXL345 vào module GY-80#define X_Axis_Register_DATAX1 0x33 //ảnh hưởng của data1 trục X vào cảm ứng gia tốc ADXL345 vào module GY-80#define Power_Register 0x2D // tkhô nóng ghi tinh chỉnh và điều khiển năng lượng cung cấpint X0,X1,X_out;void setup() Wire.begin(); // Khởi tạo ra tlỗi viện WIRE Serial.begin(9600); delay(100); // kích hoạt thiên tài đo lường và tính toán Wire.beginTransmission(ADXLAddress);//ban đầu câu hỏi truyền sở hữu thử dùng tới các cảm ứng Wire.write(Power_Register); // Cho phép đo Wire.write(8); Wire.endTransmission();void loop() { Wire.beginTransmission(ADXLAddress); // Bắt đầu truyền mang đến cảm biếnr //Thu thập tài liệu tự những tkhô hanh ghi Wire.write(X_Axis_Register_DATAX0); Wire.write(X_Axis_Register_DATAX1); Wire.endTransmission(); // Kết thúc câu hỏi truyền dữ liệu từ 2 thanh hao ghi Wire.requestFrom(ADXLAddress,2); // Yêu cầu truyền 2 byte tự 2 tkhô hanh ghi if(Wire.available() 

Việc mang tài liệu tự những cảm biến bên trên module không giống tương tự như. Như vậy các bạn đã biết cách thực hiện tiếp xúc I2C. Và ví dụ 2 module này có vẻ ko được đa số chúng ta quan tâm áp dụng lắm bởi túi tiền cũng tương tự là về sự việc các bạn cần áp dụng mang đến không nhiều. Vì cầm cố bản thân xin liên tục chỉ dẫn ví dụ thứ 2 nhưng tương đối nhiều người còn do dự. Đó là câu hỏi thực hiện LCD 1602 module i2c và module thời hạn thực DS1307 cùng với hawacorp.vn uno.

 

Trước Khi hiểu tiếp phần này, bản thân lại 1 đợt nữa mong ước các bạn gọi datasheet của linh phụ kiện.

Xem thêm: Mặt Béo Để Tóc Gì - Mặt Mập Nên Để Kiểu Tóc Nào

Ở đây, đối với LCD1602 dùng module I2C. can hệ tùy nằm trong vào jump chúng ta gặm bên trên module i2c. Các bạn có thể phát âm datasheet của LCD này tại phía trên Mình rước ví dụ liên tưởng OPEN là 0x27 Hoặc nó có thể thay đổi trường đoản cú 0X20 - 0X27

Với module thời gian thực DS1307 những bạn có thể gọi datasheet trên đây. Địa chỉ của module DS1307 là 0x68. Làm nỗ lực như thế nào để hiểu nó là 0X68 thì chúng ta hãy tham khảo lại phần đầu bài viết, phần I2C SCANNER.. Bên trong DS1307 sẽ sở hữu các tương tác nhằm phát âm các quý giá giờ, phút ít, giây...

vì thế nhằm kết nối 2 module thuộc sử dụng i2c chúng ta chỉ cần điện thoại tư vấn xúc tiến của LCD là 0x27, can hệ của DS1307 là 0X68 là hoàn toàn có thể áp dụng bên cạnh đó 2 module bên trên cùng 2 chân SDA, SCL của hawacorp.vn

#include #include "RTClib.h"#include LiquidCrystal_I2C lcd(0xtrăng tròn,16,2); // 0x27 là hệ trọng của lcd 16x2RTC_DS1307 RTC;void thiết lập () lcd.init(); lcd.backlight(); //đèn nền bật // cài đặt số cột cùng số chiếc lcd.begin(16, 2); // in nhãn hiệu lên screen lcd.print("www.hawacorp.vn"); lcd.setCursor(0, 1); lcd.print("haidangppk"); delay (2500); lcd.clear(); // Serial.begin(9600); Wire.begin();Wire.beginTransmission(0x68);// shop của ds1307Wire.write(0x07); // Wire.write(0x10); // Wire.endTransmission(); RTC.begin(); if (! RTC.isrunning()) Serial.println("RTC is NOT running!"); RTC.adjust(DateTime(__DATE__, __TIME__)); void loop () DateTime now = RTC.now(); lcd.setCursor(6, 0); lcd.print(now.hour(), DEC); lcd.print(":"); lcd.print(now.minute(), DEC); lcd.print(":"); lcd.print(now.second(), DEC); lcd.print(" "); lcd.setCursor(5, 1); lcd.print(now.day(), DEC); lcd.print("/"); lcd.print(now.month(), DEC); lcd.print("/"); lcd.print(now.year(), DEC); lcd.print(""); delay(1000);Bài viết của mình có thể gồm không nên sót, mong muốn các bạn góp ý. Chúc các bạn thành công!