Оглавление:

Соединение двух OOBoards вместе с помощью I2C: 4 шага
Соединение двух OOBoards вместе с помощью I2C: 4 шага

Видео: Соединение двух OOBoards вместе с помощью I2C: 4 шага

Видео: Соединение двух OOBoards вместе с помощью I2C: 4 шага
Видео: Соединение двух кусков паракорда, часть 1 2024, Июль
Anonim
Соединение двух OOBoards вместе с использованием I2C
Соединение двух OOBoards вместе с использованием I2C

В этом руководстве рассказывается, как подключить две OOBoard с помощью I2C.

Шаг 1. Подключение к сетевой шине I2C

Подключение к сетевой шине I2C
Подключение к сетевой шине I2C
Подключение к сетевой шине I2C
Подключение к сетевой шине I2C

На платах OOBoards есть две шины I2C, локальная шина и сетевая шина.

Код OOPIC - это, по сути, интерпретируемый язык, т.е. «код» хранится в EEPROM и читается / интерпретируется микропроцессором в реальном времени. EEPROM использует ЛОКАЛЬНУЮ шину I2C для связи с микроконтроллером. Если бы вы посмотрели на эту локальную шину на осциллографе, вы бы увидели постоянную болтовню. На платах OOBoards локальная шина - это то, что подключено к разъему I2C, это не обязательно то, что нам нужно. Шина NETWORK - это обычно шина, которая используется для связи с другими устройствами / опиками, на платах OOBoards эта шина не имеет разъема. Чтобы получить доступ к этой шине, вы должны припаять провода к контактам 42 и 37 микроконтроллера (обозначены на схеме N_SDA, N_SCL соответственно).

Шаг 2: Добавьте подтягивающие резисторы

После того, как SDA и SCL подключены к каждому процессору, две платы могут

соединить вместе, подключив SDA к SDA, SCL к SCL и подключив общий заземляющий провод между платами. Вам также понадобится подтягивающий резистор на каждой линии (я использовал 12 кОм, но это как раз то, что у меня было). Обратите внимание, что вам нужен только один подтягивающий резистор на линию, всего два резистора (а не 4).

Шаг 3: запрограммируйте ведомое устройство

Теперь, когда есть физические соединения, вам нужно будет запрограммировать подчиненный микроконтроллер. Я добавил код ниже, который должен вам помочь.

Dim SLAVE как новый oDDELinkDim LED как новый oDIO1Sub Main () & aposset наш адрес I2C на 2 (обратите внимание, он должен совпадать с удаленным адресом, который мы установили в главном коде) ooPIC. Node = 2 & apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, свяжите выход нашего объекта DDELink с & aposthe LED и включите его… теперь автоматически, светодиод будет мигать SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Шаг 4: запрограммируйте мастера

Наконец, запрограммируйте главный микроконтроллер. Обратите особое внимание на строки, которые устанавливают свойство DDELink. Location: если это не установлено правильно, это НЕ будет работать!

Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main () & aposlink 1-секундный таймер с битом, к которому мы можем получить доступ, и этот бит теперь будет переключаться один раз в секунду wire. Input. Link (ooPIC. Hz1) wire. Output. Link (hz1) wire. Operate = cvTrue & aposthis устанавливает адрес I2C нашего локального микроконтроллера, а интерфейс I2C не активен, пока адрес не установлен ooPIC. Node = 1 & aposnow, мы настраиваем наш объект DDELink, нашим входом является бит hz1 & aposnote, что объект также имеет свойство. Output, которое используется & apos, когда мы находимся в режиме приема Master. Input. Link (hz1) & aposthis - это I2C-адрес удаленного микроконтроллера, обратите внимание, что & apos в коде подчиненного устройства мы указываем ему адрес 2 Master. Node = 2 & aposugh… это дрянная часть, это «адрес» DDELink & aposobject в области памяти подчиненного устройства. Чтобы вычислить это число, & apos, нам нужно открыть и скомпилировать подчиненный код, затем перейти к View-> Compiled Code. Найдите что-то вроде: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * - любое число и имя вашего объекта DDELink & apos в вашем подчиненном коде. Строка непосредственно под ним должна выглядеть примерно так: & aposC0020: 041; This.. Address & apost число справа от & apos: & apos - это адрес подчиненного объекта DDELink Master. Location = 41 & aposthis сообщает объекту, который мы будем отправлять data (т. е. копировать данные из нашего свойства. Input & aposto свойству slaves.output (обратите внимание, если вы установите это на получение, это будет наоборот) Master. Direction = cvSend & a включить его, но пока ничего не происходит … Master. Operate = cvTrue Сделайте & aposcheck, чтобы увидеть, передаем ли мы в данный момент данные If Master. Transmitting = cvFalse Тогда & apossetting это значение в 1 заставит ведущий отправить значение ведомому & aposnote, это автоматически сбрасывается в 0 после завершения передачи Master. Sync = 1 Конец, если LoopEnd Sub

Рекомендуемые: