Jump to content

    
Sign in to follow this  
ovn

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

Recommended Posts

On 6/4/2021 at 11:28 AM, ovn said:

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

STMCubeMX, настраиваю CAN по этой статье для STM32F103, открываю пример с Гита и пробовал сам всё проинициализировать, но программа вешается при инициализации CAN в отладчике, при этом после POR(выключения питания) нормально запускается из FLASH. Что может быть?

Ну, раз из FLASH стартует нормально, значит, проект в целом рабочий. Почему при всем этом вешается в отладчике - надо разбираться. Тут вам и флаг в руки. Так и становятся настоящими embedded programmers.

 

Кстати, на этом пути вам на этом форуме охотно помогут. Не любят только откровенных любителей халявы.

Share this post


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

Делюсь (переходник CAN-USB, правда, на STM32F0x2, т.к. F103 не умеет одновременно USB и CAN).

Спасибо, я этот проект нашёл ещё в первый час заморочек, вот и получается, что на git всего 3 простых проекта, при этом под другие чипы. А если кто-то что то и делает, в принципе простенькое, то это уже ноу-хау и на этом деньги можно срубить, никто исходниками делиться не будет. Простой пример, намотка пробега авто, просто замена пакетов от ABS: https://www.drive2.ru/b/558230025954920672/

Edited by ovn

Share this post


Link to post
Share on other sites

Подключил шильд приёмопередатчика(трансивер TJA1050), при этом один ранее купленный другой SN65HVD230 оказался дохлым, в режимах Loopback combined with Silent, Loopback и Silent работает, я могу передавать в шину и принимать из шины кадры, анализатором CAN вижу, что кадры правильные, а в режиме Normal

выходит в 

void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
{
    uint32_t er = HAL_CAN_GetError(hcan);
    sprintf(trans_str,"ER CAN %08lX", er);
    HAL_UART_Transmit(&huart1, (uint8_t*)trans_str, strlen(trans_str), 100);
}

ошибка 0x80

Edited by ovn

Share this post


Link to post
Share on other sites

TJA1050 похоже в каком-то симплексном режиме работает, с ним в режиме Normal ошибки, поменял нерабочий SN65HVD230, подключил и заработало.

09.06.2021 в 08:47, Arlleex сказал:

Повторю, все-таки. Регистр MCR, бит 'DBF' по умолчанию в 1
image.png.19360d30aec812a47894ca7541175dc6.png

Если всё настроено нормально, то не требуется.

Edited by ovn

Share this post


Link to post
Share on other sites
On 6/7/2021 at 12:17 PM, ovn said:

их всего то штуки 3 на весь GIT, всё перелопачено за эти дни по нескольку раз

а если копнуть?

https://github.com/iDoka/awesome-canbus#arm

On 6/10/2021 at 8:33 AM, Arlleex said:

Сдается мне, что где-то у Вас разошлись скорости или настройки точек семплирования в девайсах.

вроде бы точка семплирования выбирается не исходя из идентичности настроек, а исходя из длины/топологии шины

Share this post


Link to post
Share on other sites

основная проблема, что на STM32F446RE при инициализации CAN из HAL вылетает в ошибку, на STM32F103C8 всё нормально, хотя код инициализации CAN идентичный, не важно HSI или HSE, бит готовности опорника выставляется. 

Share this post


Link to post
Share on other sites
10.06.2021 в 08:33, Arlleex сказал:

Сдается мне, что где-то у Вас разошлись скорости или настройки точек семплирования в девайсах.

Посмотрите соседнюю тему: автор до сих пор не смог правильно настроить тактирование МК. О каком CAN в таком случае может идти речь?

41 минуту назад, ovn сказал:

основная проблема, что на STM32F446RE при инициализации CAN из HAL вылетает в ошибку

Когда строят дом, сперва делают фундамент, а уж только после этого - кладут стены и крышу.

Так и у вас: о программировании какого CAN-а может идти речь, если вы до сих пор не сумели нормально запустить тактирование МК?

Один из первых этапов с которых начинается создание проекта на МК: изучение и настройка тактирования (различных генераторов и доменов), питания, GPIO, мультиплексоров пинов, средств отладки, обработки исключений/прерываний и т.п. базовых вещей. Только после того, как это всё будет работать чётко и без вопросов, только после этого можно приступать к CAN, UART и прочим интерфейсам и периферийным блокам.

Share this post


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

Посмотрите соседнюю тему: автор до сих пор не смог правильно настроить тактирование МК. О каком CAN в таком случае может идти речь?

Когда строят дом, сперва делают фундамент, а уж только после этого - кладут стены и крышу.

Так и у вас: о программировании какого CAN-а может идти речь, если вы до сих пор не сумели нормально запустить тактирование МК?

Один из первых этапов с которых начинается создание проекта на МК: изучение и настройка тактирования (различных генераторов и доменов), питания, GPIO, мультиплексоров пинов, средств отладки, обработки исключений/прерываний и т.п. базовых вещей. Только после того, как это всё будет работать чётко и без вопросов, только после этого можно приступать к CAN, UART и прочим интерфейсам и периферийным блокам.

Уже написано, что тактирование РАБОТАЕТ, и CAN на STM32F103C8 полностью работает во всех режимах, а на  STM32F446RE нет. 

Edited by ovn

Share this post


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

Уже написано, что тактирование РАБОТАЕТ, и CAN на STM32F103C8 полностью работает во всех режимах, а на  STM32F446RE нет.

И при чём тут F103, если запускаете на F446?

Share this post


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

И при чём тут F103, если запускаете на F446?

Сначала запускал на F103, потом на F446, а надо на F205, которого пока нет.

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.

Sign in to follow this