Jump to content

    
ovn

Не проходит инициализация CAN Stm32

Recommended Posts

https://istarik.ru/blog/stm32/159.html

STMCubeMX, настраиваю 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 синяя платка?

Share this post


Link to post
Share on other sites
1 hour ago, ovn said:

У кого-нибудь есть рабочий пример работы с CAN для STM32F103С8?

На github 100500 рабочих примеров ждут уже как лет 10.

Share this post


Link to post
Share on other sites

Примеры эти у меня не работают их всего то штуки 3 на весь GIT, всё перелопачено за эти дни по нескольку раз. В конечном итоге в режиме закоротки CAN_MODE_LOOPBACK, после танцев с бубном пару дней, подключением кварца на плате, USB, чтобы получить Clock для Can, я стал передавать и получать пакеты. В режиме CAN_MODE_NORMAL, уже не работает, смотрю логическим анализатором, на ножках тишина, приёма нет. 

Я поражён на STM32, да библиотека HAL и калокуб - кака, но какого фига я должен писать под CMSIS, работать с битами и регистрами, если хочу быстро его поднять в проекте что-то простое, не читая десятки страниц мануалов. На Zynq 7000 CAN заработал через час под Линукс, а ещё через час на голом железе, используя библиотеку Xilinx и примеры, так с этим железом работает в разы меньше народу, и для самого дешманского и распространённого контроллера STM и платы нет сразу рабочего, простого проекта, чтоб залил и работает, я фигею.  

Edited by ovn

Share this post


Link to post
Share on other sites
39 минут назад, ovn сказал:

подключением кварца на плате, USB, чтобы получить Clock для Can

Без кварца кан не будет работать, в F103 с подключенным USB  кан не работает.

Share this post


Link to post
Share on other sites
43 минуты назад, ovn сказал:

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

Так и не говорите! Враги кругом. Понаворотили кучи регистров и битов - всё чтоб человека запутать! Ещё и RM читать заставляют....  :treaten: :biggrin:

Share this post


Link to post
Share on other sites
3 часа назад, x893 сказал:

Нельзя так писать ! Упал со стула (со смеха) и чуть ногу не сломал.

Поделитесь проектиком с CAN, чтобы открывался свежем STM32CubeIDE 1.6.1, чтобы мог открыть для отладки в Дебагере, прошить bin в синюю плату и чтобы оно РАБОТАЛО. Подобных тем по вопросу на этом форуме уже несколько. 

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

Без кварца кан не будет работать, в F103 с подключенным USB  кан не работает.

У меня виснет инициализация CAN пока USB не включишь в Кубике, что не очевидно, похоже клока для can без него нет, хотя контроллер вроде как висит на APB1.  При включении Нормал, похоже контроллеру нужен физический интерфейс с конкретной рабочей шиной, шильд, терминаторы и т. п. 

 

Вот что-то мне подсказывает, что так оно и есть, помимо ранее дешманского Blue Pill, есть ещё платка Nucleo F446RE, на ней тоже не запускается скаченный с GITa проект под неё, подозреваю что нужно запаивать кварц(и сразу вопрос какой, на 8 или 16?).  

Edited by ovn

Share this post


Link to post
Share on other sites
4 часа назад, ovn сказал:

В режиме CAN_MODE_NORMAL, уже не работает, смотрю логическим анализатором, на ножках тишина, приёма нет. 

Вам надо иметь минимум два устройства с трансиверами, что бы в таком режиме работало. Пока физически шины не будет - ничего не заработает. Это не UART.

Share this post


Link to post
Share on other sites
48 minutes ago, ovn said:

Поделитесь проектиком с CAN, чтобы открывался свежем STM32CubeIDE 1.6.1, чтобы мог открыть для отладки в Дебагере, прошить bin в синюю плату и чтобы оно РАБОТАЛО. Подобных тем по вопросу на этом форуме уже несколько.

А смысл ? Следующий опять за вас искать. Надо самому учиться рыбу ловить.

Share this post


Link to post
Share on other sites

нужно запаивать кварц(и сразу вопрос какой, на 8 или 16?).


В свете услышанного - не меньше 24ёх, "чтоб два раза не вставать" (-8Ж... ей-ей, детский сад.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.