I2C Рабочие примеры

Марцин.Касински
Сб 10 сентября 2016 г. 8:15 утра
Привет.

У вас есть какой -нибудь рабочий пример i2c (мастер или получение) ?

Мой код ниже кода ошибка компиляции: класс TwoWire 'не имеет члена "OneReceive" с синей таблеткой . (без ошибок с Arduino).


В примерах LIB я вижу только сканер I2C.
#include void setup() { Wire.begin(8); // join i2c bus with address #8 Wire.onReceive(receiveEvent); // register event Serial.begin(9600); // start serial for output } void loop() { delay(100); } // function that executes whenever data is received from master // this function is registered as an event, see setup() void receiveEvent(int howMany) { // while (1 < Wire.available()) { // loop through all but the last while ( Wire.available()) { char c = Wire.read(); // receive byte as a character Serial.print(c); // print the character } // int x = Wire.read(); // receive byte as an integer // Serial.println(x); // print the integer Serial.println(); }

Martinayotte
Сб 10 сентября 2016 г. 13:35
Onreceive () предназначен для реализации рабов и, к сожалению, раб еще не реализован ...

Марцин.Касински
Сб 10 сентября 2016 г., 19:19
Martinayotte написал:Onreceive () предназначен для реализации рабов и, к сожалению, раб еще не реализован ...

Martinayotte
Сб 10 сентября 2016 г., 21:43
Нет другого примера, кроме сканеров в GitHub, но в Интернете много Arduino, которые должны работать напрямую на STM32.
Это все в зависимости от того, что вы хотите прикрепить к шине I2C: Eeproms, Expanders GPIO, RTC Clocks, ADC, DAC.
Какие из них вы планируете использовать ?

Марцин.Касински
Пн 12 сентября 2016 г. 8:10
У меня простой сценарий.

Я хочу подключить синюю таблетку к Lego EV3 с помощью i2c.

Он работает нормально, используя Arduino (Arduino в качестве раба).

Теперь я знаю, что режим рабов не реализован.

Я начал с i2c_scanner_hwire.INO пример для проверки i2c.

Проблема в том, что код висит на EndTransmission ().

Martinayotte
Пн 12 сентября 2016 12:14
У вас есть подтягивания на вашем автобусе i2c ?

Марцин.Касински
Пн 12 сентября 2016 г., 19:23
Martinayotte написал:У вас есть подтягивания на вашем автобусе i2c ?

Martinayotte
Пн 12 сентября 2016 г., 19:59
Может, вы перевернули SDA и SCK.

Марцин.Касински
Пн 12 сентября 2016 г., 8:08 вечера
Martinayotte написал:Может, вы перевернули SDA и SCK.

Martinayotte
Пн 12 сентября 2016 г., 8:14 вечера
Вам нужны подтягивания на обоих.
Но есть также возможная ошибка, пересекая SDA и SCK.

Марцин.Касински
Пн 12 сентября 2016 г., 21:09
Martinayotte написал:Вам нужны подтягивания на обоих.
Но есть также возможная ошибка, пересекая SDA и SCK.

Martinayotte
Пн 12 сентября 2016 г., 21:17
Итак, если я понимаю, у вас нет устройств в автобусе, ваш мастер все еще один.

У вас все еще есть проволока.Начните (8) или так как вы пытаетесь в качестве мастера, вы заменили его проволокой.начинать() ?

У меня заканчиваются идеи ... Библиотека проводов такая проста ...

Марцин.Касински
Вторник 13 сентября 2016 г., 7:42 утра
Martinayotte написал:Итак, если я понимаю, у вас нет устройств в автобусе, ваш мастер все еще один.

У вас все еще есть проволока.Начните (8) или так как вы пытаетесь в качестве мастера, вы заменили его проволокой.начинать() ?

У меня заканчиваются идеи ... Библиотека проводов такая проста ...

Martinayotte
Вторник 13 сентября 2016 г. 13:53
Какую плату или чип STM32 вы используете ?
Потому что I2C на F1XX либо PB6/PB7, либо PB10/PB11,
На F4XX PB8/PB9 являются альтернативными выводами, но не по умолчанию PB6/PB7. Для использования Alternatate вам нужно будет настроить Core i2c.c Файл.

Марцин.Касински
Вторник 13 сентября 2016 г. 13:59
Martinayotte написал:Какую плату или чип STM32 вы используете ?
Потому что I2C на F1XX являются либо PB6/PB7, либо PB10/PB11, но не PB8/PB9 ... : ugeek:

Martinayotte
Вторник 13 сентября 2016 г. 14:08
Эти PB8/PB9 должны использовать режим Remap, поэтому не по умолчанию.
Попробуйте PB6/PB7 вместо этого ...

Марцин.Касински
Ср 14 сентября 2016 г. 6:41
Martinayotte написал:Эти PB8/PB9 должны использовать режим Remap, поэтому не по умолчанию.
Попробуйте PB6/PB7 вместо этого ...

Martinayotte
Ср 14 сентября 2016 12:24
В STM32F1/Libraries/Wire/Hardwire.Файл CPP, вызов на i2c_master_xfer () имеет 0 для параметра тайм -аута, что означает «Infinite».
Вы можете изменить его на некоторые другие значения в миллисекундах.

Меню Arduino 3.0