ZMEMW16
Чт 27 апреля 2017 г. 11:05
Сканер I2C
Код - это сканер Discovery с их конкретным материалом i2s и т. Д
У меня есть TMP102 и 128x64 0.98 I2C OLED SSD1306, с подтягиванием 4K7 и 3V3 подключенными
это serialinterface #defined как serialusb
Код - это сканер Discovery с их конкретным материалом i2s и т. Д
У меня есть TMP102 и 128x64 0.98 I2C OLED SSD1306, с подтягиванием 4K7 и 3V3 подключенными
это serialinterface #defined как serialusb
...
0 Unknown error at address 0x3B
0 I2C device found at address 0x3C !
0 Unknown error at address 0x3D
...
...
0 Unknown error at address 0x47
0 I2C device found at address 0x48 !
0 Unknown error at address 0x49
...
0 Unknown error at address 0x7E
ZMEMW16
Чт 27 апреля 2017 12:47
Глядя в проволоку.CPP, возвращаемые значения
0 ok
1 timeout
4 default for other
Даниэфф
Чт 27 апреля 2017 12:52
ZMEMW16 написал:Сканер I2C
Код - это сканер Discovery с их конкретным материалом i2s и т. Д
У меня есть TMP102 и 128x64 0.98 I2C OLED SSD1306, с подтягиванием 4K7 и 3V3 подключенными
это serialinterface #defined как serialusb
Код - это сканер Discovery с их конкретным материалом i2s и т. Д
У меня есть TMP102 и 128x64 0.98 I2C OLED SSD1306, с подтягиванием 4K7 и 3V3 подключенными
это serialinterface #defined как serialusb
...
0 Unknown error at address 0x3B
0 I2C device found at address 0x3C !
0 Unknown error at address 0x3D
...
...
0 Unknown error at address 0x47
0 I2C device found at address 0x48 !
0 Unknown error at address 0x49
...
0 Unknown error at address 0x7E
Chismicro
Чт 27 апреля 2017 г. 16:28
На открытии STM32F4 он показывает то же поведение.
"Неизвестная ошибка на адрес 0x.."Когда нет устройства, отвечающего.
"Неизвестная ошибка на адрес 0x.."Когда нет устройства, отвечающего.
ZMEMW16
Чт 27 апреля 2017 г., 17:17
но 124 раза? Насколько я помню
Стивен
Стивен
Chismicro
Пт 28 апреля 2017 г. 8:05 утра
но 124 раза? Насколько я помню
Стивен STM322GENERIERIERER пример изначально из этого Сайт Arduino и модифицируется для STM.
Хм .. Поле адреса I2C составляет 7 битов Ведьма дает использование 128 адресов. Я знаю, не все можно использовать.
0 Неизвестная ошибка по адресу 0x47 Вероятно, драйвер I2C работает по-разному по сравнению с реализацией Arduino-Uno и возвращает разные сообщения о статусе ?
Стивен STM322GENERIERIERER пример изначально из этого Сайт Arduino и модифицируется для STM.
Хм .. Поле адреса I2C составляет 7 битов Ведьма дает использование 128 адресов. Я знаю, не все можно использовать.
0 Неизвестная ошибка по адресу 0x47 Вероятно, драйвер I2C работает по-разному по сравнению с реализацией Arduino-Uno и возвращает разные сообщения о статусе ?
ZMEMW16
Пт 28 апреля 2017 г. 10:04
Аполы, я вернулся в свои дни AVR, а затем я использовал Todbot.
Istr Try 3 или 4, прежде чем найти тот, который вообще работал на STM, даже тогда это не было и жестким, и мягким i2c.
кстати, это выходи за то, что не помнит, что
Кажется, есть 3 ответа из рутины HAL
0. ОК - определенно присутствует устройство
4. ничего там
1. Тайм -аут - но что же тогда, что -то там
Я могу понять, что сообщает первое и последнее, но зачем ничего не сообщать?
Стивен
Istr Try 3 или 4, прежде чем найти тот, который вообще работал на STM, даже тогда это не было и жестким, и мягким i2c.
кстати, это выходи за то, что не помнит, что
Кажется, есть 3 ответа из рутины HAL
0. ОК - определенно присутствует устройство
4. ничего там
1. Тайм -аут - но что же тогда, что -то там
Я могу понять, что сообщает первое и последнее, но зачем ничего не сообщать?
Стивен
Chismicro
Пт 28 апреля 2017 г. 13:03
А ARDUINO I2C спецификация API Говорит для EndTransmission ()
Возврат
байт, который указывает состояние передачи:
0: успех
1: Данные слишком долго, чтобы вписаться в буфер передачи
2: Полученный NACK при передаче адреса
3: Полученный NACK при передаче данных
4: Другая ошибка Таким образом, мы, вероятно, должны изменить текстовое сообщение (в «Другую ошибку») в программе сканера I2C.
байт, который указывает состояние передачи:
0: успех
1: Данные слишком долго, чтобы вписаться в буфер передачи
2: Полученный NACK при передаче адреса
3: Полученный NACK при передаче данных
4: Другая ошибка Таким образом, мы, вероятно, должны изменить текстовое сообщение (в «Другую ошибку») в программе сканера I2C.
Пито
Пт 28 апреля 2017 г. 14:43
С I2C2 на данных PB10 CLK и PB11.
// --------------------------------------
// i2c_scanner
..
#include
TwoWire Wire2(I2C2, PB11, PB10);
#define Wire Wire2
#define Serial SerialUART1
void setup()
..
else if (error==4)
{
//Serial.print("Unknow error at address 0x");
//if (address<16)
// Serial.print("0");
//Serial.println(address,HEX);
}
}
..
Пито
Пт 28 апреля 2017 г. 22:20
Я потратил 5H, связываясь с библиотекой DS3232RTC, мне нравится
Проблема следующая:
Как построить демонстрацию, прочитать время от DS3231/2, при использовании i2C2 (не по умолчанию I2C1).
При игре с простыми вещами, такими как выше, нет, но это куриное яичное примечание (или Catch22 One)..
TwoWire Wire2 (i2c2, Pina, Pinb); Создает новый экземплярный Wire2 на втором контроллере I2C.
Попробовал с #Define Wire2 Wire, но после сотней различных комбинаций я все еще получаю ошибку с переосмыслением провода..
Но как организовать код, такой как он компилирует с библиотекой DS3232RTC????
PS: с i2c1 и с помощью провода по умолчанию он хорошо компилируется.. (За исключением того, что вы должны настроить для нашего __stm32f4__ и добавить определение макроса _bv)..
Проблема следующая:
Как построить демонстрацию, прочитать время от DS3231/2, при использовании i2C2 (не по умолчанию I2C1).
При игре с простыми вещами, такими как выше, нет, но это куриное яичное примечание (или Catch22 One)..
TwoWire Wire2 (i2c2, Pina, Pinb); Создает новый экземплярный Wire2 на втором контроллере I2C.
Попробовал с #Define Wire2 Wire, но после сотней различных комбинаций я все еще получаю ошибку с переосмыслением провода..
Но как организовать код, такой как он компилирует с библиотекой DS3232RTC????
PS: с i2c1 и с помощью провода по умолчанию он хорошо компилируется.. (За исключением того, что вы должны настроить для нашего __stm32f4__ и добавить определение макроса _bv)..
22:24:50
28/4/2017
22:24:51
28/4/2017
Даниэфф
SAT 29 апреля 2017 г., 3:21
Для существующих библиотек, которые используют твердый провод:
Wire.stm32SetInstance(I2Cx);
Wire.stm32SetSDA(sda);
Wire.stm32SetSCL(scl);
rtc....()
...
Пито
SAT 29 апреля 2017 г. 5:02
Хорошо, спасибо, это работает
К вашему сведению - расширенная библиотека I2C, которая поддерживает Master/Slab в немедленном/прерывании/DMA в режиме - для Teensy CM4, однако.. https: // github.com/nox771/i2c_t3
К вашему сведению - расширенная библиотека I2C, которая поддерживает Master/Slab в немедленном/прерывании/DMA в режиме - для Teensy CM4, однако.. https: // github.com/nox771/i2c_t3
Chismicro
Сб, 1 июля 2017 г. 6:39
Я только что столкнулся с проблемой:
Как я могу использовать 2 интерфейсы i2c?
Эн.глин. F7 Disco имеет внутреннюю шину I2C для прикосновения, которая используется в форме
Как я могу использовать 2 интерфейсы i2c?
Эн.глин. F7 Disco имеет внутреннюю шину I2C для прикосновения, которая используется в форме
Wire.stm32SetInstance(I2C3);
Wire.stm32SetSDA(PH8);
Wire.stm32SetSCL(PH7);
Wire.begin();
Даниэфф
SAT 1 июля 2017 г. 7:04
TwoWire Wire2(I2C2, sda2, scl2); // check chip documentation and board schematic
TwoWire Wire3(I2C3, sda3, scl3); // check chip documentation and board schematic
TwoWire Wire4(I2C4, sda4, scl4); // check chip documentation and board schematic
ZMEMW16
Сб, 1 июля 2017 г. 12:46
как это делается с Хэл ?
Я подозреваю, что у них будут полностью отдельные структуры I2C.
Для нас, почему бы не сделать это так же, как и множественное использование SPI.
Стивен
Я подозреваю, что у них будут полностью отдельные структуры I2C.
Для нас, почему бы не сделать это так же, как и множественное использование SPI.
Стивен
Chismicro
Солнце 2 июля 2017 г. 5:06 утра
Спасибо за ответ
«Проблема в том, что каждая библиотека написана с предположением, что есть только один i2c, и она называется провод.
Отказ от ответственности: я на самом деле не пытался использовать несколько сразу."
Для меня кажется совершенно ясным, как справиться с этим: на платах, которые имеют соединительный разъем Arduino, I2C, который подключен к этому разъему, должно иметь имя «Провод».
Имена других должны основываться на номере интерфейса.
Эн.глин.
Провод1
Wire2 ==> Провод на этой доске Axampel
Провод3
«Проблема в том, что каждая библиотека написана с предположением, что есть только один i2c, и она называется провод.
Отказ от ответственности: я на самом деле не пытался использовать несколько сразу."
Для меня кажется совершенно ясным, как справиться с этим: на платах, которые имеют соединительный разъем Arduino, I2C, который подключен к этому разъему, должно иметь имя «Провод».
Имена других должны основываться на номере интерфейса.
Эн.глин.
Провод1
Wire2 ==> Провод на этой доске Axampel
Провод3
Криссб
Чт 20 июля 2017 г. 12:32
Кто -нибудь сделал какое -либо тестирование на рабовластной стороне I2C?
Я пытаюсь использовать эту функциональность на F0, и кажется, что по адресу Match Sck удерживается на неопределенный срок. Это предполагаемое поведение, и если да, то есть что -то, что я должен сделать в обратном вызове, чтобы выпустить автобус?
Простой пример с не более чем инициализацией библиотеки проводов в качестве подчинения I2C показывает это поведение для меня:
Я пытаюсь использовать эту функциональность на F0, и кажется, что по адресу Match Sck удерживается на неопределенный срок. Это предполагаемое поведение, и если да, то есть что -то, что я должен сделать в обратном вызове, чтобы выпустить автобус?
Простой пример с не более чем инициализацией библиотеки проводов в качестве подчинения I2C показывает это поведение для меня:
#include "Wire.h"
void setup() {
Wire.begin(30);
}
void loop() { }
Даниэфф
Чт 20 июля 2017 г. 15:28
Попробуйте ответить на запрос
void receive(int bytes) {
// Received bytes
}
void request() {
uint8_t response[1] = {9};
Wire.write(response, sizeof(response)); // responding
}
void setup() {
Wire.onReceive(receive);
Wire.onRequest(request);
Wire.begin(30);
}
Каниджа
Ср 15 ноября 2017 г. 13:49
Привет
С изменениями (26 сентября) к проводе.CPP он не будет составлять примеры i2c для любой платы (кроме F0, вероятно,):
https: // github.com/danieleff/stm32gener ... ярость.CPP#L7
Вы не можете проверить #ifndef i2c1_ev_irqn, потому что i2c1_ev_irqn enum not #define.
То же самое для #ifndef i2c2_ev_irqn.
Может изменить это на:
С изменениями (26 сентября) к проводе.CPP он не будет составлять примеры i2c для любой платы (кроме F0, вероятно,):
https: // github.com/danieleff/stm32gener ... ярость.CPP#L7
Вы не можете проверить #ifndef i2c1_ev_irqn, потому что i2c1_ev_irqn enum not #define.
То же самое для #ifndef i2c2_ev_irqn.
Может изменить это на:
#if defined(STM32F0)
#define I2C1_EV_IRQn I2C1_IRQn
#define I2C2_EV_IRQn I2C1_IRQn
#endif
Пять
Солнце 28 января 2018 г., 18:12
Sry за вопрос Noob, но откуда и как я могу изменить скорость i2c?
Проволока.начинать(); по умолчанию 100 кГц, я хочу 400 кГц?
Проволока.начинать(); по умолчанию 100 кГц, я хочу 400 кГц?
Пять
Солнце 28 января 2018 г. 18:25
ОК, выяснил
Проволока.начинать();
Проволока.SetClock (400000);
Проблема заключалась в том, что в документах есть SetClock (), а не SetClock ()
Проволока.начинать();
Проволока.SetClock (400000);
Проблема заключалась в том, что в документах есть SetClock (), а не SetClock ()
ZMEMW16
Солнце 28 января 2018 г. 18:47
Я думаю, что вы получите больший успех, открывая новую тему, расширенный поиск «I2C Clock Speed» дает 64 упоминания,
Прокрутите немного вниз
Стивен
Прокрутите немного вниз
Стивен