Mục lục:

Kết nối hai thẻ OOB với nhau bằng I2C: 4 bước
Kết nối hai thẻ OOB với nhau bằng I2C: 4 bước

Video: Kết nối hai thẻ OOB với nhau bằng I2C: 4 bước

Video: Kết nối hai thẻ OOB với nhau bằng I2C: 4 bước
Video: [B01] Liên kết Pi với DS1307 sử dụng gói cài đặt i2c-tools 2024, Tháng bảy
Anonim
Kết nối hai thẻ OOB với nhau bằng I2C
Kết nối hai thẻ OOB với nhau bằng I2C

Tài liệu hướng dẫn này trình bày cách kết nối hai OOBoards bằng I2C.

Bước 1: Kết nối với Bus mạng I2C

Kết nối với Bus mạng I2C
Kết nối với Bus mạng I2C
Kết nối với Bus mạng I2C
Kết nối với Bus mạng I2C

Có hai bus I2C trên OOBoards, một bus cục bộ và một bus mạng.

Mã OOPIC về bản chất là một ngôn ngữ thông dịch, tức là "mã" được lưu trữ trong EEPROM và được bộ vi xử lý đọc / thông dịch trong thời gian thực. EEPROM sử dụng bus LOCAL I2C để giao tiếp với vi điều khiển. Nếu bạn nhìn vào chiếc xe buýt địa phương này trên máy hiện sóng, bạn sẽ thấy những tiếng xôn xao liên tục. Trên bảng OOBoards, bus cục bộ là thứ được kết nối với đầu nối I2C, đây không nhất thiết là những gì chúng ta muốn. Bus NETWORK thường là bus dùng để giao tiếp với các thiết bị / oopics khác, trên OOBoards bus này không có đầu nối. Để truy cập bus này, bạn phải hàn dây vào chân 42 và 37 của vi điều khiển (được đánh dấu N_SDA, N_SCL tương ứng trên sơ đồ).

Bước 2: Thêm điện trở kéo

Khi kết nối SDA và SCL được thực hiện trên mỗi bộ xử lý, hai bo mạch có thể

được liên kết với nhau bằng cách kết nối SDA với SDA, SCL với SCL và kết nối dây nối đất chung giữa các bo mạch. Bạn cũng sẽ cần một điện trở kéo lên trên mỗi dòng (tôi đã sử dụng 12k, nhưng đó chỉ là những gì tôi đã nằm xung quanh). Lưu ý rằng bạn chỉ cần một điện trở kéo lên trên mỗi đường cho tổng số hai điện trở (không phải 4).

Bước 3: Lập trình Slave

Bây giờ các kết nối vật lý đã ở đó, bạn sẽ cần phải lập trình vi điều khiển nô lệ. Tôi đã thêm một số mã bên dưới sẽ giúp bạn bắt đầu.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main () & aposset địa chỉ I2C của chúng tôi thành 2 (lưu ý, điều này phải khớp với điều khiển từ xa & aposaddress mà chúng tôi đặt trong mã chính) ooPIC. Node = 2 & apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, liên kết đầu ra của đối tượng DDELink của chúng tôi với & đèn LED nháy, và bật nó lên… theo cách tự động, đèn LED sẽ nhấp nháy SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Bước 4: Lập trình Master

Cuối cùng, lập trình vi điều khiển chính. Hãy chú ý đến các dòng đặt thuộc tính. Location của DDELink: Trừ khi điều này được đặt đúng cách, điều này sẽ KHÔNG hoạt động!

Dim Master As New oDELinkDim wire As New oWireDim hz1 As New oBitSub Main () & liên kết bộ đếm thời gian 1 giây với một chút mà chúng ta có thể truy cập & dấu nháy bit bây giờ sẽ chuyển đổi một lần mỗi giây wire. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & Apohis đặt địa chỉ I2C của bộ vi điều khiển cục bộ & giao diện I2C của chúng ta không hoạt động cho đến khi một địa chỉ được đặt ooPIC. Node = 1 & aposnow chúng ta thiết lập đối tượng DDELink, đầu vào của chúng ta là bit hz1 & aposnote mà đối tượng cũng có thuộc tính. Output được sử dụng & aposw khi chúng ta đang ở chế độ nhận Master. Input. Link (hz1) & dấu hiệu đây là địa chỉ I2C của bộ vi điều khiển từ xa, lưu ý rằng & aposin mã nô lệ, chúng tôi yêu cầu nó có địa chỉ là 2 Master. Node = 2 & aposugh… đây là phần khó hiểu, đây là "địa chỉ" của DDELink & aposobject trong không gian bộ nhớ slave & aposs. Để tìm ra con số này, & apos chúng ta cần mở và biên dịch mã nô lệ, sau đó truy cập vào View-> Compiled Code. & aposlook cho một cái gì đó như: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * là bất kỳ số nào và là tên của đối tượng DDELink & aposin mã nô lệ của bạn. Dòng ngay bên dưới nó sẽ có nội dung như: & aposC0020: 041; This.. Địa chỉ & số hiệu ở bên phải của & apos: & apos là địa chỉ của đối tượng DDELink nô lệ Master. Location = 41 & Apohis cho đối tượng biết rằng chúng tôi sẽ gửi dữ liệu (tức là sao chép dữ liệu từ thuộc tính. Input của chúng tôi & dấu móc lại thuộc tính.output nô lệ (lưu ý, nếu bạn đặt điều này thành nhận thì ngược lại) = cvTrue Do & aposcheck để xem liệu chúng ta có đang truyền dữ liệu hay không Nếu Master. Transmitting = cvFalse Sau đó & đặt giá trị này thành 1 sẽ khiến cái chủ gửi giá trị đến slave & aposnote, điều này sẽ tự động được đặt lại về 0 khi hoàn tất quá trình truyền Master. Sync = 1 End If LoopEnd Sub

Đề xuất: