anton2 0 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба Здравствуйте, вот даташит драйвера микросхемы: https://www.compel.ru/item-pdf/2ca117b3fb3721979994a935337fcc2d/pn/novosens~nsa2860x-dqnr.pdf . На странице 33 представлено, как пользоваться i2c для данной схемы. Если нужно (подозреваю, что нет), то вот даташиты микроконтроллера, который подключен к микросхеме: https://www.st.com/resource/en/reference_manual/CD00171190-.pdf и https://www.st.com/resource/en/datasheet/stm32f103c8.pdf . Вот начальные условия: выходы микроконтроллера (pb6 и pb7) подключены к микросхеме. Необходимо отправить сигнал и получить его. С помощью библиотеки HAL я настроил его, но возникли проблемы: сигнал скорее всего не отправляется и не читается соответственно. Фрагмент кода представлен ниже: 0x6D адрес ведомого, EEPR_REG_SPARE1 адрес регистра (0xcf). Кроме этого я пытаюсь отправить весь массив, а в итоге отправляется только нулевой элемент и всё. Считывается тоже только нулевой элемент. Что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба Что говорит осциллограф? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 61 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба Нет ничего про резисторы с pb6,7 на 3.3В Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
anton2 0 23 ноября, 2023 Опубликовано 23 ноября, 2023 (изменено) · Жалоба Короче говоря, я исправил код, но он по-прежнему не работает. Теперь он выглядит так. Вот, что показывается стэке. Это странно. Какое значение бы я ни ввел, все равно будет c8 и 02. С чем это может быть связано? Изменено 23 ноября, 2023 пользователем anton2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба On 11/23/2023 at 2:06 PM, anton2 said: Короче говоря, я исправил код, но он по-прежнему не работает. Теперь он выглядит так. ...... Это странно. Какое значение бы я ни ввел, все равно будет c8 и 02. С чем это может быть связано? Вы знаете как работает шина I2C ? У вас обработчик прерываний на прием и передачу по I2C реализован ? On 11/23/2023 at 2:06 PM, anton2 said: Вот, что показывается стэке. Что такое стэке ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 61 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба И не будет работать. Либо _IT уберите, либо проверяйте окончание операции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 23 ноября, 2023 Опубликовано 23 ноября, 2023 · Жалоба Сделйте так: HAL_StatusTypeDef I2CRes; .......... I2CRes = HAL_I2C_IsDeviceReady(&hi2c1, addr, 5,5); И посмотрите чему равна переменная. Пока эта функция не вернет ноль (HAL_OK) - дальше двигаться смысла нет. Не забудьте поставить резисторы (пуллапы) на оба сигнала! addr - это Ваше (0x6D1<<1), только я не уверен что тут надо сдвигать влево. И при чтении не надо делать "|1" - функция чтения сама это сделает, когда нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться