T-101 0 7 марта Опубликовано 7 марта · Жалоба Просьба сильно не пинать ) По производственной необходимости практически с нуля осваиваю работу с контроллером STM32 и интерфейсом I2C. Из оборудования есть плата STM32F411E-DISCO. На ней есть акселерометр LSM303AGR. Вот с ней и надо наладить связь по интерфейсу I2C. Проект собирал на STM32CubeMX STM32CubeIDE. Делал всё вот по этой статье https://microtechnics.ru/stm32-i2c-nastrojka-i-primer-ispolzovaniya-shiny-i2c/#more-1484. Связь установить не удалось. Осциллографом выяснил, что посылка по I2C даже не выходит из контроллера. Подскажите, пожалуйста, куда копать? Сам проект лежит вот здесь: https://disk.yandex.ru/d/qIG5v3nBg46VJA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 7 марта Опубликовано 7 марта · Жалоба Пример есть готовый в Кубе stm32cube_fw_f4_v1280.zip STM32Cube_FW_F4_V1.28.0\Projects\STM32F411E-Discovery\Demonstrations Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 7 марта Опубликовано 7 марта · Жалоба Через Transmit и Receive у меня тоже не получалось читать датчики, но для этой цели хорошо подошла функция: HAL_I2C_Mem_Read( &hi2c1, devAddress << 1, regAddress, 1, pData, 2, I2C_TIMEOUT10); куда сразу закладываем номер регистра данных - regAddress и адрес буфера на 2 байта, куда надо прочесть данные - pData. Т.е. всё делает одна эта функция. В вашем случае это будет выглядеть так: HAL_I2C_Mem_Read( &hi2c1, I2C_ACL_ADRESS << 1, rgMgnAdress, 1, &rgMgnData, 2, I2C_TIMEOUT10); Внимание! в качестве rgMgnAdress следует класть число (в вашем случае 0x4F), а не адрес памяти, где оно лежит! Вероятно в этом ваша ошибка. HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
T-101 0 13 марта Опубликовано 13 марта · Жалоба Спасибо! Буду биться дальше :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
T-101 0 15 марта Опубликовано 15 марта · Жалоба Пошёл процесс. :) Сигнал на шине i2c появился. И появился новый вопрлс. Как в STM32IDE режиме выполнения проекта посмотреть на экране значение считанныз по i2c данных? В этом режиме они не отображаются на вкладке "Live Expressions". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться