Перейти к содержанию

    

Здравствуйте, подключен датчик температуры ds1820 через ds2482

 

Кому нибудь удавалось работать с ds2482 средствами Stm32 HAL драйверов?

 

Подскажите плиз, никак не могу дать ума. Протоколом ds2482 предусмотрены повторные старты/побайтное чтение чтение

 

Судя по всему нужно использовать функции:

HAL_I2C_Master_Sequential_Transmit_IT(...)

HAL_I2C_Master_Sequential_Receive_IT(...)

 

Но документации на эти функции толком нет.

Инструментально отдебажить шину нечем, исходники драйверов смотрел, но там возможны неявные генерации start/stop на аппаратном уровне (толком непонятно).

 

Если есть инфа, по работе этих функций (интересует что конкретно происходит на шине, если эти функции вызывать в разных режимах:

- I2C_FIRST_FRAME

- I2C_NEXT_FRAME

- I2C_FIRST_AND_LAST_FRAME

- I2C_LAST_FRAME

 

Или если есть опыт работы с ds2482 через HAL, покажите как.

 

Просидел два дня(

Изменено пользователем simark1979

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На этом форуме люди ценят своё время - поэтому ожидать готовых исходников не стоит.

 

Надо смотреть в примерах от St варианты использования i2c шины (не могу подсказать точно, т.к. не знаю тип исп. процессора)

 

Я использую программный обработчик i2c при работе с мелкими порциями данных.

В идеале - свой собственный обработчик 1Wire, чем мост в виде ds2482.

 

Искать гуглем "i2c stm32 hal" и смотреть чужой код. Думать.

 

Как будут более конкретные вопросы - будут более конкретные ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Забыть про Куб, выучить матчасть. Примеры работы с периферией для STM32 без Cube/SPL в сети имеются в достаточном количестве - было бы желание...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

без осциллографа пытаться скрестить слона и носорога? это фантастика

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
На этом форуме люди ценят своё время - поэтому ожидать готовых исходников не стоит.

 

Надо смотреть в примерах от St варианты использования i2c шины (не могу подсказать точно, т.к. не знаю тип исп. процессора)

 

Я использую программный обработчик i2c при работе с мелкими порциями данных.

В идеале - свой собственный обработчик 1Wire, чем мост в виде ds2482.

 

Искать гуглем "i2c stm32 hal" и смотреть чужой код. Думать.

 

Как будут более конкретные вопросы - будут более конкретные ответы.

 

Естественно, я не просто сидел два дня, конечно же я смотрел примеры и гуглил.

Примеры с вышемупомянутыми функциями нашлись только у куба и не совсем, то, что нужно.

А гугл ничего полезного не выдает.

Сегодня, забрал лог анализатор у товарища. Буду с ним сегодня смотреть.

 

Что касается своего обработчика 1-w вместо моста, я бы с этим согласился, но в свое время на нём настоял один из сотрудников, продукция находится уже в продаже, выкинуть невозможно.

 

Извините, что спросил без конкретики.

Я просто думал, у кого-то есть опыт, он бы понял в чем проблема.

 

без осциллографа пытаться скрестить слона и носорога? это фантастика

 

 

Осцилограф-то есть, но декодировать цифру на нём - это садомазо

 

Забыть про Куб, выучить матчасть. Примеры работы с периферией для STM32 без Cube/SPL в сети имеются в достаточном количестве - было бы желание...

 

Извините, как было раньше, я не знаю, но на сегодняшний момент Cube + HAL работают вполне хорошо (по крайней мере с обратным я не сталкивался)

Что касается низкоуровнего программирования - я его противник. Низкий уровень считаю оправдан - только там где без него не обойтись.

В своё время у меня был сотрудник, который рассуждал подобным образом и любитель писать собственную ось.

Мы с ним постоянно ругались, потому что все делал в разы дольше и менее качественно, чем это можно было делать.

В общем кому как, но я считаю это не конкурентный подход.

Изменено пользователем simark1979

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Осцилограф-то есть, но декодировать цифру на нём - это садомазо

 

Что там декодировать то? Пару байт? Ваша задача правильно написать принцип записи байта и чтения байта. На этом все

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Что там декодировать то? Пару байт? Ваша задача правильно написать принцип записи байта и чтения байта. На этом все

 

Если бы пару байт.....

Я тут с анализатором сижу, башка уже кипит..... :wacko:

У этой ds2482 протокол идиотский (нужны повторные стартовые посылки во время передачи), а не просто послать или принять байт (с этим я бы я сюда не писал :biggrin: )

Вопрос в том, как этого добиться от стандартного драйвера

Изменено пользователем simark1979

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Если бы пару байт.....

Я тут с анализатором сижу, башка уже кипит..... :wacko:

У этой ds2482 протокол идиотский (нужны повторные стартовые посылки во время передачи), а не просто послать или принять байт (с этим я бы я сюда не писал :biggrin: )

Вопрос в том, как этого добиться от стандартного драйвера

 

под повторными вы подразумеваете Repeated START Condition?

 

// Write both Design Capacity bytes starting at 0x4A

data[1] = 0x46;

data[2] = 0x11;

while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)0xaa, &data[1], 2, 100)!= HAL_OK);

data[1] = 0x47;

data[2] = 0x30;

while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)0xaa, &data[1], 2, 100)!= HAL_OK);

 

исправлено: Repeated здесь не будет, но скажите страницу в доке где он так необходим? Строку с Repeated можно разбить на 2 отдельные посылки

Изменено пользователем 0men

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Мы с ним постоянно ругались .... В общем кому как, но я считаю это не конкурентный подход.

А ставить мост 1Wire-I2C, где скорее всего прекрасно можно было вообще обойтись без него, по-вашему это - "конкурентный подход"?

Глядите, сколько гемора он принес, и это помимо занимаемого места на плате и доп. цены.

Если изделий изготовлено несколько штук, то я бы нафик выпаял из них всех эти чудо-мосты и аккуратно закоротил бы одну из ног I2C и 1Wire (опытные монтажницы сделают так, что и не заметите этого).

А уже софтовый 1Wire поднимается с полпинка (дергаем программно ногой, где раньше был аппаратный I2C).

 

С другой стороны под эту чудо микрульку есть готовые исходники и примеры.

Тут делов-то на один вечер, чтобы отладить и еще на один вечер чтобы все причесать к культурном виду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
под повторными вы подразумеваете Repeated START Condition?

 

// Write both Design Capacity bytes starting at 0x4A

data[1] = 0x46;

data[2] = 0x11;

while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)0xaa, &data[1], 2, 100)!= HAL_OK);

data[1] = 0x47;

data[2] = 0x30;

while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)0xaa, &data[1], 2, 100)!= HAL_OK);

 

исправлено: Repeated здесь не будет, но скажите страницу в доке где он так необходим? Строку с Repeated можно разбить на 2 отдельные посылки

 

 

Да, имеется ввиду Repeated START Condition.

Только HAL_I2C_Master_Transmit кроме старта и отправки данных генерит STOP в конце). А он протоколом не предусмотрен

 

вот код:

while(HAL_I2C_Master_Transmit(&hi2c1, 0x30, out_buff, 1, 10)!= HAL_OK);

while(HAL_I2C_Master_Transmit(&hi2c1, 0x30, out_buff, 1, 10)!= HAL_OK);

 

А это поймал анализатор)

 

image.png

 

Впрочем, сейчас выясняется, что в документации на ds2482 не указано, что СТОП не мешает. Просто красавцы!

 

А ставить мост 1Wire-I2C, где скорее всего прекрасно можно было вообще обойтись без него, по-вашему это - "конкурентный подход"?

 

 

А ds2482 поставил как раз поставил, товарищ о котором я упоминал выше

Когда он обновлял ПО у него начались сбои с эмуляцией 1-w через уарт (хотя до этого работало)

Он начал наставивать на этом мосту, я сильно ругался с ним, т.к. платы уже были разведены под uart (нужно было вешать сопли)

Но любил заниматься шантажом и уперся.....

Вот такая вот история...

А теперь, я взял Cube + Hal + FreeRTOS и получается все ГОРАЗДО быстрей!

Изменено пользователем simark1979

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Когда он обновлял ПО у него начались сбои...

... А теперь, я взял Cube + Hal + FreeRTOS и получается все ГОРАЗДО быстрей!

Чего-то я не понял - два программиста для одной железки? :cranky:

 

Вот такая вот история...
Грустная история :(

Обычно в конторах двух конфликтующих разрабов "разносят" по разным проектам и кабинетам.

А тут - судя по всему, все наоборот ...

Если не секрет, то просветите. А то вдруг пригодится на будущее ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Чего-то я не понял - два программиста для одной железки? :cranky:

 

Грустная история :(

Обычно в конторах двух конфликтующих разрабов "разносят" по разным проектам и кабинетам.

А тут - судя по всему, все наоборот ...

Если не секрет, то просветите. А то вдруг пригодится на будущее ;)

 

 

Немного не так было)

Я хозяин конторы, программировать умел на начальном уровне, но из-за нехватки времени нанял программиста, ПО писал он. У меня были другие задачи.

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

Вот и расстались. Теперь занимаюсь этими вопросами я.

 

Поделиться сообщением


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

Ваши слова сильно напомнили мне одну тему в этой ветке: https://electronix.ru/forum/index.php?showtopic=144401 :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сильно напомнило мне эту тему: https://electronix.ru/forum/index.php?showtopic=144401 :biggrin:

 

Щас будете еще больше смеяться :rolleyes:

 

Когда я взял его исходники и начал разбираться что и как, я лазил в инете и наткнулся на это https://geektimes.ru/post/293505/

Когда читал, удивлялся, что очень всё похоже на наше :blink:

А когда прочитал до конца, обнаружил, что автор ОН самый. :maniac:

Если цензура не зарубит) я это классифицирую как "промышленный онанизм"

Изменено пользователем simark1979

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация