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

stm32f4 DS3231+LCD I2C


Ivan Rusev

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

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

На STM  LCD ничего не показывает.Перебрасываю LCD на другую шину I2C всё хорошо.

6 часов назад, elki сказал:

Почитать как осуществляется обмен даннымии на шине i2c и реализовать.

Всё прочитано.И реализовано.Правда на разных шинах.

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

Ну наверное 10.Но прикол снять информацию с этой же шины и  вывести на lCD не удаётся по практике Можете хоть 1000 минусов мне ставить .Почему не удаётся?.Я попытаюсь На AVR это сделать.

Какие нарушения у меня.Какой то бред.Форум для кого создан.Для посиделок.Вобщем ну вас .....

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

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

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

Только что, elki сказал:

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

Спасибо.

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

1 час назад, Ivan Rusev сказал:

Форум для кого создан.

Тогда Вы форумом ошиблись. Тут гадалки и экстрасенсы не тусят.
Невозможно Вам помочь по фразе "У меня не работает".

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

1 час назад, Eddy_Em сказал:

Код случаем не калокубом сгенерирован? Если да, то сочувствую...

Нет настройка вручную.По регистрам.Но вы мне подсказали.Проблема в коде LCD скорее всего.

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

Т.е., как это полагается у ардуинщиков, из разных источников был надерган непонятный непроверенный код, слеплен в кучу, а потом появились вопросы? Ну-ну…

Неоднократно пробуя найти в интернете работающие сниппеты кода, я сделал вывод, что лучше не тратить на эту бесполезную затею время, а всегда писать код самостоятельно. Это быстрей, надежней и правильней (особенно когда нужно сделать реализацию упоротых протоколов вроде 1-wire для DS18, управления адресуемыми светодиодами или светодиодными панелями)… Постепенно собираю свой набор сниппетов, который помогает сократить время при дальнейших разработках (а если вовремя разделить аппаратно-зависимую часть и алгоритмическую, то и перенести на другой МК будет несложно в случае необходимости).

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

я не ардуинщик.Просто  амматор.Вот код .

stm32f407ve adc.7z

Не всегда то что работат в avr то будет работать в stm32

Вернее ещё он будет работать .Но не так.

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

Какая жуткая реализация DHT22! Ну есть же таймер, есть АЦП, зачем делать блокирующие операции? Мой пример.

Еще одна жесть — в main: 12 одинаковых массивов bufN[50] - почему не сделать двумерный массив или одномерный buf[N*50]? Все вот эти uint8_t bm[] и т.п. нужно объявлять как static const, иначе они будут занимать место в оперативке, а не сидеть только во флеше. Да и здесь тоже правильней было бы сделать один длинный массив. Объявление переменных транслитерацией русского (pauza и т.п.) — некомильфо, как и комментарии не на английском языке. Структура кода ужасная: нет общего стиля написания, читать нереально сложно. Поток копипасты вроде 100500 LCD_SendChar еще раз свидетельствуют об ардуиноподходе — почему бы не объявить функцию, которая будет печатать строки? Еще и sprintf на МК… Жуть в полоску!!! 100500 if(menu == x) надо было одним селектом заменить, а чтобы код легче читать, не городить простыню, а разбить внутренности на отдельные static inline функции. Если одна функция расползается на кучу экранов, это значит, что что-то в ней явно не так!

Инициализация LCD сделана через одно место! Опять абдуриноподход… Ну неужели сложно засунуть все эти магические числа в массив (да и вместо магических чисел нужны макросы, чтобы не мучить себя в будущем воспоминанием, зачем же эта тройка или пятерка передается). Во второй массив загнать величину пауз при инициализации. В этом случае все будет красиво: в цикле отправляем нужное, а если требуется пауза - выдерживаем ее.

В инициализации I2C: лишний раз напомню, что регистры МК волатильны! Т.е. компилятор не будет оптимизировать 100500 записей подряд вида REGx &= a; REGx |= b; в одну, а так и будет тратить флеш и такты ядра на эту чепуху! Так что правильно писать один раз: REGx = (REGx & ~clearflags) | (setflags);

 

2021.03.10_09:53:04.png

Изменено пользователем Eddy_Em
Добавил страшную картинку
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Eddy_Em сказал:

Какая жуткая реализация DHT22! Ну есть же таймер, есть АЦП, зачем делать блокирующие операции? Мой пример.

Еще одна жесть — в main: 12 одинаковых массивов bufN[50] - почему не сделать двумерный массив или одномерный buf[N*50]? Все вот эти uint8_t bm[] и т.п. нужно объявлять как static const, иначе они будут занимать место в оперативке, а не сидеть только во флеше. Да и здесь тоже правильней было бы сделать один длинный массив. Объявление переменных транслитерацией русского (pauza и т.п.) — некомильфо, как и комментарии не на английском языке. Структура кода ужасная: нет общего стиля написания, читать нереально сложно. Поток копипасты вроде 100500 LCD_SendChar еще раз свидетельствуют об ардуиноподходе — почему бы не объявить функцию, которая будет печатать строки? Еще и sprintf на МК… Жуть в полоску!!! 100500 if(menu == x) надо было одним селектом заменить, а чтобы код легче читать, не городить простыню, а разбить внутренности на отдельные static inline функции. Если одна функция расползается на кучу экранов, это значит, что что-то в ней явно не так!

Инициализация LCD сделана через одно место! Опять абдуриноподход… Ну неужели сложно засунуть все эти магические числа в массив (да и вместо магических чисел нужны макросы, чтобы не мучить себя в будущем воспоминанием, зачем же эта тройка или пятерка передается). Во второй массив загнать величину пауз при инициализации. В этом случае все будет красиво: в цикле отправляем нужное, а если требуется пауза - выдерживаем ее.

В инициализации I2C: лишний раз напомню, что регистры МК волатильны! Т.е. компилятор не будет оптимизировать 100500 записей подряд вида REGx &= a; REGx |= b; в одну, а так и будет тратить флеш и такты ядра на эту чепуху! Так что правильно писать один раз: REGx = (REGx & ~clearflags) | (setflags);

 

2021.03.10_09:53:04.png

А вообще спасибо  вам что вы посоветовали пересмотреть.DHT22 И переписать чужую библиотеку.Я ничего против Ардуино не имею .Правда мне многое там не понятно и запутано.

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

8 часов назад, Eddy_Em сказал:

Какая жуткая реализация DHT22! Ну есть же таймер, есть АЦП, зачем делать блокирующие операции? Мой пример.

Он же написал, что он "аматор", что бы это ни значило)))) что вы ему пишете, думаете он соображает?

Каждый раз с ТС-а удивляюсь. Вот явно это не его. Зачем мучается? 
На его месте нормальные люди уже давно софтварно обошли бы, если сроки горят. Или взяли бы почитали референс, подключили логический анализатор и разобрались, кто кому жить мешает.
Нет, он каждый раз упорно пытается делать то, что не понимает, берет чужие либы, не читая их, пытается запустить.

Если я не разбираюсь в работе ДВС - я не лезу. Зарабатываю денег на том что умею, а потом плачу специалисту, если машина у меня не едет.

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

Похоже, человек пытается стать радиолюбителем. Правда, начал с совершенно неправильных вещей. С таким подходом ничего хорошего не получится. Так рождаются разве что абдуринщики: код писать не умеет, об оптимизации вообще ничего не слыхал, даташиты с RM читать не умеет, логанализатор не знает…

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

53 минуты назад, LiVit сказал:

Он же написал, что он "аматор", что бы это ни значило)))) что вы ему пишете, думаете он соображает?

Каждый раз с ТС-а удивляюсь. Вот явно это не его. Зачем мучается? 
На его месте нормальные люди уже давно софтварно обошли бы, если сроки горят. Или взяли бы почитали референс, подключили логический анализатор и разобрались, кто кому жить мешает.
Нет, он каждый раз упорно пытается делать то, что не понимает, берет чужие либы, не читая их, пытается запустить.

Если я не разбираюсь в работе ДВС - я не лезу. Зарабатываю денег на том что умею, а потом плачу специалисту, если машина у меня не едет.

ну у меня нет 20 летнего стажа.Как у вас.Вы же спецы.Что такое оптимизация я знаю.По по воду кода ничего не могу сказать.Есть люди знающие вроде вас .Ноя иногда читаю на форумах ваши заумные коды которые вы мне предлагаете.Нут например один товарищь  или господин .Показал  мне как он реализовал тактирование контроллера.Он запустил и внутреннюю частроту.И кварц.Я ведь не до такой степени идиот.Это камень в ваш огород.Тот кто здесь высиживает золотые яйца.Свои или чужие.Выдавая их за свои.Я пишу по простому.Может правильно.А может нет.Но оно работает.Да я пользуюсь чужими библиотеками.Иногда  корректирую и дописываю своё что то.Я не программист.А эксперементатор.RM  не раз читал.Таймера АЦП I2C .Но вс

46 минут назад, Eddy_Em сказал:

Похоже, человек пытается стать радиолюбителем. Правда, начал с совершенно неправильных вещей. С таким подходом ничего хорошего не получится. Так рождаются разве что абдуринщики: код писать не умеет, об оптимизации вообще ничего не слыхал, даташиты с RM читать не умеет, логанализатор не знает…

Как же вы с таким стажем можете быть стареньким?Я радиолюбитель.С контролерами начал с нуля.Абсолютний ноль .Я ни кем ни пытаюсь стать.Вами точьно не стану.У меня нет такой цели.Так как спецы такие как вы.Отечеству не нужны.Нашему Отечеству нужны бараны.Но я преследую конкретные цели.И хочу их реализовать.

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

1 час назад, LiVit сказал:

Он же написал, что он "аматор", что бы это ни значило)))) что вы ему пишете, думаете он соображает?

Каждый раз с ТС-а удивляюсь. Вот явно это не его. Зачем мучается? 
На его месте нормальные люди уже давно софтварно обошли бы, если сроки горят. Или взяли бы почитали референс, подключили логический анализатор и разобрались, кто кому жить мешает.
Нет, он каждый раз упорно пытается делать то, что не понимает, берет чужие либы, не читая их, пытается запустить.

Если я не разбираюсь в работе ДВС - я не лезу. Зарабатываю денег на том что умею, а потом плачу специалисту, если машина у меня не едет.

Значит я ненормальный амматор.Кое что соображаю.Упорство и наглость второе счастье.Не всегда беру чужое. А вы атомную бобу пытались сделать в домашних условиях.?А что вы умеете? Писать программы? Или ставить плюсы  или минусы?Я не спец.На форумах не часто сижу.Не боги обжигают горшки.Ваши боги.А у меня один Аллах.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Cкорее всего, при 31,5 В на выходе драйвер не выдаст 300 мА.  Хотя, раз заявлено входное от 100 В, то при 230 В может что-то и получится. Но это уже за заявленными пределами работы.  Можно подключить проволочный резистор 100 Ом и померить напряжение, но лучше использовать как заявлено: в диапазоне 12-20 В.  
    • @MisterAnderson , напряжение на выходе светодиодного драйвера зависит от нагрузки, и определяется оно напряжением на светодиодах, а не самим драйвером. Светодиоды имеют характеристику близкую к стабилитрону, напряжение на них от тока зависит мало. Белые светодиоды имеют это напряжение примерно 3...3,4 В. Четыре последовательно включённых - примерно 12...14 В. На подключение таких "трёхвольтовых" белых светодиодов и расчитан ваш драйвер. Драйвер напряжением не управляет, есть только ограничение по максимальному, больше которого он выдать не может. Драйвер светодиодов стабилизирует ток. Ваш драйвер стабилизирует его на уровне 0,3 А. И выдать больше 20 В при этом не может. Измеренные вами 31,5 В на холостом ходу - это напряжение его внутреннего питания. Под нагрузкой 0,3 А напряжение на его выходе тут же "просядет", выше 20 В не поднимется. Мощность на одном трёхвольтовом 300-миллиамперном светодиоде будет (примерно, для светодиодов точность никогда особо не обеспечивают) 0,3 А * 3,3 В = 1 Вт. Трёхвольтовый белый светодиод на ток 300 мА - это и есть одноваттный светодиод. На четырёх будет 4 ватта. Следующие по напряжению в линейке белых осветительных светодиодов - шестивольтовые. У них в одном корпусе последовательно соединённые два светодиодных кристалла. Четыре таких светодиода, включённых последовательно, ваш драйвер не потянет, потому что им нужно минимум 6*4=24 В, а ваш драйвер может выдать не больше 20. Впрочем, можно бы было поставить вместо четырёх трёхвольтовых четыре шестивольтовых на 150 мА, две группы параллельно по два последовательно, но вряд ли справитесь с переделкой платы под светодиоды. Поэтому этот вариант вам и не предлагали. Проще, дешевле и с наименьшими затратами собственного времени, без переделки драйвера, платы и т.п., с которой вы точно не справитесь, поставить четыре одноваттных трёхвольтовых, на которые ваш драйвер расчитан. Тем более, что купить их - проблем нет. Именно этот оптимальнейший совет вам и дали. Всё вам правильно уже много людей много раз разными словами рассказали. Что вас ещё смущает?
    • Предусилители-корректоры на полевых транзисторах. Радио №9,   №10/2010.  А.Гурский.
    • Тоже самое в подсветках фирменных телеках даже 10 летней давности. Ток можно уменьшить на треть без потери качества легко. Потребитель должен потреблять и всё тут.
    • Естественно после 7 вольт то. Или аккум сам по себе хлам и садит в себя или ибп. Тут вариантов не много.
    • Попробуйте зарядить, а потом погонять ее  в полный цикл несколько раз. Это если акум нормальный а у ТС 100% давно не нормальный.
  • Похожий контент

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