Jump to content

    

Переход с STM32F103 на GD32F103

Recommended Posts

TViT

Всем привет. Народ подскажите есть ли у кого опыт, по переходу с STM32F103RET6 на GD32F103RET6. У меня в проекте все работает если прошивку от stm32 залить в туже плату только с GD32 и spi и uart и порты, но вот CAN не работает.

Причем пакеты посылаются корректные все как stm32, но приема CAN пакетов от другого устройства не происходит. Фильтры все в 0, принимают все кадры. CAN-снифер показывает что посылки идут, но устройство на GD32 не принимает пакеты. Хотя посылает их корректно. При отладке не вызывается колбэк по приему, как будто в принципе не было пакетов на линии или они аппаратно CAN-контроллером не пропускаются на верхний уровень в приложение.

 

Подскажите куда копать, кто сталкивался с такой проблемой?

Share this post


Link to post
Share on other sites

Forger

Первое - вы все же ошиблись темой, разместите ее лучше в разделе STM32 ;)

Второе - тема аналогов STM32 всплывает тут далеко не первый раз. Достаточно пройтись поиском, чтобы в этом убедиться. Например: тут 

25 minutes ago, TViT said:

У меня в проекте все работает если прошивку от stm32 залить в туже плату только с GD32 и spi и uart и порты, но вот CAN не работает.

Это в целом нормально для GD32. С этим многие сталкивались - та же самая прошивка от STM32 работает, но частично.

К слову, у меня CAN (не куб, исключительно на регистрах) на GD32 завелся сразу нормально и не только он, но были особенности с HSE, пришлось пересобирать отдельную прошивку под GD32.

 

Share this post


Link to post
Share on other sites

TViT
44 минуты назад, Forger сказал:

Второе - тема аналогов STM32 всплывает тут далеко не первый раз. Достаточно пройтись поиском, чтобы в этом убедиться. Например: тут 

Да всплывает то много чего, но мне нужна конкретика, четкие шаги, где взять то, где это, для того и этого чтобы исправить ситуацию, а не общие рассуждения... По вашей ссылке как раз просто обсуждения без технических подробностей и конкретики.

 

44 минуты назад, Forger сказал:

К слову, у меня CAN (не куб, исключительно на регистрах) на GD32 завелся сразу нормально и не только он, но были особенности с HSE, пришлось пересобирать отдельную прошивку под GD32.

Вот это уже интереснее )) Подробнее можно, на какой библиотеке настраивали, может примеры есть как скрестить HAL lib и библиотеку для GD32. А если напрямую сами регистрами управляете, можете ли поделиться исходником...

Edited by TViT

Share this post


Link to post
Share on other sites

Forger
47 minutes ago, TViT said:

Да всплывает то много чего, но мне нужна конкретика, четкие шаги, где взять то, где это, для того и этого чтобы исправить ситуацию, а не общие рассуждения...

Повторюсь, в моем проекте работа с CAN с STM32 заработала сразу же с GD32. В своей библиотеке CAN (на регистрах) вообще ничего не менял под GD32. Просто копи-паст. 

RCC тоже (в GD32 он называется RCU). Это означает, что по внутреннему тактированию блоков разницы тоже нет. А значит CAN точно должен заводится с полпинка.

По "монстроподобныму" CUBE ничего не скажу, давно перестал на нем работать (

 

 

47 minutes ago, TViT said:

Подробнее можно, на какой библиотеке настраивали,

Сугубо по даташиту. Но чтобы не "рисовать" вручную тонную битовых масок и регистров, использовал готовые h-файлы CMSIS: stm32f10x.h и gd32f10x.h для STM32 и GD32 соотв.

Работаю в KEIL, паки с этими файлами его родные. KEIL поддерживает GD32. Поэтому под разные камни созданы разные проекты на базе общих исходников проекта и разных периферийных библиотек.

 

47 minutes ago, TViT said:

можете ли поделиться исходником...

Они сугубо на c++, не для распространения, извините 

Share this post


Link to post
Share on other sites

TViT

Ну что ж будем ждать более конструктивной помощи. Поскольку KEIL не использую, для независимости от какой либо IDE. Проект текущий тестирую в Eclipse, собирается через makefile.

По сути нужно решить одну проблему, почему пакеты не принимаются. Хотя все пакеты отправляются без проблем и ошибок и не отличаются от stm32. Может какой бит иначе нужно выставлять при настройке CAN в gd32 или наоборот сбрасывать...

 

Share this post


Link to post
Share on other sites

Forger
21 minutes ago, TViT said:

Может какой бит иначе нужно выставлять при настройке CAN в gd32 или наоборот сбрасывать...

Нет. Аппаратно они одинаковые, в чем лично убедился конкретно на этих камнях в реальном проекте. Откройте даташиты, сравните.

 

Разница была с АЦП, в частности с самокалибровкой. Там был нюанс. В остальном камни одинаково работали.

 

21 minutes ago, TViT said:

Ну что ж будем ждать более конструктивной помощи.

Присылайте проект вместе с железом и софтом. Это будет платно.

Share this post


Link to post
Share on other sites

TViT
30 минут назад, Forger сказал:

Присылайте проект вместе с железом и софтом. Это будет платно.

Это невозможно и бессмысленно (не настолько нужно чтобы рисковать целым проектом открывая его). Проект большой, платы под него тоже не 100х100мм. Плюс проект не мой, я его улучшаю дорабатываю и исправляю глюки. Просто сейчас на всякий случай появились мысли наперед действовать переходить на другие контроллеры. Поэтому нет так нет... Может еще кто-то сталкивался с такими проблемами время терпит, подожду еще помощи...

Edited by TViT

Share this post


Link to post
Share on other sites

TViT
27.04.2022 в 11:00, Edit2007 сказал:

В 19-м году тестировал GD105, модуль CAN для примера можете посмотреть.

can.zip 6 kB · 5 скачиваний

 

Спасибо большое, но мне скорее нужно на базе текущей реализации проекта на базе HAL lib понять в чем различия в настройке CAN. Например какой-то бит не так настроен, чем отдельно на базе GD32 lib или регистров портировать весь проект.

Может есть соображения на этот счет, буду рад любой информации )) Ткните носом где различия CAN модуля. Чтобы было понятно что вкл или откл при настройке CAN в текущем проекте через HAL lib.
 

Share this post


Link to post
Share on other sites

jcxz
16 минут назад, TViT сказал:

Ткните носом где различия CAN модуля. Чтобы было понятно что вкл или откл при настройке CAN в текущем проекте через HAL lib.

С чего Вы решили, что различия именно в CAN? Различия могут быть где угодно: в системе тактирования например или конфигурировании ног или ещё где-то.

Share this post


Link to post
Share on other sites

Forger
23 minutes ago, TViT said:

Ткните носом где различия CAN модуля.

В CAN блоке их нет. Откройте наконец даташиты на оба камня и убедитесь в этом лично.

Share this post


Link to post
Share on other sites

TViT
40 минут назад, jcxz сказал:

С чего Вы решили, что различия именно в CAN? Различия могут быть где угодно: в системе тактирования например или конфигурировании ног или ещё где-то.

Могут конечно. Но я их не вижу. Все ноги задействованы в этом МК. Даже SWO-pin для отладки хотелось бы иметь, но и его пришлось задействовать. Все пины работают и порты ввода вывода лампочки мигают по UART с правильнами скоростями все передается и принимается. Частота тоже 72МГц иначе бы все тайминги уплыли, там и FreeRTOS и опрос каждые 10мс по CAN разных устройств и все четко работает. Кроме приема по CAN.

 

 

33 минуты назад, Forger сказал:

В CAN блоке их нет. Откройте наконец даташиты на оба камня и убедитесь в этом лично.

Даташит смотрел, на сколько хватает моих познаний не увидел больших отличий. Поэтому и прошу помощи и наставлений у опытных людей.

Edited by TViT

Share this post


Link to post
Share on other sites

Captain777

Было такое на GD32F105. Передача идет - приема нет. Вылечилось изменением порядка инициализации. STM при этом работал. После, одна прошивка заработала и на STM и на GD. Тоже самое и с USB было. 

Share this post


Link to post
Share on other sites

TViT
17 часов назад, Captain777 сказал:

Было такое на GD32F105. Передача идет - приема нет. Вылечилось изменением порядка инициализации. STM при этом работал. После, одна прошивка заработала и на STM и на GD. Тоже самое и с USB было. 

Да у меня такое и на STM32 было )) Год назад примерно осваивал какой-то модуль, так вот пока в определенный порядок не выставил функции инициализации не работало. Но сейчас, что-то никак все перетасовал.

Да и тасовать то особа нечего... Вы про эти функции имели ввиду?
 

    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();
    MX_CAN_Init();

 

Share this post


Link to post
Share on other sites

TViT

Может есть у кого-то возможность простой проект создать для работы с CAN и у себя проверить наверняка есть такие процы у многих, если работает я проверю ваш проект у себя. Может у меня чип сбойный...

 

Вот мой проект, только без драйверов, форум не дает больше 4Мб прикрепить

TEST_CAN.7z

Edited by TViT

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.