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

Здравствуйте, подключен датчик температуры 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

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...