Trong các thiết bị gia dụng hiện đại, thiết bị điện tử công nghiệp và các thiết bị viễn thông khác nhau, thường có thể tìm thấy các giải pháp tương tự, mặc dù các sản phẩm thực tế có thể không liên quan đến nhau. Ví dụ: hầu hết mọi hệ thống đều bao gồm những điều sau:
- một thiết bị điều khiển "thông minh" nhất định, mà trong phần lớn các trường hợp là một máy vi tính chip đơn;
- các thành phần mục đích chung như bộ đệm LCD, RAM, cổng I / O, EEPROM hoặc bộ chuyển đổi dữ liệu chuyên dụng;
- thành phần cụ thể bao gồm mạch điều chỉnh kỹ thuật số và xử lý tín hiệu cho hệ thống video và radio.
Làm thế nào để tối ưu hóa ứng dụng của họ?
Để tận dụng tối đa các giải pháp phổ biến này vì lợi ích của các nhà thiết kế và nhà sản xuất, cũng như để cải thiện hiệu suất tổng thể của các phần cứng khác nhau và đơn giản hóa các thành phần mạch ứng dụng, Philips bắt đầu phát triển thiết bị hai chiều hai dây đơn giản nhất xe buýt cung cấp liên chip hiệu quả nhấtđiều khiển. Xe buýt này cung cấp truyền dữ liệu qua giao diện I2C.
Ngày nay, phạm vi sản phẩm của nhà sản xuất bao gồm hơn 150 CMOS, cũng như các thiết bị lưỡng cực tương thích với I2C và được thiết kế để hoạt động trong bất kỳ danh mục nào được liệt kê. Cần lưu ý rằng giao diện I2C ban đầu được tích hợp sẵn trong tất cả các thiết bị tương thích, do đó chúng có thể dễ dàng giao tiếp với nhau bằng cách sử dụng một bus đặc biệt. Do việc sử dụng một giải pháp thiết kế như vậy, nó có thể giải quyết được một số lượng lớn các vấn đề về giao tiếp giữa các thiết bị khác nhau, điều này khá điển hình cho sự phát triển của các hệ thống kỹ thuật số.
Lợi ích chính
Ngay cả khi bạn nhìn vào mô tả ngắn gọn về các giao diện UART, SPI, I2C, bạn có thể làm nổi bật những ưu điểm sau của giao diện sau:
- Để làm việc, bạn chỉ cần hai dòng - đồng bộ hóa và dữ liệu. Bất kỳ thiết bị nào kết nối với một bus như vậy sau đó đều có thể được lập trình định địa chỉ tới một địa chỉ hoàn toàn duy nhất. Tại bất kỳ thời điểm nào, có một mối quan hệ đơn giản cho phép các bản gốc hoạt động như bộ phát chính hoặc bộ thu chính.
- Bus này cung cấp khả năng có nhiều bản cái cùng một lúc, cung cấp tất cả các phương tiện cần thiết để xác định va chạm, cũng như phân xử để ngăn ngừa hỏng dữ liệu trong trường hợp hai hoặc nhiều bản cái bắt đầu truyền thông tin đồng thời. Ở chế độ tiêu chuẩnchỉ truyền dữ liệu 8-bit nối tiếp được cung cấp với tốc độ không quá 100 kbps và ở chế độ nhanh, ngưỡng này có thể tăng lên bốn lần.
- Các chip sử dụng một bộ lọc tích hợp đặc biệt giúp ngăn chặn hiệu quả các đợt tăng và đảm bảo tính toàn vẹn của dữ liệu tối đa.
- Số lượng chip tối đa có thể được kết nối với một bus chỉ bị giới hạn bởi công suất tối đa có thể của nó là 400 pF.
Lợi ích cho Người thi công
Giao diện I2C, cũng như tất cả các chip tương thích, có thể tăng tốc đáng kể quá trình phát triển, từ sơ đồ chức năng đến nguyên mẫu cuối cùng của nó. Đồng thời, cần lưu ý rằng do khả năng kết nối trực tiếp các vi mạch như vậy với bus mà không sử dụng tất cả các loại mạch bổ sung, không gian được cung cấp để hiện đại hóa và sửa đổi thêm hệ thống nguyên mẫu bằng cách ngắt kết nối và kết nối các thiết bị khác nhau từ xe buýt.
Có rất nhiều lợi ích làm cho giao diện I2C trở nên nổi bật. Đặc biệt, mô tả cho phép bạn thấy những ưu điểm sau cho các hàm tạo:
- Các khối trên sơ đồ chức năng hoàn toàn tương ứng với các vi mạch, đồng thời, cung cấp một quá trình chuyển đổi khá nhanh từ chức năng sang cơ bản.
- Không cần phát triển giao diện bus vì bus đã được tích hợp sẵn vào các chip chuyên dụng.
- Các giao thức truyền thông tích hợp vàđịnh địa chỉ thiết bị cho phép hệ thống được xác định hoàn toàn bằng phần mềm.
- Các loại vi mạch giống nhau, nếu cần, có thể được sử dụng trong các ứng dụng hoàn toàn khác nhau.
- Tổng thời gian phát triển giảm đáng kể do các nhà thiết kế có thể nhanh chóng làm quen với các khối chức năng được sử dụng phổ biến nhất, cũng như các vi mạch khác nhau.
- Nếu muốn, bạn có thể thêm hoặc bớt chip khỏi hệ thống, đồng thời không ảnh hưởng nhiều đến các thiết bị khác được kết nối với cùng một bus.
- Tổng thời gian phát triển phần mềm có thể được giảm đáng kể bằng cách cho phép một thư viện các mô-đun phần mềm có thể tái sử dụng.
Trong số những thứ khác, cần lưu ý quy trình cực kỳ đơn giản để chẩn đoán lỗi đã xảy ra và gỡ lỗi thêm, giúp phân biệt giao diện I2C. Mô tả cho thấy rằng, nếu cần, có thể theo dõi ngay các sai lệch nhỏ trong hoạt động của thiết bị đó mà không gặp bất kỳ khó khăn nào và do đó, có thể thực hiện các biện pháp thích hợp. Cũng cần lưu ý rằng các nhà thiết kế nhận được các giải pháp đặc biệt, đặc biệt, khá hấp dẫn đối với các thiết bị di động và hệ thống cung cấp năng lượng pin sử dụng giao diện I2C. Mô tả bằng tiếng Nga cũng chỉ ra rằng việc sử dụng nó cho phép bạn cung cấp những lợi thế quan trọng sau:
- Khả năng chống lại mọi sự can thiệp mới xuất hiện ở mức độ cao.
- Cuối cùngtiêu thụ điện năng thấp.
- Dải điện áp cung cấp rộng nhất.
- Phạm vi nhiệt độ rộng.
Lợi ích cho người làm công nghệ
Điều đáng chú ý là không chỉ các nhà thiết kế, mà cả các nhà công nghệ gần đây cũng bắt đầu sử dụng giao diện I2C chuyên dụng khá thường xuyên. Mô tả bằng tiếng Nga cho thấy một loạt các lợi thế mà loại chuyên gia này mang lại:
- Một bus nối tiếp hai dây tiêu chuẩn với giao diện này giảm thiểu kết nối giữa các IC, có nghĩa là cần ít chân hơn và ít rãnh hơn, làm cho PCB rẻ hơn và nhỏ hơn nhiều.
- Giao diện I2C tích hợp đầy đủ LCD1602 hoặc một số tùy chọn khác giúp loại bỏ hoàn toàn nhu cầu về bộ giải mã địa chỉ và logic nhỏ bên ngoài khác.
- Có thể sử dụng đồng thời nhiều bản chính trên một bus như vậy, điều này giúp tăng tốc đáng kể quá trình kiểm tra và thiết lập thiết bị tiếp theo, vì bus có thể được kết nối với máy tính trong dây chuyền lắp ráp.
- Tính khả dụng của các IC tương thích với giao diện này trong gói VSO, SO và DIL tùy chỉnh có thể giảm đáng kể yêu cầu về kích thước thiết bị.
Đây chỉ là danh sách ngắn các ưu điểm giúp phân biệt giao diện I2C của LCD1602 và các loại khác. Ngoài ra, các chip tương thích có thể làm tăng đáng kể tính linh hoạt của hệ thống được sử dụng, cung cấpthiết kế cực kỳ đơn giản của các tùy chọn trang bị khác nhau, cũng như nâng cấp tương đối dễ dàng để hỗ trợ thêm cho sự phát triển ở cấp độ hiện tại. Do đó, có thể phát triển toàn bộ dòng thiết bị khác nhau, sử dụng một mô hình cơ bản nhất định làm cơ sở.
Có thể tiến hành hiện đại hóa hơn nữa thiết bị và mở rộng các chức năng của nó bằng kết nối tiêu chuẩn với bus của vi mạch tương ứng sử dụng giao diện Arduino 2C hoặc bất kỳ thứ gì khác từ danh sách có sẵn. Nếu yêu cầu ROM lớn hơn, thì chỉ cần chọn một bộ vi điều khiển khác có ROM tăng lên là đủ. Vì các chip cập nhật có thể thay thế hoàn toàn các chip cũ nếu cần, bạn có thể dễ dàng thêm các tính năng mới vào thiết bị hoặc tăng hiệu suất tổng thể của thiết bị bằng cách ngắt kết nối các chip lỗi thời và sau đó thay thế chúng bằng thiết bị mới hơn.
ACCESS.bus
Do bus có tính chất hai dây, cũng như khả năng định địa chỉ chương trình, một trong những nền tảng lý tưởng nhất cho ACCESS.bus là giao diện I2C. Thông số kỹ thuật (mô tả bằng tiếng Nga được trình bày trong bài báo) của thiết bị này làm cho nó trở thành một lựa chọn thay thế rẻ hơn nhiều so với giao diện RS-232C được sử dụng tích cực trước đây để kết nối các thiết bị ngoại vi khác nhau với máy tính bằng đầu nối bốn chân tiêu chuẩn.
Giới thiệu thông số kỹ thuật
Đối với các ứng dụng hiện đạiĐiều khiển 8 bit, sử dụng vi điều khiển, có thể đặt một số tiêu chí thiết kế:
- hệ thống hoàn chỉnh hầu hết bao gồm một bộ vi điều khiển và các thiết bị ngoại vi khác, bao gồm bộ nhớ và các cổng I / O khác nhau;
- tổng chi phí kết hợp các thiết bị khác nhau trong một hệ thống nên được giảm thiểu càng nhiều càng tốt;
- hệ thống điều khiển các chức năng không cung cấp cho nhu cầu cung cấp truyền thông tin tốc độ cao;
- tổng hiệu suất phụ thuộc trực tiếp vào thiết bị được chọn cũng như tính chất của xe buýt kết nối.
Để thiết kế một hệ thống đáp ứng đầy đủ các tiêu chí được liệt kê, bạn cần sử dụng một bus sử dụng giao diện nối tiếp I2C. Mặc dù bus nối tiếp không có băng thông của bus song song, nó yêu cầu ít kết nối hơn và ít chân chip hơn. Đồng thời, đừng quên rằng bus không chỉ bao gồm dây kết nối mà còn có nhiều quy trình và định dạng cần thiết để đảm bảo giao tiếp trong hệ thống.
Các thiết bị giao tiếp bằng cách sử dụng mô phỏng phần mềm của giao diện I2C hoặc bus tương ứng phải có một giao thức cụ thể cho phép bạn ngăn chặn các khả năng va chạm, mất hoặc chặn thông tin khác nhau. Các thiết bị nhanh sẽ có thể giao tiếp với các thiết bị chậm và hệ thống không nên phụ thuộc vàotừ thiết bị được kết nối với nó, vì nếu không, tất cả các cải tiến và sửa đổi sẽ không thể sử dụng được. Cũng cần phải phát triển một quy trình với sự trợ giúp thực tế để xác định thiết bị cụ thể nào hiện đang cung cấp điều khiển xe buýt và tại thời điểm nào. Ngoài ra, nếu các thiết bị khác nhau có tần số xung nhịp khác nhau được kết nối với cùng một bus, bạn cần quyết định nguồn đồng bộ hóa của nó. Tất cả các tiêu chí này đều được đáp ứng bởi giao diện I2C cho AVR và bất kỳ tiêu chí nào khác từ danh sách này.
Khái niệm chính
Bus I2C có thể hỗ trợ bất kỳ công nghệ chip nào được sử dụng. Giao diện I2C LabVIEW và các giao diện khác tương tự như nó cung cấp cho việc sử dụng hai đường truyền thông tin - dữ liệu và đồng bộ hóa. Bất kỳ thiết bị nào được kết nối theo cách này đều được nhận dạng bởi địa chỉ duy nhất của nó, bất kể đó là bộ đệm LCD, bộ vi điều khiển, bộ nhớ hoặc giao diện bàn phím và có thể hoạt động như một bộ thu hoặc bộ phát, tùy thuộc vào mục đích dành cho thiết bị này.
Trong đại đa số các trường hợp, bộ đệm LCD là bộ thu tiêu chuẩn và bộ nhớ không chỉ có thể nhận mà còn có thể truyền nhiều dữ liệu khác nhau. Trong số những thứ khác, theo quá trình di chuyển thông tin, các thiết bị có thể được phân loại là phụ và chính.
Trong trường hợp này, thiết bị chính là thiết bị bắt đầu truyền dữ liệu và cũng tạo racác tín hiệu đồng bộ hóa. Trong trường hợp này, mọi thiết bị có thể định địa chỉ sẽ được coi là nô lệ liên quan đến nó.
Giao diện truyền thông I2C cung cấp sự hiện diện của nhiều thiết bị chính cùng một lúc, nghĩa là, nhiều thiết bị có khả năng điều khiển bus có thể kết nối với nó. Khả năng sử dụng nhiều bộ vi điều khiển trên cùng một bus có nghĩa là có thể chuyển tiếp nhiều hơn một bộ vi điều khiển tại bất kỳ thời điểm nào. Để loại bỏ sự hỗn loạn tiềm ẩn rủi ro xuất hiện khi tình huống như vậy phát sinh, một thủ tục trọng tài chuyên biệt đã được phát triển sử dụng giao diện I2C. Bộ mở rộng và các thiết bị khác cung cấp để kết nối thiết bị với xe buýt theo cái gọi là quy tắc nối dây.
Tạo tín hiệu xung nhịp là trách nhiệm của master và mỗi master tạo ra tín hiệu của riêng mình trong quá trình truyền dữ liệu và nó chỉ có thể thay đổi sau đó nếu nó được "kéo" bởi một slave chậm hoặc một master khác khi xảy ra va chạm.
Thông số chung
Cả SCL và SDA đều là đường hai chiều kết nối với nguồn điện tích cực có điện trở kéo lên. Khi lốp xe hoàn toàn tự do, mỗi đường ở vị trí cao. Các giai đoạn đầu ra của thiết bị được kết nối với bus phải là bộ thoát hở hoặc bộ thu mở để có thể cung cấp chức năng AND có dây. Thông tin qua giao diện I2C có thể được truyền với tốc độ không quá 400 kbpschế độ nhanh, trong khi tốc độ tiêu chuẩn không vượt quá 100 kbps. Tổng số thiết bị có thể được kết nối đồng thời với bus chỉ phụ thuộc vào một tham số. Đây là điện dung của đường dây, không quá 400 pf.
Xác nhận
Xác nhận là thủ tục bắt buộc trong quá trình truyền dữ liệu. Bản chính tạo ra xung đồng bộ thích hợp trong khi bộ phát giải phóng dòng SDA trong xung đồng bộ này như một sự xác nhận. Sau đó, bộ thu phải đảm bảo rằng đường SDA được giữ ổn định trong suốt thời gian đồng hồ ở trạng thái cao ở trạng thái thấp ổn định. Trong trường hợp này, hãy nhớ tính đến thời gian thiết lập và lưu giữ.
Trong phần lớn các trường hợp, người nhận được định địa chỉ bắt buộc phải tạo một xác nhận sau mỗi byte nhận được, với ngoại lệ duy nhất là khi phần bắt đầu truyền bao gồm địa chỉ CBUS.
Nếu bộ thu-phụ không có cách nào để gửi xác nhận địa chỉ của chính nó, thì dòng dữ liệu phải được để ở mức cao và khi đó bộ chủ sẽ có thể phát ra tín hiệu "Dừng", điều này sẽ làm gián đoạn việc gửi tất cả các thông tin. Nếu địa chỉ đã được xác nhận, nhưng slave không thể nhận thêm dữ liệu trong một thời gian dài, master cũng phải ngắt việc gửi. Để làm điều này, nô lệ không thừa nhận byte tiếp theo nhận được và chỉ cần rời khỏi dòngcao, khiến thiết bị chính tạo ra tín hiệu dừng.
Nếu thủ tục truyền dẫn đến sự hiện diện của bộ thu chính, thì trong trường hợp này, nó phải thông báo cho bộ phận phụ về việc kết thúc quá trình truyền và điều này được thực hiện bằng cách không ghi nhận byte cuối cùng đã nhận. Trong trường hợp này, bộ phát phụ ngay lập tức giải phóng đường dữ liệu để thiết bị chính có thể phát ra tín hiệu "Dừng" hoặc lặp lại tín hiệu "Bắt đầu" một lần nữa.
Để kiểm tra xem thiết bị có hoạt động hay không, bạn có thể thử nhập các ví dụ tiêu chuẩn về bản phác thảo cho giao diện I2C trong Arduino, như trong ảnh ở trên.
Trọng tài
Bản chính chỉ có thể bắt đầu gửi thông tin sau khi xe buýt hoàn toàn miễn phí, nhưng hai hoặc nhiều bản chính có thể tạo tín hiệu bắt đầu tại thời gian lưu giữ tối thiểu. Điều này cuối cùng dẫn đến tín hiệu "Bắt đầu" cụ thể trên xe buýt.
Trọng tài hoạt động trên xe buýt SDA trong khi xe buýt SCL cao. Nếu một trong các thiết bị chính bắt đầu truyền mức thấp trên đường dữ liệu, nhưng đồng thời với mức cao kia, thì phần sau hoàn toàn bị ngắt kết nối khỏi nó, vì trạng thái SDL không tương ứng với trạng thái cao của đường bên trong..
Chuyên đăng bán chênh lệch có thể tiếp tục diễn ra trong vài bit. Do thực tế là địa chỉ được truyền trước, sau đó là dữ liệu, trọng tài có thể kéo dài cho đến khi kết thúc địa chỉ và nếu các bậc thầy sẽ giải quyếtcùng một thiết bị, thì dữ liệu khác nhau cũng sẽ tham gia vào quá trình phân xử. Do kế hoạch trọng tài này, không có dữ liệu nào sẽ bị mất nếu xảy ra bất kỳ va chạm nào.
Nếu master mất quyền phân xử, thì nó có thể phát xung đồng hồ trong SCL cho đến khi kết thúc byte, trong đó quyền truy cập bị mất.