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

4 minutes ago, Xenia said:

..

 вообще, можно ли USB-loader прошить F1? В смысле, где взять его бинарник, если таковой для F1 существует?

-не , лишь самописный колхозить, самые ходовые USBD варианты либо СDC-эмуляция СОМ-порта, -либо MSC  накопител, на который просто кидают прошивку..

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


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

4 часа назад, dimone сказал:

либо MSC  накопител

Более ходовой будет DFU, он для этого и придуман.

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


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

4 часа назад, Obam сказал:


TTL? В смысле по UART\SPI\I2C-загрузчик...

TTL в смысле UART, т.е. напрямую к компьютеру его не подключишь.

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


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

Изящненько как у вас "физика" (TTL) со с "логикой" (UART) замешались ;-)
Был бы TTL - к параллельному порту без выкрутасов подключалось бы.

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


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

On 11/5/2021 at 2:30 PM, dimone said:

Может кого-то сталкивался.

Имеется stm32F103 , GD32 и АРМ32

Вопрос, как лучше в программе различать, на каком она чипе запущена , что-б корректно работала?

Вставлю свои 5 центов.

 

У меня на столе лежат:

  • STM32F103VET
  • GD32F103VET
  • GD32F303VET
  •  

SCB->CPUID возвращает/содержит:

  • 0x411FC231 для STM32F103VET
  • 0x412FC231 для GD32F103VET
  • 0x410FC241 для GD32F303VET
  •  

Похоже, это слово не меняется от экземпляра к экземпляру одного типа, а идентифицирует тип.

 

Еще раз повторю кратко свои изыскания из форума "Читайте эту тему":

- бинарник на мой проект под STM32F103 взлетел сразу на GD32F103 и 303 за исключением некоторых проблем с I2C: как оказалось, в режиме работы по прерываниям на GD32 нельзя устанавливать биты BUFIE и/или POS еще ДО передачи адреса периферии, что я делал на STM32F103 для особых случаев чтения только одного или только двух байтов - это приводило к зацикливанию прерывания на GD32, т.к. бит SB не сбрасывался. Я перенес эти настройки в другую ветвь обработчика прерывания: STM32F103 было фиолетово, а GD32F103/303 заработал.

- встроенный UART загрузчик в GD32 полностью совместим с STM32, ST Loader Demostrator программирует без проблем.

- DFU через USB не пробовал ни на каком.

- На GD32F103 с питанием от 3.3в ADC температурного датчика уходит на максимум; случайно обнаружил, что при питании от 3.2в температура правильная, а чуть поднял питание - насыщение.

- Этой ADC проблемы нет на GD32F303.

- В моем проекте не задействованы SPI и большинство таймеров; те, что задействованы, работают ожидаемо. DMA и RTC тоже в порядке.

- запись во flash из самой программы работает на GD32 без проблем; есть ощущение, однако, что на GD32 требуется больше времени для записи страницы. Проскакивала информация, что GD32F фактически работает из дополнительной "теневой" RAM, куда при старте копируется содержимое из встроенного SPI flash чипа, и GD32F представляет собой, по сути, гибридную сборку. Благодаря RAM быстродействие GD32F, якобы, выше, чем STM32F, и не нужно циклов ожидания как для flash; GD32F103 имеет максимум частоты в 108MHz. Эти факты я не проверял, но ощущение таки есть, что GD32F103 действительно пошустрей на 72MHz: есть у меня в проекте цикл обработки загруженой конфигурации, я измеряю время этого цикла и вижу примерно на 10% бОльшую скорость его обработки на GD32F в сравнении с STM32F103.

 

Вывод: для проекта мы рассматриваем GD32F103 как полноценную альтернативу STM32F103.

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

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


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

Что-то у СТМа с доступностью все по прежнему плохо. Поэтому и я на всякий случай озаботился проверкой совместимости GD32F103. Купил по объявлению сгоревшую плату от гироскутера и выпаял оттуда GD32F103RCT6. Так оказалось соизмеримо по цене, но быстрее, чем покупать микроконтроллер на Али. Впаял в свое устройство вместо STM32F103RCT6. Устройство завелось вроде без проблем. Буду позже еще тонко тестировать.

Используются ADC, DAC, почти все таймеры, несколько каналов DMA, SPI, USART. I2C тоже есть, но ногодрыгом. Тактирование от внешнего кварца, системная частота 72МГц.

Пока заметил такие отличия:

1.STM прошивается через STLink за 14секунд, GD за 19.

2.На STM плата потребляет 68мА, на GD всего 52мА. Неожиданно... Интересно, какое сравнительное потребление получалось у предыдущих тестеров?

3.Задержки в работе узлов немного другие. Объясню. После включения я запускаю по очереди таймеры, ЦАПы, АЦП, их привязку к DMA и т.д. И потом в ПО при настройке производится некая калибровка для синхронизации их работы. Так вот, здесь калибровочные цифры получились немного другие, чем для СТМ. Особо не вникал в причины, для меня это не принципиально.

 

Дополню. Проверил еще запись во Flash из программы. Бутлоадер и эмулятор EEPROM работают без проблем.

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

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


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

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

Впаял в свое устройство вместо STM32F103RCT6. Устройство завелось вроде без проблем.

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

Лет 5 назад, когда плотно работал с IMX6, и было сделано где-то 2 десятка контроллеров и прога работала как надо, но пришла новая партия и там DMA отказалось работать. Проблема была в ПО, конечно, но на первых-то платах все работало.

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

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


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

Понятно, что проверять нужно тщательно. Надеюсь мы здесь совместными усилиями и выявим некоторые подводные камни. Лично у меня оптимизма на счет взаимозаменяемости добавилось. Кстати, в тех же гироскутерах на одинаковых платах могут стоять как STM так и GD.

По поводу потребления. Посмотрел даташиты на эти конкретные чипы. STM обещает при всей включенной периферии типовые 51мА на 72МГц, GD - 45.5мА на 108МГц. В пересчете на 72МГц это около 30мА. Так что GD32F103 действительно должен потреблять заметно меньше.

Еще может кому будет полезно. Считал для сравнения UniqueID для двух конкретных чипов GD и STM:

GD: 0x31317116, 0x12363838, 0x31323135

STM: 0x05d8ff31, 0x37315534, 0x57018330

 

 

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


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

Еще обнаружил, что на гироскутере на дочерних платках (т.н. платы гироскопов) стоят контроллеры GD32F130C6T6. Полез в даташиты. Вроде это аналог по выводам и по периферии STM32F030C6T6. Но здесь ядро Cortex-M3 вместо Cortex-M0 у STM. Максимальные частоты одинаковые 48МГц. Потребление у GD опять получше 17.26мА против 23.3мА. Вроде по коду они должны быть совместимы снизу вверх?

У меня нет проектов для STM32F030  в таком корпусе, поэтому я проверить совместимость не смогу. Если кто-то захочет проверить, имейте ввиду, что GD32F130C6T6 на платке можно тоже быстро добыть для экспериментов совсем недорого на интернет-барахолках в разделах по гироскутерам.

 

 

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


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

Здравствуйте. Пробую использовать GD32F103VG вместо STM32F103VG.
Программа - бесконечный цикл (без RTOS), в котором около 30 задач, задействованы прерывания от 5 USART, 5 EXTI, 6 таймеров. Еще есть ADC-DMA, 3 SPI, USB-CDC. Рабочая частота - 72МГц.
Когда объем кода приближается к 300 кБ начинаются какие-то странности.
Прерывания по таймеру происходят на 20-30% реже, чем настроено. Теряется 5-10% байтов от USART-ов (скорость 57600). Причем, если уменьшать количество задач, чтобы объем кода составлял 200-250кБ, то все работает исправно.
Прошивка используется от STM32F103VG без изменений. На STM все работает как положено. Это такая особенность этого МК? Или есть надежда, что попался брак?

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


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

14 минут назад, vit496 сказал:

Это такая особенность этого МК? Или есть надежда, что попался брак?

Это такая особенность вашей прошивки. :wink:  Ищите баги.

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


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

On 11/14/2021 at 5:41 PM, KnightIgor said:

Проскакивала информация, что GD32F фактически работает из дополнительной "теневой" RAM, куда при старте копируется содержимое из встроенного SPI flash чипа, и GD32F представляет собой, по сути, гибридную сборку. Благодаря RAM быстродействие GD32F, якобы, выше, чем STM32F

Что-то сомнительно, что там будет теневая RAM на 256кБ или выше.

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


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

3 минуты назад, vit496 сказал:

Что-то сомнительно, что там будет теневая RAM на 256кБ или выше.

256КБ и не нужно, хватит в разы меньше. И называется оно "кеш" и давно уже имеется у многих МК. И часто включено по дефолту (после сброса).

И "не при старте копируется" - это был бы очень медленный старт, а как обычный кеш чтения работает.

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


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

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

256КБ и не нужно, хватит в разы меньше. И называется оно "кеш" и давно уже имеется у многих МК. И часто включено по дефолту (после сброса).

Тут что-то другое. Даже глядя на вот на эту табличку:

image.thumb.png.c4d5867cde56ce262d53f836773b13cf.png

Это из GD32F1 - AN002 Programming flash memory manual. И выход из спячки Standby в 59.4 мс для устройств с памятью до 128К, и 118.8 мс для устройств с памятью больше 128 К неспроста.

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


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

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

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

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

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

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

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

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

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

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