|
I2C HAL DS2482, Работа с ds2482 средствами HAL STM |
|
|
|
Jan 31 2018, 06:50
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Здравствуйте, подключен датчик температуры 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 - Jan 31 2018, 06:50
|
|
|
|
|
Jan 31 2018, 16:38
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Цитата(sadat @ Jan 31 2018, 13:37)  На этом форуме люди ценят своё время - поэтому ожидать готовых исходников не стоит.
Надо смотреть в примерах от St варианты использования i2c шины (не могу подсказать точно, т.к. не знаю тип исп. процессора)
Я использую программный обработчик i2c при работе с мелкими порциями данных. В идеале - свой собственный обработчик 1Wire, чем мост в виде ds2482.
Искать гуглем "i2c stm32 hal" и смотреть чужой код. Думать.
Как будут более конкретные вопросы - будут более конкретные ответы. Естественно, я не просто сидел два дня, конечно же я смотрел примеры и гуглил. Примеры с вышемупомянутыми функциями нашлись только у куба и не совсем, то, что нужно. А гугл ничего полезного не выдает. Сегодня, забрал лог анализатор у товарища. Буду с ним сегодня смотреть. Что касается своего обработчика 1-w вместо моста, я бы с этим согласился, но в свое время на нём настоял один из сотрудников, продукция находится уже в продаже, выкинуть невозможно. Извините, что спросил без конкретики. Я просто думал, у кого-то есть опыт, он бы понял в чем проблема. Цитата(0men @ Jan 31 2018, 16:14)  без осциллографа пытаться скрестить слона и носорога? это фантастика Осцилограф-то есть, но декодировать цифру на нём - это садомазо Цитата(pitt @ Jan 31 2018, 15:52)  Забыть про Куб, выучить матчасть. Примеры работы с периферией для STM32 без Cube/SPL в сети имеются в достаточном количестве - было бы желание... Извините, как было раньше, я не знаю, но на сегодняшний момент Cube + HAL работают вполне хорошо (по крайней мере с обратным я не сталкивался) Что касается низкоуровнего программирования - я его противник. Низкий уровень считаю оправдан - только там где без него не обойтись. В своё время у меня был сотрудник, который рассуждал подобным образом и любитель писать собственную ось. Мы с ним постоянно ругались, потому что все делал в разы дольше и менее качественно, чем это можно было делать. В общем кому как, но я считаю это не конкурентный подход.
Сообщение отредактировал simark1979 - Jan 31 2018, 16:50
|
|
|
|
|
Jan 31 2018, 16:52
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(simark1979 @ Jan 31 2018, 19:38)  Осцилограф-то есть, но декодировать цифру на нём - это садомазо Что там декодировать то? Пару байт? Ваша задача правильно написать принцип записи байта и чтения байта. На этом все
|
|
|
|
|
Jan 31 2018, 17:06
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Цитата(0men @ Jan 31 2018, 19:52)  Что там декодировать то? Пару байт? Ваша задача правильно написать принцип записи байта и чтения байта. На этом все Если бы пару байт..... Я тут с анализатором сижу, башка уже кипит..... У этой ds2482 протокол идиотский (нужны повторные стартовые посылки во время передачи), а не просто послать или принять байт (с этим я бы я сюда не писал  ) Вопрос в том, как этого добиться от стандартного драйвера
Сообщение отредактировал simark1979 - Jan 31 2018, 17:16
|
|
|
|
|
Jan 31 2018, 17:28
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819

|
Цитата(simark1979 @ Jan 31 2018, 20:06)  Если бы пару байт..... Я тут с анализатором сижу, башка уже кипит..... У этой ds2482 протокол идиотский (нужны повторные стартовые посылки во время передачи), а не просто послать или принять байт (с этим я бы я сюда не писал  ) Вопрос в том, как этого добиться от стандартного драйвера под повторными вы подразумеваете 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 - Jan 31 2018, 17:33
|
|
|
|
|
Jan 31 2018, 17:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(simark1979 @ Jan 31 2018, 19:38)  Мы с ним постоянно ругались .... В общем кому как, но я считаю это не конкурентный подход. А ставить мост 1Wire-I2C, где скорее всего прекрасно можно было вообще обойтись без него, по-вашему это - "конкурентный подход"? Глядите, сколько гемора он принес, и это помимо занимаемого места на плате и доп. цены. Если изделий изготовлено несколько штук, то я бы нафик выпаял из них всех эти чудо-мосты и аккуратно закоротил бы одну из ног I2C и 1Wire (опытные монтажницы сделают так, что и не заметите этого). А уже софтовый 1Wire поднимается с полпинка (дергаем программно ногой, где раньше был аппаратный I2C). С другой стороны под эту чудо микрульку есть готовые исходники и примеры. Тут делов-то на один вечер, чтобы отладить и еще на один вечер чтобы все причесать к культурном виду.
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 31 2018, 18:41
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Цитата(0men @ Jan 31 2018, 20:28)  под повторными вы подразумеваете 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); А это поймал анализатор)  Впрочем, сейчас выясняется, что в документации на ds2482 не указано, что СТОП не мешает. Просто красавцы! Цитата(Forger @ Jan 31 2018, 20:59)  А ставить мост 1Wire-I2C, где скорее всего прекрасно можно было вообще обойтись без него, по-вашему это - "конкурентный подход"? А ds2482 поставил как раз поставил, товарищ о котором я упоминал выше Когда он обновлял ПО у него начались сбои с эмуляцией 1-w через уарт (хотя до этого работало) Он начал наставивать на этом мосту, я сильно ругался с ним, т.к. платы уже были разведены под uart (нужно было вешать сопли) Но любил заниматься шантажом и уперся..... Вот такая вот история... А теперь, я взял Cube + Hal + FreeRTOS и получается все ГОРАЗДО быстрей!
Сообщение отредактировал simark1979 - Jan 31 2018, 18:44
|
|
|
|
|
Jan 31 2018, 18:55
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(simark1979 @ Jan 31 2018, 21:41)  Когда он обновлял ПО у него начались сбои... ... А теперь, я взял Cube + Hal + FreeRTOS и получается все ГОРАЗДО быстрей! Чего-то я не понял - два программиста для одной железки? Цитата Вот такая вот история... Грустная история Обычно в конторах двух конфликтующих разрабов "разносят" по разным проектам и кабинетам. А тут - судя по всему, все наоборот ... Если не секрет, то просветите. А то вдруг пригодится на будущее
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jan 31 2018, 19:06
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Цитата(Forger @ Jan 31 2018, 21:55)  Чего-то я не понял - два программиста для одной железки? Грустная история Обычно в конторах двух конфликтующих разрабов "разносят" по разным проектам и кабинетам. А тут - судя по всему, все наоборот ... Если не секрет, то просветите. А то вдруг пригодится на будущее  Немного не так было) Я хозяин конторы, программировать умел на начальном уровне, но из-за нехватки времени нанял программиста, ПО писал он. У меня были другие задачи. Но товарищ затащил проект в болото (по причине изобретений велосипедов) и ввиду болезненного самолюбия любил заниматься шантажом. Вот и расстались. Теперь занимаюсь этими вопросами я.
|
|
|
|
|
Jan 31 2018, 19:23
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Из: Краснодарский край
Пользователь №: 46 094

|
Цитата(Forger @ Jan 31 2018, 22:13)  Щас будете еще больше смеяться Когда я взял его исходники и начал разбираться что и как, я лазил в инете и наткнулся на это https://geektimes.ru/post/293505/Когда читал, удивлялся, что очень всё похоже на наше А когда прочитал до конца, обнаружил, что автор ОН самый.  Если цензура не зарубит) я это классифицирую как "промышленный онанизм"
Сообщение отредактировал simark1979 - Jan 31 2018, 19:31
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|