Scl là gì

I. I2C LÀ GÌ?

Tất nhiên là vẫn bao gồm nội dung bài viết reviews về I2C bên trên mni-alive.com Tuy nhiên bài viết này mình xin nói đến 1 hướng không giống. Các các bạn quyên tâm có thể xem lại phần đa nội dung bài viết về I2C của các tác giả khác nhé!

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

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

Cấu tạo nên cùng nguyên lý hoạt động

I2C áp 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át đi ( thường thì ở 100kHz cùng 400kHz. Mức cao nhất là 1Mhz cùng 3.4MHz).Một mặt đường dữ liệu(SDA) theo 2 phía.

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

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

Về định hướng lẫn thực tế I²C sử dụng 7 bit để định thúc đẩy, vì vậy trên một bus hoàn toàn có thể có tới 2^7 ảnh hưởng tương ứng với 128 lắp thêm có thể kết nối, cơ mà chỉ gồm 112 , 16 địa chỉ từ lại được sử dụng vào mục tiêu riêng. Bit còn lại công cụ câu hỏi đọc tuyệt 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ự đơn giản dễ dàng của nó: một kăn năn tinh chỉnh và điều khiển trung trung ương có thể điều khiển cả một mạng thiết bị nhưng mà chỉ cần nhị lối ra tinh chỉnh và điều khiển.

Xem thêm: Cách Làm Món Gà Roti - Làm Gà Rô Ti Thơm Ngon Em Nhỏ Đều Nghiền

Hình như I2C còn tồn tại cơ chế 10bit liên hệ tương đương với 1024 ảnh hưởng, tựa như nlỗi 7 bit, chỉ tất cả 1008 trang bị hoàn toàn có thể kết nối, sót lại 16 tương tác sẽ dùng làm áp dụng mục tiêu riêng biệt (Mình không rõ lắm)

Vậy, làm cố gắng như thế nào để nó hoàn toàn có thể giao tiếp với khá nhiều thiết bị?

II. LÀM THẾ NÀO?

Vâng, nlỗi tôi đã nói ở trên, Mỗi đồ vật có một hệ trọng được tải sẵn hoặc 1 shop thiết bị tuyệt nhất nhằm đồ vật công ty (Master) rất có thể tiếp xúc. 2 chân SDA VÀ SCL là 2 chân của tiếp xúc I2C, trong số đó chân SCL là chân Cloông xã, có tính năng đồng bộ hóa vấn đề truyền dữ liệu giữa các thứ, với câu hỏi tạo thành xung cloông chồng kia là do đồ vật chủ (Master). Chân còn sót lại là chân SDA là chân truyền tài liệu (DATA). 2 chân này luôn hoạt động ở cơ chế msinh hoạt, vì chưng vậy để thực hiện được cần được tất cả trở kéo. tức là nối +5v => trnghỉ ngơi => I2C bởi vì các trang bị trên bus i2c hoạt động tại mức tốt. Giá trị thường xuyên được thực hiện cho những điện trnghỉ ngơi là từ bỏ 2K đến tốc độ vào thời gian 400 kbps, và 10K mang đến vận tốc tốt rộng khoảng chừng 100 kbps.

Hãy tưởng tượng các bạn là nhân viên vạc bưu phđộ ẩm, cho 1 khu phố bên trên tay bao gồm bưu phđộ ẩm yêu cầu chuyển phân phát. Tính năng của bạn cũng có thể vạc cùng thừa nhận bưu phẩm để chuyển đi cho cả thành phố, tuy vậy, nhân tố đặc biệt là bạn cần phải tất cả xúc tiến. từng 1 thứ sẽ có 1 shop riêng biệt để sản phẩm chủ rất có thể truy cập để mang dữ liệu 

Hải Đăng PPK

lấy ví dụ cảm ứng tốc độ ADXL345

Có 1 shop độc nhất mang lại riêng biệt module với mặt khác bổ xung bên trong bao gồm 3 hệ trọng cá biệt cho các trục X,Y,Z. Nếu họ đề nghị đọc những dữ liệu trường đoản cú trục X, thứ 1 bọn họ đề xuất cho liên tưởng thiết yếu của Module, tiếp đến new đến xúc tiến của trục X. Việc tìm kiếm thương hiệu các tương tác này chúng ta đề xuất tìm trong datasheet của linh phụ kiện. Đây là datasheet của cảm biến gia tốc ADXL345 Mlàm việc ra phát âm trên mục Register maps những chúng ta có thể thấy liên hệ của trục X là 0x32 với 0x33

0x32 DATAX0 X-Axis Data 0

0x33 DATAX1 X-Axis Data 1

Trong ví dụ tiếp sau đây bản thân sẽ chỉ dẫn 1 trường đúng theo về bài toán liên kết mni-alive.com cùng với 2 cảm biến (Cảm thay đổi vận tốc 10 bậc tự do thoải mái GY - 80 với Cảm biến hóa tốc độ 6 bậc tự do thoải mái GY521), cả 2 cảm ứng phần đa áp dụng giao tiếp I2C

Cảm biến đổi gia tốc GY-521 

Cảm trở thành tốc độ GY-80

Dưới đó là cách liên kết 2 module cùng với mni-alive.com, các chúng ta cũng có thể thấy tương đối xích míc so với ban sơ mình nói, tại sao không có năng lượng điện trsinh sống làm sao kéo nghỉ ngơi đây? Thực tế thì bên phía trong module sẽ bao gồm điện trngơi nghỉ kéo, vì thế bọn họ ko đề nghị kéo gì nữa cả 

*

Bây giờ nhằm giao tiếp cùng với bọn chúng, ta cần phải biết được cửa hàng của nó là gì, đối với mỗi 1 cảm biến bên trên 1 module cơ đã có một cửa hàng riêng. Các bạn cần phải tìm kiếm chúng trong datasheet của từng loại. Ở phía trên bản thân chỉ dẫn những cửa hàng của những cảm ứng để chúng ta luôn thể theo dõi

Đối với GY-521, chỉ gồm một liên can cùng sẽ là 0x68. Các bạn cũng có thể kiểm soát với xác định được địa chỉ của bọn chúng bằng phương pháp thực hiện bạn dạng sketch mẫu I2C Scanner . Nạp code đó vào với nó sẽ tự mang đến các bạn biết các tác động có trên sản phẩm công nghệ. 

Sau Lúc sẽ kiếm tìm thấy xúc tiến của những sản phẩm công nghệ, chúng ta cũng cần được đưa ra địa chỉ của những tkhô cứng ghi phía bên trong của bọn chúng nhằm đọc tài liệu. lấy ví dụ như, trường hợp chúng ta ao ước phát âm tài liệu mang đến trục X từ những cảm ứng 3 trục vận tốc của GY-80, chúng ta rất cần được kiếm tìm cửa hàng khu vực tài liệu của trục X được tàng trữ. Bằng cách gọi datasheet của các cảm ứng của GY-80 và sinh sống đấy là datasheet của cảm biến 3 trục tốc độ ADXL345 mà tôi đã nêu ở chỗ đầu bài viết, chúng ta cũng có thể thấy rằng dữ liệu đến trục X được lưu trữ trong nhị tkhô giòn ghi, DATAX0 với cùng một thúc đẩy 0x32 với DATAX1 với 1 tương tác 0x33.

Bây giờ chúng ta chỉ câu hỏi code cùng hãy phân tích coi code đã làm cho mọi gì?

#include int ADXLAddress = 0x53; // Địa chỉ của cảm biến gia tốc vào module GY80#define X_Axis_Register_DATAX0 0x32 // thúc đẩy 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 //hệ trọng của data1 trục X trong cảm ứng gia tốc ADXL345 trong module GY-80#define Power_Register 0x2D // tkhô giòn ghi tinh chỉnh và điều khiển tích điện cung cấpint X0,X1,X_out;void setup() Wire.begin(); // Khởi sản xuất thư viện WIRE Serial.begin(9600); delay(100); // kích hoạt bản lĩnh đo lường Wire.beginTransmission(ADXLAddress);//ban đầu bài toán truyền cài đặt đề xuất cho tới những cảm biến Wire.write(Power_Register); // Cho phxay đ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ự các tkhô hanh ghi Wire.write(X_Axis_Register_DATAX0); Wire.write(X_Axis_Register_DATAX1); Wire.endTransmission(); // Kết thúc việc truyền dữ liệu từ 2 thanh ghi Wire.requestFrom(ADXLAddress,2); // Yêu cầu truyền 2 byte từ bỏ 2 tkhô hanh ghi if(Wire.available() 

Việc mang tài liệu từ bỏ các cảm biến trên module khác cũng như. vì vậy chúng ta đã biết phương pháp thực hiện tiếp xúc I2C. Và ví dụ 2 module này có vẻ không được nhiều người quyên tâm sử dụng lắm do túi tiền cũng như là về vụ việc các bạn nên vận dụng đến không nhiều. Vì rứa bản thân xin liên tục đưa ra ví dụ thứ 2 nhưng khá nhiều người còn băn khoăn. Đó là Việc sử dụng LCD 1602 module i2c và module thời hạn thực DS1307 với mni-alive.com uno.

 

Trước Lúc gọi tiếp phần này, mình lại 1 lần nữa ước muốn chúng ta gọi datasheet của linh phụ kiện.

Tại trên đây, so với LCD1602 sử dụng module I2C. tương tác tùy trực thuộc vào jump chúng ta cắn bên trên module i2c. Các bạn cũng có thể hiểu datasheet của LCD này tại trên đây Mình lấy ví dụ liên quan OPEN là 0x27 Hoặc nó rất có thể đổi khác trường đoản cú 0Xtrăng tròn - 0X27

Với module thời hạn thực DS1307 những chúng ta cũng có thể hiểu datasheet trên trên đây. Địa chỉ của module DS1307 là 0x68. Làm cố gắng làm sao để biết nó là 0X68 thì chúng ta hãy tham khảo lại phần đầu nội dung bài viết, phần I2C SCANNER.. Bên vào DS1307 sẽ có các thúc đẩy để phát âm các giá trị giờ đồng hồ, phút ít, giây...

do vậy để kết nối 2 module cùng cần sử dụng i2c các bạn chỉ việc Gọi cửa hàng của LCD là 0x27, liên can của DS1307 là 0X68 là rất có thể thực hiện đôi khi 2 module bên trên cùng 2 chân SDA, SCL của mni-alive.com

#include #include "RTClib.h"#include LiquidCrystal_I2C lcd(0xtrăng tròn,16,2); // 0x27 là xúc tiến của lcd 16x2RTC_DS1307 RTC;void thiết lập () lcd.init(); lcd.backlight(); //đèn nền nhảy // thiết đặt số cột với số dòng lcd.begin(16, 2); // được in logo lên screen lcd.print("www.mni-alive.com"); lcd.setCursor(0, 1); lcd.print("haidangppk"); delay (2500); lcd.clear(); // Serial.begin(9600); Wire.begin();Wire.beginTransmission(0x68);// liên hệ 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 chính mình hoàn toàn có thể gồm không nên sót, ao ước chúng ta góp ý. Chúc các bạn thành công!

Leave a Reply

Your email address will not be published. Required fields are marked *