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

STM32 аппаратный i2c


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

Приветствую! Понимаю, что сейчас натолкаете полную корзину:D, но поинтересоваться больше негде.

С помощью HAL_I2C_Master_Transmit отправляю посылку в адрес микросхемы, но она ее не принимает. Посмотрел китайским анализаторам шину, а там какая то фигня, и я не могу понять где в коде ошибка.

адрес микросхемы 0x1C

регистр микросхемы 0x0A

то, что нужно отправить в этот регистр 0xFF

Скриншот того, что происходит на шине и main приложил.

Надеюсь на вашу помощь, заранее спасибо.

 

photo_2024-02-07_12-49-37.jpg

main.c

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

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

17 минут назад, AII сказал:

С помощью HAL_I2C_Master_Transmit отправляю посылку в адрес микросхемы

Достаточно выкинуть это барахло из проекта и все сразу заработает.

 

18 минут назад, AII сказал:

а там какая то фигня

А включить распознавание I2C не судьба? Да и что не так, то собственно? Адрес же вот так передаете:

I2C_ADDRESS << 1

А 0х1С сдвинутый влево на 1 бит будет 0х38, что и видно на диаграмме. Ну и 1 прилепилась в конце. Что передаете, то и видите.

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

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

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

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

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

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

3 минуты назад, BARS_ сказал:

сдвинутый

Читал в интернетах, что для стм нужно адрес двигать влево. Собственно сделал по аналогии как тут:

https://robotclass.ru/articles/skaner-i2c-shiny-dlya-stm32/

4 минуты назад, BARS_ сказал:

Достаточно выкинуть это барахло из проекта и все сразу заработает

Я ждал от вас сообщения с матами на HAL. Но мне, домохозяйке и он пойдет.  У других же работает. Просто я делаю что то не так, и не понимаю что, по этому и пишу сюда. 

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

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

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

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

Используйте функции HAL_I2C_Mem_Write и HAL_I2C_Mem_Read которые предназначены для работы с памятью,
С общими функциями работы с шиной I2C HAL_I2C_Master_Transmit и HAL_I2C_ Master_Receive есть некоторые проблемы при работе с памятью.

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

3 часа назад, BARS_ сказал:

показывает

Как раз таки без смещения я получаю 0x0E, а со смещением 0x1C. Но, кроме адреса 0x1C  пока ничего не вижу. Сделал как советовали выше HAL_I2C_Mem_Write 

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

4 часа назад, AII сказал:

адрес микросхемы 0x1C

регистр микросхемы 0x0A

то, что нужно отправить в этот регистр 0xFF

По Вашему рисунку: старт, передается адрес 0х1С (семь бит), бит записи (1 бит), бит ACK (1 бит), а далее вместо записи адреса регистра следует стоп. 

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

Скорее всего не та функция используется для передачи адреса, а используется функция уже записи данных, которая должна быть после функции передачи адреса

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

50 minutes ago, AII said:

адреса 0x1C  пока ничего не вижу

Ваша микросхема не реагирует на этот адрес, не подтверждает своим сигналом АСК, поэтому функция HAL_I2C_Master_Transmit аварийно завершается и не продолжает посылать байты.

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

У Вас адрес установлен подтяжкой адресных входов к земле, через резисторы 47 кОм?

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

Пересобрал заново проект в cube mx, заново руками перепечатал и заработала передача, но последний байт записан почему - то 0xFF хотя должен быть 0x07.

 

photo_2024-02-07_23-05-32.jpg

photo_2024-02-07_23-06-19.jpg

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

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

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

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

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

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

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

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

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

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

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