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

Замена STM32 от Geehy Semiconductor

GD32F105 удалось и прошить и зайти отладчиком из Eclipse добавив в Debug.cfg строчку с

set CPUTAPID 0x4ba00477
 

Но USB Host не заработал. В USBH_UserProcess событие HOST_USER_CONNECTION появляется, но событие HOST_USER_CLASS_ACTIVE не возникает. То есть USB пытается соединится, но не получается.

При беглом просмотре GD32F105xx_Datasheet_Rev1.5.pdf, сразу бросается в глаза другая схема тактирования USB.

Также есть compatibility sumup between GD32 and STM32_V2.0.pdf. При чтении возникает ощущение, что проще с нуля взять рабочий пример от GD и начать частями накидывать старые функции системы. Но тут сразу проблема - названия регистров и флагов другие. Да и примера с Host нет.

Короче говоря, если какого-то прорыва не будет, то к GD32 нужно относится как с совершенно другому процессору, которому так-же нужно учится как и любому другому. А похожесть на STM32 скорее мешает, так как усыпляет бдительность.

Чем учится работать с GD32, проще съездить, купить и привезти в чемодане. Выйдет на порядки дешевле, чем тратить человеко часы специалистов.

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


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

У них на сайте есть библиотеки  GD32F3x0 Firmware Library ну и на другие процессоры. Ктонибудь пробовал на сколько они работоспособны. Конечно CUBE-MX это удобно но и так попрет, как то же раньше писали на них. 

Ссылочка ежели чего https://www.gd32mcu.com/en/download/7

Да и среду типа CUBE-MX неплохо бы слепить и на github выкинуть чтоб народ дописывал свои процы туда. Понемногу все само зашевелится

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


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

On 7/4/2022 at 10:42 PM, n_kurochkin said:

У них на сайте есть библиотеки  GD32F3x0 Firmware Library ну и на другие процессоры. Ктонибудь пробовал на сколько они работоспособны. Конечно CUBE-MX это удобно но и так попрет, как то же раньше писали на них. 

 

GD32F405 спокойно заработал с прошивкой от стм32ф405 без изменений. Юсб девайс, уарты, таймеры, спи, тви, дма

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


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

On 7/6/2022 at 1:18 AM, 0men said:

GD32F405 спокойно заработал с прошивкой от стм32ф405 без изменений. Юсб девайс, уарты, таймеры, спи, тви, дма

Скажите, от чего у вас тактируется GD32? При тактировании от PLL внутренний регулятор GD32 нужно переключать в High driver mode (биты 16, 17 регистра PMU_CTL). У STM этого нет. У меня GD32 виснет в цикле ожидания бита HDRF, причем судя по отображаемым значениям регистра PMU_CTL в отладчике,  бит PMU_CTL_HDEN остается нулем после записи туда 1. Тактирование PMU включено. При этом если не заводить PLL и оставить тактирование на частоте кварца, проц заводится и ножками дрыгает.

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


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

On 7/11/2022 at 2:55 PM, dm_mur said:

Скажите, от чего у вас тактируется GD32? При тактировании от PLL внутренний регулятор GD32 нужно переключать в High driver mode (биты 16, 17 регистра PMU_CTL). У STM этого нет. У меня GD32 виснет в цикле ожидания бита HDRF, причем судя по отображаемым значениям регистра PMU_CTL в отладчике,  бит PMU_CTL_HDEN остается нулем после записи туда 1. Тактирование PMU включено. При этом если не заводить PLL и оставить тактирование на частоте кварца, проц заводится и ножками дрыгает.

от кварца 25 МГц который идет на PLL, дальше с плл делителя /P уже на системный клок. Управление тактированием вообще не менялось, осталось от стм, сделано через HAL. Дерево клоков GD здесь не отличается от стм

 

  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;

  /* Enable Power Control clock */
  __PWR_CLK_ENABLE();
 
  /* The voltage scaling allows optimizing the power consumption when the device is
     clocked below the maximum system frequency, to update the voltage scaling value
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
 
  /* Enable HSE Oscillator and activate PLL with HSE as source */

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;


  if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

 
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
     clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;  
  if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  {
    Error_Handler();
  }

 

On 7/11/2022 at 2:55 PM, dm_mur said:

Скажите, от чего у вас тактируется GD32? При тактировании от PLL внутренний регулятор GD32 нужно переключать в High driver mode (биты 16, 17 регистра PMU_CTL). У STM этого нет. У меня GD32 виснет в цикле ожидания бита HDRF, причем судя по отображаемым значениям регистра PMU_CTL в отладчике,  бит PMU_CTL_HDEN остается нулем после записи туда 1. Тактирование PMU включено. При этом если не заводить PLL и оставить тактирование на частоте кварца, проц заводится и ножками дрыгает.

 

я кажется понял в чем у вас проблема. У вас тактирование системного клока идет от кварца напрямую, в этом случае нужно устанавливать эти биты, у меня же кварц идет на плл, а потом уже на системный клок, в этом случае биты High driver mode не нужны

 

image.thumb.png.b85341ebfd79701818ec1b62ef19ed0d.png

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

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


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

On 7/12/2022 at 5:35 PM, 0men said:

я кажется понял в чем у вас проблема. У вас тактирование системного клока идет от кварца напрямую, в этом случае нужно устанавливать эти биты, у меня же кварц идет на плл, а потом уже на системный клок, в этом случае биты High driver mode не нужны

 

Из сего документа на мой взгляд как раз следует, что в High-driver mode следует переводить при использовании PLL (то есть запуска приложения на высокой частоте тактирования).

image.thumb.png.431690919d3a0f14b7e52ccee5fd34a4.png

Мое понимание прочтения этого кусочка UserManual соответствует и порядку инициализации системных клоков (функция system_clock_config) в файле system_gd32f4xx.c из пака от GD:

 

image.thumb.png.4bae58138c179969140f043967e0f9f8.png

зависает он как раз в цикле ожидания бита готовности (строка 596). При этом бит HDEN не взвелся, хотя его установка была в 595 строке Если переключение в High-driver mode здесь вообще убрать, то проц непонятно куда вылетает (от жтаг просто отрубается и виснет).

 

Если выбрать тактирование от внешнего кварца на частоте кварца (без PLL), то проц запускается нормально. При этом в исходниках инициализации системных клоков от кварца без PLL нет и переключения в High-driver:

image.thumb.png.37b5ea56a0eee50e9a16cffb1b467ccb.png

 

чето голову сломал уже. Хотя скорее всего в трех соснах блуждаю

 

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


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

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

Из сего документа на мой взгляд как раз следует, что в High-driver mode следует переводить при использовании PLL (то есть запуска приложения на высокой частоте тактирования).

Это же алгоритм запуска режима, а не перечень условий для его запуска. 

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


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

On 7/13/2022 at 12:45 PM, Сергей Борщ said:

Это же алгоритм запуска режима, а не перечень условий для его запуска. 

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

 

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


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

2 часа назад, dm_mur сказал:

Первое предложение - это разве не условие для переключения в данный режим?

Нет. Там строчкой выше написано "following steps are needed...", следовательно это и есть один из тех шагов, которые нужно выполнить для перехода в данный режим.

2 часа назад, dm_mur сказал:

Но суть в том, что не работает у меня

Тут я пас.

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


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

On 7/13/2022 at 6:41 AM, dm_mur said:

Из сего документа на мой взгляд как раз следует, что в High-driver mode следует переводить при использовании PLL (то есть запуска приложения на высокой частоте тактирования).

image.thumb.png.431690919d3a0f14b7e52ccee5fd34a4.png

Мое понимание прочтения этого кусочка UserManual соответствует и порядку инициализации системных клоков (функция system_clock_config) в файле system_gd32f4xx.c из пака от GD:

 

 

 

 

у вас ошибочное понимание.   High-driver mode только для тактирования системного клока от IRC16M или HXTAL. Для тактирования от PLL хайдрайв мод не нужен.

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

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


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

On 7/13/2022 at 5:41 PM, Сергей Борщ said:

Нет. Там строчкой выше написано "following steps are needed...", следовательно это и есть один из тех шагов, которые нужно выполнить для перехода в данный режим.

 

Я имел ввиду предложение: If the 1.2V power domain runs with high frequency...

 

 

On 7/13/2022 at 5:55 PM, 0men said:

 

у вас ошибочное понимание.   High-driver mode только для тактирования системного клока от IRC16M или HXTAL. Для тактирования от PLL хайдрайв мод не нужен.

 

Хорошо. Что тогда я делаю не так? Могу прислать свой проект в Keil

 

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


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

Опробовал APM32F407VGT6 (Geehy) на замену STM32F407VGT6. Впаяли в рабочую плату в замен STM.

Т.е. совместимость нога в ногу.

Попробовал залить бинарник рабочего проекта от STM. Работает.

Утилита STM32 ST-LINK Utility совместно с ST-LINK/V2 видит его как родного.

Отладка через ST-Link в эклипс+openOCD идет.

Так же переработал рабочий проект от STM32 под "родные" библиотеки и заголовочные файлы от Geehy.

Вроде все используемые функции работают как должны.

Стилистика заголовочных файлов от Geehy несколько отличается от STM32.

Но стиль STM32 мне больше нравится, поэтому потихоньку привожу заголовочники к стилю STM32.

Дока не совсем полная. Например.

Нет описания как работать со встроенным датчиком температуры. Адреса калибровочных регистров не указаны, как в STM32.

Попробовал калибровочные коэффициенты прочитать по адресам как у STM32, а там сплошные FF.

В модуле Reset and Clock (RCM) (для STM32 это RCC) добавили бит включения тактирования FPU - RCM->AHB2CLKEN, бит с номером 1.

Только такое ощущение, что этот бит ни на что не влияет. Пробовал и выставлять его, пробовал и не выставлять - плавучка одинаково считается.

Как-то так )

 

Еще. Паяются хорошо. Надписи на корпусе сочные и яркие.

image.png.1c69c8ecf377238de7cdff07be7d75c6.png

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


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

On 7/29/2022 at 1:59 PM, Arlleex said:

А что из периферии было запущено?

PLL, Ethernet, Ethernet PTP, Watchdog, Timers, Timer режим квадратурного энкодера,  Timer режим One Pulse Mode,

GPIO на вход и на выход, UART, CRC, SPI,

ADC последовательное преобразование трех регулярных каналов с запуском от таймера,

Flash memory controller (самообновление прошивки - bootloader),

прерывания.

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


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

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

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

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

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

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

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

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

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

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