Перейти к содержанию
    

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

25 minutes ago, TViT said:

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

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

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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++, не для распространения, извините 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, TViT said:

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

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

 

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

 

21 minutes ago, TViT said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 minutes ago, TViT said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

 

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

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

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

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();
    MX_CAN_Init();

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

TEST_CAN.7z

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...