Датчики HDC1080 и MS5611

Аранеус
Вт 20 февраля 2018 г., 18:53
Привет всем!

Кто -нибудь пытался портировать (или сделать на работу) библиотеки Arduino для следующих датчиков:

1) HDC1080:
Библиотека:
-https: // github.com/closecube/closecub ... 80_arduino
Примеры модуля:
- https: // www.eBay.com/itm/i2c-temperaturatur ... SWXGTZN3LM
- https: // www.eBay.com/itm/hdc1080-high-p ... Swac1aojxt

2) MS5611:
Библиотека:
- https: // github.com/schm1tz1/arduino-ms5xxx
Примеры модуля:
- https: // www.eBay.com/itm/gy-63-ms5611-h ... 2749.L2649
- https: // www.eBay.com/itm/gy-63-gy-63-ms ... Swzfnavima

Или любая другая предлагаемая библиотека для работы с Maplemini / Bluepill через I2C с возможностью выбрать канал I2C.
Спасибо!

Mrburnette
Ср 21 февраля 2018 г. 1:49
Вы пробовали существующие библиотеки?
У Adafruit есть LIB с тех пор, как они продают прорыв HDC1080: https: // учиться.Адафрут.com/adafruit-hdc ... G и тест

Многие из Adafruit Libs работают без изменений с STM32duino.

Сообщалось, что MS5611 работает с Teensy. Изменения в LIBS для Teensy аналогичны изменениям для STM32duino. Итак, всегда старайтесь выбирать библиотеки, которые являются автором Adafruit/Sparkfun, поскольку эти авторы пишут для работы на большом выборе отправителей.

У меня есть пример использования BMP180 с STM32F103...
https: // www.хакерс.io/rayburne/wow-ba ... 180-bf70f5

Луча

Аранеус
Ср 21 февраля 2018 г., 22:32
[Mrburnette - Ср 21 февраля 2018 г. 1:49] - Вы пробовали существующие библиотеки?
У Adafruit есть LIB с тех пор, как они продают прорыв HDC1080: https: // учиться.Адафрут.com/adafruit-hdc ... G и тест
Ну, изначально я даже не думал об использовании библиотеки Adafruit для этого, так как у них есть датчик HDC1008, но не HDC1080.

После вашего комментария я попробовал и просто не вижу датчика на линии I2C.
После некоторого поиска я нашел этот пример непосредственно из Ti http: // www.тип.com/lit/Zip/snac076 .
Было какое -то обучение: https: // training.тип.com/how-interface-h ... -Использование-I2C

С некоторыми модификациями я сделал датчик HDC1080 для работы с Maplemini через следующий код: #include TwoWire myWire (1); void setup() { Serial.begin(15200); //Initialize I2C Communication myWire.begin(); //Configure HDC1080 myWire.beginTransmission(0x40); myWire.write(0x02); myWire.write(0x90); myWire.write(0x00); myWire.endTransmission(); //Delay for Startup of HDC1080 delay(20); }; void loop() { double temperature; double humidity; humidity = readSensor(&temperature); Serial.print("Temperature : "); Serial.print(temperature); Serial.print(" \xC2\xB0"); // 0xC2B0 is degree symbol in UTF-8 charset Serial.println("C"); Serial.print("Humidity : "); Serial.print(humidity); Serial.println(" %"); //Wait 1 second for the next reading delay(1000); }; double readSensor(double* temperature) { //holds 2 bytes of data from I2C Line uint8_t Byte[4]; //holds the total contents of the temp register uint16_t temp; //holds the total contents of the humidity register uint16_t humidity; //Point to device 0x40 (Address for HDC1080) myWire.beginTransmission(0x40); //Point to register 0x00 (Temperature Register) myWire.write(0x00); //Relinquish master control of I2C line //pointing to the temp register triggers a conversion myWire.endTransmission(); //delay to allow for sufficient conversion time delay(20); //Request four bytes from registers myWire.requestFrom(0x40, 4); delay(1); //If the 4 bytes were returned sucessfully if (4 <= myWire.available()) { //take reading //Byte[0] holds upper byte of temp reading Byte[0] = myWire.read(); //Byte[1] holds lower byte of temp reading Byte[1] = myWire.read(); //Byte[3] holds upper byte of humidity reading Byte[3] = myWire.read(); //Byte[4] holds lower byte of humidity reading Byte[4] = myWire.read(); //Combine the two bytes to make one 16 bit int temp = (((unsigned int)Byte[0] <<8 | Byte[1])); //Temp(C) = reading/(2^16)*165(C) - 40(C) *temperature = (double)(temp)/(65536)*165-40; //Combine the two bytes to make one 16 bit int humidity = (((unsigned int)Byte[3] <<8 | Byte[4])); //Humidity(%) = reading/(2^16)*100% return (double)(humidity)/(65536)*100; } }

Аранеус
Ср 21 февраля 2018 г., 23:21
Странное наблюдение.

Я попытался проверить, действительно ли мой MS5611 работает и наблюдается на автобусе I2C.

Я подключил его на основе следующей карты: MS5611 to MapleMini module I2C_1 Vcc 3.3V GND Gnd SCL 16 with 4.7K pull-up SDA 15 with 4.7K pull-up CSB 3.3 or GND to select the address 0x76 or 0x77 SDO Not Used PS High to select the I2C protocol

Mrburnette
Чт 22 февраля 2018 г. 12:30
[Аранеус - Ср 21 февраля 2018 г., 23:21] - ...
Любые идеи?
I2C изначально был сделан в программном обеспечении, Soft i2c. Тем не менее, код был обновлен, и теперь это оборудование i2c, прошлый сентябрь.
https: // github.com/danieleff/stm32gener ... ярость.CPP#L7

Вот объявление: ViewTopic.PHP?t = 2408

Удачи,
Луча

Аранеус
Чт 22 февраля 2018 г. 1:16 утра
[Mrburnette - Чт 22 февраля 2018 г. 12:30] -
[Аранеус - Ср 21 февраля 2018 г., 23:21] - ...
Любые идеи?
I2C изначально был сделан в программном обеспечении, Soft i2c. Тем не менее, код был обновлен, и теперь это оборудование i2c, прошлый сентябрь.
https: // github.com/danieleff/stm32gener ... ярость.CPP#L7

Вот объявление: ViewTopic.PHP?t = 2408

Удачи,
Луча
Но как это исправить?

Бдбелл
Чт 22 февраля 2018 г., 6:19
Что пытается сказать OP...И я также обнаружил, что в своих тестах - датчик MS5611, кажется, работает только через Software I2C с текущим ядром. У меня есть устройство STM32 с MS5611 и 2 другими устройствами I2C, если я сканирую с помощью сканера Hardwire, я вижу только 2 устройства - не MS5611, но если я сканирую с помощью сканера Softwire, я вижу 3 устройства, которые включают MS5611.

Почему текущий Hardwire не будет работать с этим конкретным устройством - у меня - не модули, а часть печатной платы STM32, поэтому я не могу проверить их с помощью Arduino, но я почти уверен, что это устройство работает с Arduino и Hardwire I2C...Есть ли варианты, которые я могу изменить при инициализации провода, которые могут заставить его работать?

Я изменил этот Библиотека для работы с Softwire, но было бы неплохо выяснить, почему она не работает с нынешним Hardwire :(

Mrburnette
Чт 22 февраля 2018 г. 14:14
[Бдбелл - Чт 22 февраля 2018 г., 6:19 утра] - ... Если я сканирую с помощью сканера Hardwire, я увижу только 2 устройства, а не MS5611, но если я сканирую с помощью сканера программноговода, я вижу 3 устройства, который включает в себя MS5611.
Ну, это, конечно, кажется странным (и не в хорошем смысле.)

Может быть, гуру I2C находится на форуме и имеет ответ. Это может быть одна из тех неочевидных вещей, которые потребуют логического анализатора, чтобы действительно отследить происходящее.

Я подняю эту обеспокоенность Роджеру, но пойму, что его участие в вопросах форума в настоящее время ограничено времени.
Сделанный


Луча

Аранеус
Чт 22 февраля 2018 г., 17:21
[Бдбелл - Чт 22 февраля 2018 г., 6:19 утра] - Я изменил этот Библиотека для работы с Softwire, но было бы неплохо выяснить, почему она не работает с нынешним Hardwire :(
Хорошо. Очень глупый вопрос: могу ли я запустить те же контакты одновременно аппаратные и программное обеспечение i2c?
Или я должен использовать других?

П.С. Что значит OP?

Аранеус
Чт 22 февраля 2018 г., 17:21
[Mrburnette - Чт 22 февраля 2018 г. 14:14] - Я подняю эту обеспокоенность Роджеру, но пойму, что его участие в вопросах форума в настоящее время ограничено времени.
Спасибо!

Mrburnette
Чт 22 февраля 2018 г., 18:00
[Аранеус - Чт 22 февраля 2018 г., 17:21] - ...
П.С. Что значит OP?
OP == Оригинальный плакат ... Обычно 1 -й человек публикует в ветке

Я нашел старый BP-180 в мусорном ведре и запустил его с помощью как программного сканера, так и для аппаратного сканера (из примеров под «проволокой», и оба эскиза обнаружили датчик без проблем.
Тем не менее, аппаратный набросок, кажется, ничего не делает «ничего», если «ничего не подключено», но сканер программного обеспечения дает сообщение о отсутствии устройств на шине.


Луча

Аранеус
Чт 22 февраля 2018 г., 18:58
[Mrburnette - Чт 22 февраля 2018 г. 18:00] -
[Аранеус - Чт 22 февраля 2018 г., 17:21] - ...
П.С. Что значит OP?
OP == Оригинальный плакат ... Обычно 1 -й человек публикует в ветке
Хорошо знать)
Я думал, что этого человека обычно называют TS - начало темы. Это связан с регионом/страной или просто традиция на этом форуме?

Rogerclark
Чт 22 февраля 2018 г., 21:32
Является ли проблема, которую сканер I2C не работает сейчас или что это устройство не работает с оборудованием i2c ??

Я не могу вспомнить, какую скорость оборудование i2c установлено по умолчанию. Я надеюсь, что это было 100 кГц, но это, возможно, не дефолт на 400 кГц, что может быть слишком быстро для этого устройства

Кроме того, какое значение вы используете.

ZMEMW16
Пт 23 февраля 2018 г. 1:44
VCC 3.3В
GND GND
SCL 16 с 4.7K подтягивание
SDA 15 с 4.7K подтягивание
CSB 3.3 или GND, чтобы выбрать адрес 0x76 или 0x77

Rogerclark
Пт 23 февраля 2018 г. 1:50
Я бы попробовал более низкий подтягивание.

эн.глин. 2.2K

Бдбелл
Пт 23 февраля 2018 г., 4:08
[Rogerclark - Пт 23 февраля 2018 г. 1:50] - Я бы попробовал более низкий подтягивание.

эн.глин. 2.2K
У меня нет 2.2, но попробовал 2.7K и 1.5K - то же самое, устройство недоступно с Hardwire - можно найти только с помощью Softwire. Остальные 2 устройства все еще найдены и работают.

Я попытался настроить скорость в эскизе сканера Hardwire, как это;

Проволока.начинать();
Проволока.SetClock (100000);

Также без изменений, 0x77 Адрес MS5611 не найден. Это правильный способ отрегулировать скорость? Есть ли другие варианты, чтобы попытаться заставить его работать с Hardwire?

Бдбелл
Пт 23 февраля 2018 г., 4:18
[Аранеус - Чт 22 февраля 2018 г., 17:21] - Хорошо. Очень глупый вопрос: могу ли я запустить те же контакты одновременно аппаратные и программное обеспечение i2c?
Или я должен использовать других?
Я не думаю, что вы можете одновременно использовать те же булавки для Hardwire и Softwire - вот почему я также хотел бы выяснить, почему это сейчас не работает.

Rogerclark
Пт 23 февраля 2018 г., 4:19
Если у вас еще нет.

Эти анализаторы логики каналов в размере 10 долларов почти необходимы для выполнения чего -либо подобного, тогда вы можете подробно взглянуть на время автобуса

Поиск «Логический анализатор 24 МГц 8 канала» на вашем любимом сайте онлайн -торговли

Вы могли бы потенциально попробовать официальное ядро ​​STM Arduino, но я не уверен, что они полностью развернули поддержку для досок NONCLEO или STM Discovery

Это также использует аппаратный i2c, но использует интерфейс STM HAL

Rogerclark
Пт 23 февраля 2018 г., 4:20
Аппаратное обеспечение прикреплено к использованию конкретных булавок

Программное обеспечение не выполняет обязанности использовать те же булавки, но может использовать любые булавки

Вы не можете использовать их обоих одновременно на одних и тех же штифтах.

Бдбелл
Пт 23 февраля 2018 г., 4:39
[Rogerclark - Пт. 23 февраля 2018 г., 4:19 утра] - Если у вас еще нет.

Эти анализаторы логики каналов в размере 10 долларов почти необходимы для выполнения чего -либо подобного, тогда вы можете подробно взглянуть на время автобуса
У меня есть один из эти, Но отлаживание этого на моем устройстве составляет 25x35 мм и имеет STM32, зарядный цепь, MPU9250, EEPROM и Bluetooth модуль...просто не произойдет. Я закажу несколько прорывных печатных плат на MS5611 из Taobao, чтобы отлаживать с.

Rogerclark
Пт 23 февраля 2018 г. 5:59 утра
Ух ты

Выглядит крутой анализатор.

В аналогичных обстоятельствах я припаял крошечный проволоки к печатной плате, чтобы подключить логический анализатор. Я обычно использую проволоку «проводной обертывания», но если это слишком густо, я прибегаю к очень тонкому эмалированному медному проводу

Аранеус
Пт 23 февраля 2018 г., 18:54
[Rogerclark - Чт 22 февраля 2018 г. 9:32 вечера] - Является ли проблема, которую сканер I2C не работает сейчас или что это устройство не работает с оборудованием i2c ??
Проблема в том, что MS5611 не работает и не обнаруживается с помощью аппаратного i2c.

Rogerclark
Пт 23 февраля 2018 г., 20:49
Я не уверен, что сканер USB является надежным индикатором того, присутствует ли устройство на шине.

Даже с программным обеспечением i2c у меня были проблемы с некоторыми устройствами.

Я бы написал какой -то тестовый код, который считывается из регистра ID на этом устройстве (или в регистре состояния и т. Д.) И использовать логический анализатор для просмотра времени и трафика шины и трафика

Пса. Я не сделал’T Напишите код Adware I2C, чтобы вы могли получить больше ответов, если вы посмотрите в историю GitHub и выясните, кто отправил код, а затем в личку им

Это не коммерческий продукт, никто не получает никаких денег на написание денег или отладка кода.

Стивестронг
Сб 24 февраля 2018 г. 16:58
[Аранеус - Пт. 23 февраля 2018 г. 18:54] - Проблема в том, что MS5611 не работает и не обнаруживается с помощью аппаратного i2c.
Проблема в том, что не все используют этот чип.
Если вы хотите получить поддержку для этого, вы должны предоставить нам аппаратное обеспечение или сюжет сигнала.

Бдбелл
Солнце 25 февраля 2018 г., 7:50 утра
[Rogerclark - Пт. 23 февраля 2018 г. 5:59 утра] - Выглядит крутой анализатор.

В аналогичных обстоятельствах я припаял крошечный проволоки к печатной плате, чтобы подключить логический анализатор. Я обычно использую проволоку «проводной обертывания», но если это слишком густо, я прибегаю к очень тонкому эмалированному медному проводу
Анализатор довольно старый, и ни одно из доступных программного обеспечения не было обновлено некоторое время, но он все еще работает в то время, когда мне это нужно, я думаю, что я тоже получу новый :) . Я это сделал, как вы рекомендовали и приложили пару проводов к существующей печатной плате и быстро взглянули на вещи. Я посмотрел на разницу между HardWire I2C, имеющим доступ к MPU9250 и SoftWire I2C, доступа к MS56211 - потому что это то, что работает прямо сейчас - встроенный анализатор протокола I2C дал аналогичные результаты для обоих, и оба участка выглядели довольно похожими, поэтому мне придется копать глубже...
Rogerclark написал: Я бы написал какой -то тестовый код, который считывается из регистра ID на этом устройстве (или в регистре состояния и т. Д.) И использовать логический анализатор для просмотра времени и трафика шины и трафика

Mendesgeo
Пт, 09 марта 2018 г., 2:14
Такая же проблема здесь, с программным обеспечением i2c все работает нормально

Стивестронг
Чт 15 марта 2018 г., 2:07
После нескольких часов отладки SW, я думаю, я нашел основную причину для HW I2C, не обнаружив некоторых устройств, в то время как SW I2C не имел с ними проблем с ними.

Речь идет о конкретном идентификаторе (адрес) этих устройств, который составляет 0x7x.
В моем случае я тоже не мог обнаружить устройство с идентификатором 0x78.
После многих попыток и изменений SW я заметил, что вместо i2c_sr1_addr устанавливается бит i2c_sr1_add10.

Похоже, что интерфейс I2C HW автоматически переключается на 10 -битный режим, когда первые 3 бита байта адреса I2C составляют 1s, что имеет место для 0x7x.
видеть https: // Сообщество.ул.com/thread/44450-i2c

Поскольку текущий драйвер HW i2C не обрабатывает этого бита i2c_sr1_add10, MCU просто висит в моем случае.

Я не эксперт (пока) в драйвере I2C, поэтому, если кто -то чувствует себя уверенно в осуществлении обходного пути, он будет признателен/приветствуется.

РЕДАКТИРОВАТЬ
Думаю, этого будет достаточно, чтобы измениться строка 327 к: if (sr1 & (I2C_SR1_ADDR|I2C_SR1_ADD10)) {

Стивестронг
Чт 15 марта 2018 г. 18:33
Пластырь Протестировано, и это работает для меня.

@bdbell, @mendesgeo, протестируйте этот патч и сообщите мне, что решает проблему для вас.

Rogerclark
Чт 15 марта 2018 г., 8:50 вечера
Спасибо, Стив

Я буду тянуть локалл, проверить, а затем слияние

KH123
Чт 29 марта 2018 г., 17:50
У меня есть MS5611.

i2c_scanner_softwire находит датчик, i2c_scanner_wire не.

Замененная папка "arduino_stm32-master" с фактической версией в ~/arduino/ardware/

Извините за мой глупый вопрос, но чего мне не хватает?

Это датчик. Исправлено 0x76 и два подтягивания 10K.

Изображение

Rogerclark
Пт 30 марта 2018 г., 20:37
10K довольно высок для 3.3V Системы

Попробуйте что -то вроде 3.3K или ниже

KH123
Сб 31 марта 2018 12:22
Сделал это с 2.2K, 3.3K и 4.7K.

Та же ситуация. "i2c_scanner_softwire находит датчик, i2c_scanner_wire не."

Иметь старый BMP085 с 0x77. Подтягивание на борту с 4.7K. i2c_scanner_softwire находит датчик, i2c_scanner_wire тоже находит этот датчик .....

(Загружены, распакованы и скопированы в ~/arduino/hardware/последняя версия "arduino_stm32-master" от 29.03.2018)

Изображение

Стивестронг
Сб 31 марта 2018 13:29
Таким образом, вы говорите, что 0x77 найден, но 0x76 не найден i2c_scanner_wire?

Бдбелл
Сб 31 марта 2018 г. 14:20
[Стивестронг - Сб 31 марта 2018 г. 13:29] - Таким образом, вы говорите, что 0x77 найден, но 0x76 не найден i2c_scanner_wire?
Я думаю, что @KH123 говорит, что они оба 0x77, но только BMP085 обнаруживается.

Я также протестировал BMP085, который обнаружен в 0x77, но MS5611 не обнаружен на одном и том же адресу с Hardwire - только с помощью Softwire...

Стивестронг
Сб 31 марта 2018 г. 16:28
[KH123 - Чт 29 марта 2018 г., 17:50] - Иметь MS5611 Здесь, на моем столе.

i2c_scanner_softwire находит датчик, i2c_scanner_wire не.

Замененная папка "arduino_stm32-master" с фактической версией в ~/arduino/ardware/
...
Это датчик. Исправлено 0x76...
и
[KH123 - Сб 31 марта 2018 12:22] - Иметь старый BMP085 с 0x77. Подтягивание на борту с 4.7K. i2c_scanner_softwire находит датчик, i2c_scanner_wire тоже находит этот датчик .....
Таким образом, один составляет 0x77 (найдено), а другой 0x76 (не найден). Или я что -то неверно истолковываю?

Бдбелл
Сб 31 марта 2018 г. 16:40
[Стивестронг - Сб 31 марта 2018 г. 16:28] -
[KH123 - Чт 29 марта 2018 г., 17:50] - Иметь MS5611 Здесь, на моем столе.

i2c_scanner_softwire находит датчик, i2c_scanner_wire не.

Замененная папка "arduino_stm32-master" с фактической версией в ~/arduino/ardware/
...
Это датчик. Исправлено 0x76...
и
[KH123 - Сб 31 марта 2018 12:22] - Иметь старый BMP085 с 0x77. Подтягивание на борту с 4.7K. i2c_scanner_softwire находит датчик, i2c_scanner_wire тоже находит этот датчик .....
Таким образом, один составляет 0x77 (найдено), а другой 0x76 (не найден). Или я что -то неверно истолковываю?
Не уверен насчет @KH123 - но в моем случае MS5611 и BMP085 установлены на адрес 0x77, только BMP085 обнаруживается HardWire, оба обнаружены с помощью Softwire

Стивестронг
Сб 31 марта 2018 г. 16:44
Как возможно, что вы можете установить адрес MS5611?
Я думал, что это жестко кодируется в чипе, если только некоторые дополнительные выводы не расширяют это.

РЕДАКТИРОВАТЬ
Хорошо, я нашел эту информацию: Адрес MS5611-01BA составляет 111011CX, где C-дополнительное значение PIN CSB Поэтому, если вы установите CSB на «0», то адрес 0x77.

Однако в этом случае я действительно не понимаю, почему одно устройство найдено, а другое нет, хотя оба имеют одинаковый адрес ...

Бдбелл
Сб 31 марта 2018 г., 17:10
[Стивестронг - Сб 31 марта 2018 г. 16:44] - Как возможно, что вы можете установить адрес MS5611?
Я думал, что это жестко кодируется в чипе, если только некоторые дополнительные выводы не расширяют это.

РЕДАКТИРОВАТЬ
Хорошо, я нашел эту информацию: Адрес MS5611-01BA составляет 111011CX, где C-дополнительное значение PIN CSB Поэтому, если вы установите CSB на «0», то адрес 0x77.

Однако в этом случае я действительно не понимаю, почему одно устройство найдено, а другое нет, хотя оба имеют одинаковый адрес ...
Да, мои «обычные» тестовые устройства имеют CSB, установленную на 0, поэтому адрес 0x77 - я не могу изменить это в своих тестовых устройствах, но завтра я постараюсь сделать тест с MS5611 @ 0x76, чтобы увидеть, обнаружен ли он

KH123
Солнце 01, 2018 6:38
Извините за возможное недоразумение.

Мой MS5611 имеет фиксированный адрес 0x76 на этом щите и BMP085 с фиксированным 0x77.

Бдбелл
Солнце 01, 2018 12:48
Я протестировал MS5611 с адресом, установленным на 0x76 и получил те же результаты - обнаружены в Softwire, но не Hardwire, так что в этом устройстве есть что -то странное :?

Я сделал захват с BMP085 и MS5611 в режиме HW и SW, используя мой логический снек - но не уверен, что здесь искать. Вот программный режим, где они оба обнаруживаются на 0x77

Бдбелл
Солнце 01, 2018 13:01
И вот режим HW - здесь обнаружен только BMP085 (я не мог прикрепить все 4 файла к одному сообщению...) - в обоих случаях они очень похожи на меня. Одна странная вещь, которую я заметил, это когда я пытаюсь просмотреть MS5611 с приложением My DSO Quad Logic Analyzer - он сбои, когда я подключаюсь к PIN -код SCL - когда я смотрел на него, используя логический подхиша выглядеть одинаково.

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

Стивестронг
Солнце 01, 2018 13:20
Ваши сюжеты не имеют хорошего разрешения, я не могу обнаружить условия начала или остановки, не говоря уже о адресе...
Было бы неплохо публиковать картинки, имеющие сигналы с более высоким разрешением, только часть, в которой доступ к устройствам, только SDA и SCL, больше нет сигналов.

Бдбелл
Солнце 01, 2018, 14:02
[Стивестронг - Солнце 01, 2018 13:20] - Ваши сюжеты не имеют хорошего разрешения, я не могу обнаружить условия начала или остановки, не говоря уже о адресе...
Было бы неплохо публиковать картинки, имеющие сигналы с более высоким разрешением, только часть, в которой доступ к устройствам, только SDA и SCL, больше нет сигналов.
Я использую старый логический логический скамейка с клиентом OLS - версия, которую я использовал, не позволяла выключать другие сигналы, но я только что нашел более новую версию, которая делает. Я могу экспортировать участки как формат CSV, PNG или VCD - что лучше для вас? Заговоры, которые я прикреплял раньше, имеют полную транзакцию - вам нужно только начало транзакции - как это?

Стивестронг
Солнце 01, 2018, 16:12
Это было бы хорошо.
Но главная проблема остается резолюция, я не вижу всех импульсов SCL, переключающихся.
Разве вы не можете увеличить скорость отбора сигнала?
Если SCL составляет 100 кГц, то скорость отбора проб должна быть как минимум двойной, лучше 4X или 10x (скорость отбора проб 1 МГц была бы идеальной) была бы идеальной).

Бдбелл
Солнце 01, 2018, 17:44
[Стивестронг - Солнце 01, 2018, 16:12] - Если SCL составляет 100 кГц, то скорость отбора проб должна быть как минимум двойной, лучше 4X или 10x (скорость отбора проб 1 МГц была бы идеальной) была бы идеальной).
Ах, хорошо - теперь данные начинают иметь гораздо больше смысла : oops:

Я изменил скорость отбора проб на 1 МГц, а также данные из внутреннего анализатора протокола I2C теперь также имеют гораздо больше смысла - спасибо!

Стивестронг
Солнце 01 апреля 2018 г., 18:29
Теперь запустите сканер I2C с 0x76, нам нужен только этот адрес и следующий.

Бдбелл
Пн, 02 апреля 2018 г., 7:14
[Стивестронг - Солнце 01 апреля 2018 г., 18:29] - Теперь запустите сканер I2C с 0x76, нам нужен только этот адрес и следующий.
Итак, я прошел гораздо больше тестирования на это - я создал эскиз, который позволил мне установить конкретный адрес для сканирования и иметь возможность изменить, использовал ли эскиз SW или HW. Когда я начал тестировать это что -то странное, что я обнаружил, что я смог получить HW, чтобы обнаружить, если я загружаю его после тестирования в режиме SW :?

Я, возможно, что -то было не так в моем кодировании, поэтому я создал 2 отдельных эскиза - один для SW и один для HW (прикреплено). Если я запускаю стандартный сканер I2C HW, он не найдет устройство, то я загружаю свой единый адрес HW Scanner - все еще не найден. Но - если я тестирую сканер программноговода (или мой эскиз SW по одному адресу) - он найден, а затем загружаю свой эскиз HW, и он найден.

Возможно, немного запутанно - но в основном, если я запускаю прикрепленный эскиз HW после запуска стандартного эскиза программной промывки, устройство найдено. Я также прикрепляю участки, показывающие обнаружение и обнаружение HW, а также обнаружение SW. Я не совсем понимаю, что здесь происходит... :? Также я заметил, что для того, чтобы сканер нашел адрес 0x77, мне пришлось установить адрес байта = 119; :?:

Стивестронг
Пн, 02 апреля 2018 г. 9:18 утра
Для меня все сигналы выглядят нормально, я не могу объяснить, почему не работает.
Но я заказал сейчас этот модуль, Я сделаю еще немного теста, когда он прибудет.

KH123
SAT 07 апреля 2018 13:32
Есть один из них здесь (GY -63 - MS5611). То же поведение.

Изображение

Изображение

Изображение

Пито
SAT 07 апреля 2018 г. 15:29
I2C подтягивания (т.е. 2x 4K7) ??

Стивестронг
SAT 07 апреля 2018 г., 17:49
Я думаю, что это аппаратный интерфейс, который обрабатывает этот адрес особым образом, аналогично 0x78.
Мой модуль путешествует по миру...

KH123
SAT 07 апреля 2018 г., 18:39
@Pito.

Вот картинка, показывающая резисторы вокруг двойного тела на этой доске.
Изображение

@stevestrong.

На данный момент есть дюжина небольших пакетов из Китая, на данный момент. Кажется, контейнерные корабли на данный момент работают «мертвая медленная скорость» :)

Стивестронг
Ср 18 апреля 2018 г., 18:43
Моя доска наконец прибыла.

Результаты моих испытаний: интерфейс i2c работает нормально.

Чип дает ACK только тогда, когда:
- В первый раз после POR (нажатие кнопки сброса недостаточно, она должна снять цикл питания и снова)
И
- Выводы CSB и PS подключены к VCC
И
- Его адрес (0x76) - первый отсканированный.

Так что я думаю, что проблема имеет две лица.

1. Чип очень чувствителен. Согласно его таблицу данных: Сброс последовательности
Сброс может быть отправлен в любое время. В случае, если нет успешной силы сброса, это может быть вызвано
SDA блокируется модулем в состоянии подтверждения. Единственный способ заставить MS5611-01BA функционировать
это отправить несколько SCLK, за которым следует последовательность сброса или повторить мощность при сбросе.
Поэтому, если сканер I2C использует другой адрес, чем свой собственный, чип может сойти с ума. У него нет информированного MCU. Поскольку в IC нет микроконтроллера внутри, команды для i2c и spi очень похожи. 2. Это усиливается схемой платы с использованием на борту 3.3V регулятор и переключатели уровня.
Кроме того, даже если у платы есть 2K2 подтягивающие резисторы на контактах CSB и PS до VCC (3.3 В или 5 В), вы должны сократить эти булавки в VCC, чтобы работать.

Почему эти условия влияют на поведение только в случае аппаратного i2c?
Я не уверен, но я знаю, что для модулей SD -карты есть аналогичная проблема с переключателями уровня, они не работают с аппаратным интерфейсом SPI.

Следующим тестом будет исключить (над мостом) встроенный регулятор и переключатели уровня.

Между тем, может ли кто -нибудь проверить поведение чипа в этих условиях, которые я упомянул и подтвердил?
Просто чтобы быть уверенным, что это не только моя доска как -то особенное.

Стивестронг
Пн 23 апреля 2018 г., 18:54
Хорошо, кажется, что я нашел основную причину.
Это не аппаратная проблема, он работает с или без переключателей уровня и/или 3.3V регулятор.

MS5611 не любит процедуру сброса шины, которая Сделано в библиотеке Adware I2C Если чип отвечает с помощью NACK.
Я отключил эту линию и - вуаля - она ​​начала работать правильно.

Я не уверен, зачем нам это нужно, потому что LIB Software I2C не выполняет никакого сброса в случае NACK.
Таким образом, мы, возможно, сможем отключить эти линии, чтобы избежать дальнейшей проблемы, например: «Почему программное обеспечение I2C работает, а HW i2c не?"

Бдбелл
Вт 24 апреля 2018 г., 4:15
У меня не было возможности провести больше тестов - но все тесты, которые я делал, были без переключателей, так как я не использую модуль, а на печатной плате, на которой я разработал STM32 в 3.3В.

Стивестронг
Вт 24 апреля 2018 г. 9:51 утра
В этом случае вы должны быть в состоянии проверить его, удалив эти две линии, как указано выше.

Бдбелл
Ср 25 апреля 2018 г., 5:30 утра
[Стивестронг - Вт 24 апреля 2018 г. 9:51] - В этом случае вы должны быть в состоянии проверить его, удалив эти две линии, как указано выше.
Если я прокомментирую эти две строки, сканер Hardwire ничего не найдет, если я оставлю их в It Find the MPU9150, но не MS5611. Softwire находит и то, что линии прокомментированы или нет...Я использую 1.8.5 IDE и я скачали последнее ядро ​​Rogers, чтобы убедиться, что больше ничего не изменил...

Стивестронг
Ср 25 апреля 2018 г., 7:37
Извините, я ошибался, я работал над локальной копией файлов, которые были сильно изменены, так как я пробовал много разных вещей.

На самом деле только строка 53 должна быть заменена на: i2c_master_enable(sel_hard, dev_flags); // avoid I2C_BUS_RESET

Бдбелл
Чт 26 апреля 2018 г., 3:17
[Стивестронг - Ср 25 апреля 2018 г. 7:37] - На самом деле только строка 53 должна быть заменена на: i2c_master_enable(sel_hard, dev_flags); // avoid I2C_BUS_RESET

Rogerclark
Чт 26 апреля 2018 г., 3:19
PR Стива был объединен, чтобы исправить это в ядре....