ovn 0 4 июня, 2021 Опубликовано 4 июня, 2021 · Жалоба https://istarik.ru/blog/stm32/159.htmlSTMCubeMX, настраиваю CAN по этой статье для STM32F103, открываю пример с Гита и пробовал сам всё проинициализировать, но программа вешается при инициализации CAN в отладчике, при этом после POR(выключения питания) нормально запускается из FLASH. Что может быть? void MX_CAN_Init(void) { /* USER CODE BEGIN CAN_Init 0 */ /* USER CODE END CAN_Init 0 */ /* USER CODE BEGIN CAN_Init 1 */ /* USER CODE END CAN_Init 1 */ hcan.Instance = CAN1; hcan.Init.Prescaler = 4; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; hcan.Init.TimeSeg1 = CAN_BS1_13TQ; hcan.Init.TimeSeg2 = CAN_BS2_2TQ; hcan.Init.TimeTriggeredMode = DISABLE; hcan.Init.AutoBusOff = DISABLE; hcan.Init.AutoWakeUp = DISABLE; hcan.Init.AutoRetransmission = DISABLE; hcan.Init.ReceiveFifoLocked = DISABLE; hcan.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN CAN_Init 2 */ /* USER CODE END CAN_Init 2 */ } улетает в /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } Запускал на stm32f446, та же история. Если идти по шагам, крутиться в этом цикле. /* Exit from sleep mode */ CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP); /* Get tick */ tickstart = HAL_GetTick(); /* Check Sleep mode leave acknowledge */ while ((hcan->Instance->MSR & CAN_MSR_SLAK) != 0U) { if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE) { /* Update error code */ hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT; /* Change CAN state */ hcan->State = HAL_CAN_STATE_ERROR; return HAL_ERROR; } } Есть у кого-нибудь рабочий проект с инициализацией CAN для stm32f103c8t6 синяя платка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 4 июня, 2021 Опубликовано 4 июня, 2021 · Жалоба А на шине все в порядке? Например, без терминатора там может не установиться рецессивный уровень. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ovn 0 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба У кого-нибудь есть рабочий пример работы с CAN для STM32F103С8? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба Есть, без кубов и халов только. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 1 hour ago, ovn said: У кого-нибудь есть рабочий пример работы с CAN для STM32F103С8? На github 100500 рабочих примеров ждут уже как лет 10. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба Не проще RM почитать и сделать самому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 38 minutes ago, adnega said: Не проще RM почитать и сделать самому? Это кому как. Да и более интересные книжки есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ovn 0 7 июня, 2021 Опубликовано 7 июня, 2021 (изменено) · Жалоба Примеры эти у меня не работают их всего то штуки 3 на весь GIT, всё перелопачено за эти дни по нескольку раз. В конечном итоге в режиме закоротки CAN_MODE_LOOPBACK, после танцев с бубном пару дней, подключением кварца на плате, USB, чтобы получить Clock для Can, я стал передавать и получать пакеты. В режиме CAN_MODE_NORMAL, уже не работает, смотрю логическим анализатором, на ножках тишина, приёма нет. Я поражён на STM32, да библиотека HAL и калокуб - кака, но какого фига я должен писать под CMSIS, работать с битами и регистрами, если хочу быстро его поднять в проекте что-то простое, не читая десятки страниц мануалов. На Zynq 7000 CAN заработал через час под Линукс, а ещё через час на голом железе, используя библиотеку Xilinx и примеры, так с этим железом работает в разы меньше народу, и для самого дешманского и распространённого контроллера STM и платы нет сразу рабочего, простого проекта, чтоб залил и работает, я фигею. Изменено 7 июня, 2021 пользователем ovn Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasily_ 45 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 39 минут назад, ovn сказал: подключением кварца на плате, USB, чтобы получить Clock для Can Без кварца кан не будет работать, в F103 с подключенным USB кан не работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 43 минуты назад, ovn сказал: но какого фига я должен писать под CMSIS, работать с битами и регистрами, если хочу быстро его поднять в проекте что-то простое, не читая десятки страниц мануалов. Так и не говорите! Враги кругом. Понаворотили кучи регистров и битов - всё чтоб человека запутать! Ещё и RM читать заставляют.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 46 minutes ago, ovn said: всего то штуки 3 на весь GIT Нельзя так писать ! Упал со стула (со смеха) и чуть ногу не сломал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ovn 0 7 июня, 2021 Опубликовано 7 июня, 2021 (изменено) · Жалоба 3 часа назад, x893 сказал: Нельзя так писать ! Упал со стула (со смеха) и чуть ногу не сломал. Поделитесь проектиком с CAN, чтобы открывался свежем STM32CubeIDE 1.6.1, чтобы мог открыть для отладки в Дебагере, прошить bin в синюю плату и чтобы оно РАБОТАЛО. Подобных тем по вопросу на этом форуме уже несколько. 3 часа назад, Vasily_ сказал: Без кварца кан не будет работать, в F103 с подключенным USB кан не работает. У меня виснет инициализация CAN пока USB не включишь в Кубике, что не очевидно, похоже клока для can без него нет, хотя контроллер вроде как висит на APB1. При включении Нормал, похоже контроллеру нужен физический интерфейс с конкретной рабочей шиной, шильд, терминаторы и т. п. Вот что-то мне подсказывает, что так оно и есть, помимо ранее дешманского Blue Pill, есть ещё платка Nucleo F446RE, на ней тоже не запускается скаченный с GITa проект под неё, подозреваю что нужно запаивать кварц(и сразу вопрос какой, на 8 или 16?). Изменено 7 июня, 2021 пользователем ovn Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Captain777 0 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 4 часа назад, ovn сказал: В режиме CAN_MODE_NORMAL, уже не работает, смотрю логическим анализатором, на ножках тишина, приёма нет. Вам надо иметь минимум два устройства с трансиверами, что бы в таком режиме работало. Пока физически шины не будет - ничего не заработает. Это не UART. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 48 minutes ago, ovn said: Поделитесь проектиком с CAN, чтобы открывался свежем STM32CubeIDE 1.6.1, чтобы мог открыть для отладки в Дебагере, прошить bin в синюю плату и чтобы оно РАБОТАЛО. Подобных тем по вопросу на этом форуме уже несколько. А смысл ? Следующий опять за вас искать. Надо самому учиться рыбу ловить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба нужно запаивать кварц(и сразу вопрос какой, на 8 или 16?). В свете услышанного - не меньше 24ёх, "чтоб два раза не вставать" (-8Ж... ей-ей, детский сад. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться