Поиск
Показаны результаты для тегов 'hal'.
-
Здравствуйте, вот даташит драйвера микросхемы: 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). Кроме этого я пытаюсь отправить весь массив, а в итоге отправляется только нулевой элемент и всё. Считывается тоже только нулевой элемент. Что я делаю не так?
-
Есть проект (код) для STM32H7, стало интересно разобраться с настройками тактирования шин и CPU на примере настройки тактирования в CubeMX- то есть сопоставить код настройки тактовой частоты МК со схемой настройки тактирования в Кубе. Контроллер тактируется от внешнего источника 50 МГц. Причина- по коду не понятно с какой частотой тактируются шины и ЦПУ. Очевидным решением моего вопроса было бы открыть reference manual на контроллер и сопоставлять схему тактирования с функцией инициализации из HAL-библиотеки и схемой в CubeMX. Но вот тут у меня проблема: я не могу найти соответствие между ними. Более конкретно о написанном выше. Код инициализации, сгенерированный CubeMX (но проекта, из которого генерили, нет): Схема тактирования из Куба (дефолтный проект, обвел то, частоту чего мне интересно узнать): Схема тактирования из мануала на контроллер: Со строчками RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; все понятно. Но вот что за синтезаторы в коде PLLM, PLLN ... PLLR, что за делители уже есть вопросы. Такое название фигурирует только в коде. Тоже и про куб можно сказать: D1CPRE prescaler, HPRE prescaler встречаются только в схеме куба. Посоветуйте, пожалуйста, как в этом разобраться? Мануал может какой-нибудь или апнота
-
Всех приветствую. Предлагаю тут выкладывать найденные ошибки в библиотеках HAL. P.S. не нужно тут обсуждать применять или нет библиотеки. Итак. MCU - L433 библиотека - stm32l4xx_hal_i2c.c версия - STM32Cube_FW_L4_V1.17.2 (последняя на 23.06.2022) функция - I2C_IsErrorOccurred Причина: в цикле while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) после условия выхода по таймауту if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) нет выхода из цикла. Может остаться на очень долгое время. Решение: добавить break; после status = HAL_ERROR;
-
Предпосылки: пришлось заново создать .ioc файл и перегенерить код проекта заново, т.к. CubeMX ver 6.4.0 стал виснуть при генерации кода после того как я руками понизил на единицу в .ioc файле FirmwarePackage, MxCube.Version, MxDb.Version. В проекте ничего нет, кроме ETH и LwIp. Сравнивая код "что было и что стало" заметил, что в stm32f4xx_hal_conf.h:151 изменился приоритет TICK_INT_PRIORITY, было 0, стало почему-то 15. Что такое приоритет прерываний известно. Но зачем бы это понадобилось System Tick сделать наименне приоритетным? В чем смысл, чем они руководствовались?
- 12 ответов
-
HAL: как узнать, что шина i2c реально освободилась
VLshka опубликовал тема в ARM, 32bit
Всем привет. Вопрос гуру. Пытаюсь в stm32 cube организовать с помощью HAL обмен данными по i2c шине между двумя stm32 платами: NUCLEO-L053R8 (i2c-slave) NUCLEO-F746ZG (i2c-master) Обмен в обе стороны должен быть завершён 100 раз в секунду. Обнаружил, что код: HAL_I2C_Master_Transmit_DMA(hi2c, DevAddress, pData, Size); isTransmitProcess = 1; вызывает срабатывание калбека MasterTxCpltCallback() до того, как дойдёт до строчки "isTransmit = 1;". Выглядит, как будто HAL сгрузил pData и Size в dma и отрапортовал, что передача завершена. При этом dma имеет статус HAL_I2C_STATE_READY. Регистр NTDR при этом равен нулю. Соответственно, вопрос: как узнать, что шина i2c реально освободилась. -
Здравствуйте, необходимо реализовать обмен данными между мк stm32 и пк посредством ethernet. МК передает данные с датчиков, АПЦ и тд, ПК передает управляющие сигналы - зажечь, потушить светодиод и тд. МК - stm32f746 dicovery, PHY - LAN8742. Предполагаю использовать CubeMX, соответственно HAL, т.к. stm32f7, IDE - STM32CubeIDE, в качестве стека LWIP без ОС (читал разные мнения относительно применения FreeRTOS при использовании LWIP, пока решил не прикручивать его сюда). Перечитал кучу информации, форумов, но ничего толком не нашел, что можно было бы использовать в качестве основы, т.к. с Ethernet сталкиваюсь впервые. МОжет кто сможет помочь информацией, как должна выглядеть архитектура такой программы, код, примеры? Вроде понимание теории есть, проблемы с реализацией.
-
Настройка PTP STM32CubeMX HAL
NikFXN опубликовал тема в Cредства разработки для МК
Можете помочь: никак не могу настроить PTP(IEEE 1588) в Cube, уже всё перепробовал. Даже документации сколько-нибудь пригодной не нахожу. В идеале нужно научиться аппаратно добавлять метку времени к кадру изернет.