Разгона STM32F103

Mrburnette
Чт 16 июля 2015 г. 20:34
Этот пост на самом деле является продолжением одного начала на старом ардуино.Форум CC:
http: // форум.Ардуино.CC/INDEX.PHP?PHPSE ... MSG2188003

Соответствующие сообщения, которые я нашел по ссылкам на струйку: Сообщение на сообщение в сообщение...

Leaflabs, 5+ лет
http: // форумы.Leaflabs.com/тема.PHP?ID = 31

TKJ Electronics, 5+ лет
http: // блог.Tkjelectronics.DK/2010/02/S ... rclocking/

Bnewbold, Gist, 2.5 лет назад:
https: // Gist.GitHub.com/bnewbold/407140

Это первый раз, когда эта тема была указана на новом форуме, в основном я просто хотел запечатлеть более старые ссылки в случае, если кто -то решит снова поднять тему; URL -адрес TKJ был неверным, я смог отследить его основной сайт и выполнить поиск на этом сайте на пост в блоге. Однажды, если я чувствую себя особенно радикальным, я могу попробовать : Twisted:


Луча

Martinayotte
Чт 16 июля 2015 г., 8:51 вечера
Интересный ! ;)

Rogerclark
Чт 16 июля 2015 г., 22:30
Афик

Большая проблема с разгоном заключается в том, что USB не работает, если вы разгоняете, потому что, по -видимому, нет способа настроить сигнал тактового сигнала 48 МГц для USB, если основные часы - это что -то иное, чем 72 МГц или 48 МГц

Таким образом, кажется возможным поднимиться и запустить USB, но не разгона.

Это связано с тем, что у юридического прекалера USB есть только 2 возможных значения, без деления или деления на 1.5


Я полагаю, некоторые люди могут быть довольны небольшим количеством дополнительных выступлений и живут без USB.
Я не знаю, можно ли иметь краткосрочный режим типа «Nirto Boost», где USB ушел на некоторое время без системы хоста, замевающей ?

Недостаток может быть потенциально более полезным в приложениях питания, так как 48 МГц все еще намного быстрее, чем устройства AVR, вы все равно получаете преимущество дополнительной оперативной памяти и Flash.

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

Если мы сможем в любое время Swicth в Сломо, то вернитесь без побочных эффектов, это кажется полезным дополнением.

Мадиас
Чт 16 июля 2015 г., 22:33
Это может забросить вашу доску! Разгрузка - это хак не функция!---> найдено здесь: https: // Gist.GitHub.com/bnewbold/407140
Blablabla :) --> Только перенапряжение может нанести вред вашей доске ;)
Я разгоняю свой PIC32MX250 каждый раз с 40 МГц до 48 МГц, потому что я ленивый :) ---> 48 МГц = USB -часы и нечетная аудиочастота для i2s.
Так что 128 МГц должно быть возможным. Здесь, в Вене, у нас есть около 38 целевых, идеальная температура для перегруженности стресса доски на солнце.
Не забудьте изменить определение системных часов (720000) в STM32.h или где -то еще (не помните) или ваши периферийные устройства безумны.

редактировать: Да, Роджер предупредил о USB ;)

Клубника
Пт 17 июля 2015 г. 15:08
Не будет перенаселенным, не было бы глупым, так как они умрут с более чем 3.6 В? : D

~ Солома

Мадиас
Пт 17 июля 2015 г., 16:52
Не будет перенаселенным, не было бы глупым, так как они умрут с более чем 3.6 В? Нет, не совсем, вам нужно только немного охлаждения с жидким азотом или аналогичным :)

Клубника
Пт 17 июля 2015 г., 16:56
Следующая большая вещь: блоки охлаждения воды для MCUS. В комплекте с 360 -миллиметровыми радами : D

~ Солома

Мадиас
Пт 17 июля 2015 г., 21:59
Я думаю, у Аулла есть пассивное решение с очень горячий холодный клей для этого :)

Ахулл
Пт 17 июля 2015 г. 22:04
Мадиас написал:Я думаю, у Аулла есть пассивное решение с очень горячий холодный клей для этого :)

Клубника
Пт 17 июля 2015 г. 22:08
Только 10 тепло? Слишком меньше : D

~ Солома

Мадиас
Пт 17 июля 2015 г. 22:11
*Rofl*
С этим «зданием» в комбинацию клапана Marshall у вас не будет «Том 11», но минимум «Том 13» :)
https: // en.Википедия.org/wiki/up_to_eleven

Ахулл
Пт 17 июля 2015 г., 22:12
Вы, конечно, также могли бы зажечь фаната : Twisted:

Изображение

Рик Кимбалл
Чт, 03 сентября 2015 г., 22:35
Со всем этим разговором GD32F103 Deomon Daemon, я подумал, что попробую немного нажать мои чипсы. Я был удивлен, никто не упомянул, как вывести часы, чтобы проверить, какую скорость вы работаете. Вы можете вывести часы PLL, разделенные на 2 на PA8, если вы используете следующее:
// configure PA8 to output PLL/2 clock gpio_set_mode(GPIOA, 8, GPIO_AF_OUTPUT_PP); *(volatile uint8_t *)(0x40021007) = 0x7 /*MCO_Config(PLL/2)*/;

ZMEMW16
Чт, 03 сентября 2015 г., 22:38
О, волшебник, откуда сделал 0x40021007?

Стивен

Рик Кимбалл
Чт, 03 сентября 2015 г., 22:58
Rcc_cfgr

Посмотрите в RM0008 Справочное руководство 24:26
Это было на странице 98, я нашел адрес в заголовках SPL

victor_pv
Чт, 03 сентября 2015 11:07
Рик Кимбалл написал:Rcc_cfgr

Посмотрите в RM0008 Справочное руководство 24:26
Это было на странице 98, я нашел адрес в заголовках SPL

Рик Кимбалл
Чт, 03 сентября 2015 г., 23:09
Я не беспокоился об этом, но я серьезно сомневаюсь в этом. Кстати 0 Состояния ожидания заперли

Mrburnette
Чт, 03 сентября 2015 11:12
ZMEMW16 написал:О, волшебник, откуда сделал 0x40021007?

Стивен

Rogerclark
Чт, 03 сентября 2015 11:33
Рик Кимбалл написал: Я должен изменить некоторые определения в отношении подсчета Systick и Microsecond..

-рик

Rogerclark
Чт, 03 сентября 2015 г., 23:54
Обновлять
Это работает


#define stm32_delay_us_mult (f_cpu / 3000000)


Извини. Я не думаю, что это работает, но должен быть способ заставить что -то подобное работать

victor_pv
Сб 05 сентября 2015 12:21
Рик Кимбалл написал:Со всем этим разговором GD32F103 Deomon Daemon, я подумал, что попробую немного нажать мои чипсы. Я был удивлен, никто не упомянул, как вывести часы, чтобы проверить, какую скорость вы работаете. Вы можете вывести часы PLL, разделенные на 2 на PA8, если вы используете следующее:
// configure PA8 to output PLL/2 clock gpio_set_mode(GPIOA, 8, GPIO_AF_OUTPUT_PP); *(volatile uint8_t *)(0x40021007) = 0x7 /*MCO_Config(PLL/2)*/;

Rogerclark
Сб 05 сентября 2015 12:41
Виктор,

Я вполне уверен, что попытался установить основной PLL на максимальную настройку 16 х, а красная таблетка все еще работала ... по крайней мере на время ;-)

Настройка PLL находится в одном из файлов вариантов плат (я не могу вспомнить, какие из них похожи все имена), просто ищите определение, которое имеет XXX MUL_9 и измените его на 16 мюл. Но все, что вы можете проверить, это мигает, так как сериал будет идти по неправильной скорости, а также USB

Рик Кимбалл
Сб 05 сентября 2015 2:32
victor_pv написал:Так что 0 штат ожидания обрушится, как насчет того, чтобы идти быстрее, чем 96? Есть ли у него множители для большего? И если это произойдет, он работает или сбой?

victor_pv
Сб 05 сентября 2015 2:49
Рик Кимбалл написал:victor_pv написал:Так что 0 штат ожидания обрушится, как насчет того, чтобы идти быстрее, чем 96? Есть ли у него множители для большего? И если это произойдет, он работает или сбой?

Rogerclark
Сб 05 сентября 2015 г. 5:55 утра
У меня сложилось впечатление, что GD32 производится с использованием лучшего завода изготовления, чем STM32.

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

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

С STM32, на большинстве досок, доступных на данный момент, вы будете ограничены 128 МГц, так как это самый высокий доступ к PLL (16 х) 8 МГц.

Но если у кого -то есть кристалл на 12 МГц, вы можете поменять его на существующие 8 МГц и просто изменить основную PLL -Multier на 6 (по крайней мере, начнется с), тогда подтолкните его PLL -мультиплет. Думаю, это пойдет так быстро, так как я не думаю, что мой GD32 пошел так быстро, когда я попробовал это)

Я думаю, что я должен сделать, это улучшения, которые я сделал для GD32 с точки зрения установки материала Systick на правильное значение, основанное на F_CPU, а не на жестком кодировании только для 72 МГц, так как тогда было бы легко иметь меню для скорости эн.глин. 72 МГц или 48 МГц, или подтолкнуть его выше, если люди были рады потерять функциональность USB

victor_pv
Сб 05 сентября 2015 г., 23:00
Я только что попробовал 48 МГц, 128 МГц и несколько скоростей между ними, и, что касается светодиода, все работает, но, видимо, ничего, что я делаю, не меняет множитель для USB -порта.

Я попытался установить USB -прескалер на 1, и PLL на 6, чтобы получить 48 МГц и USB, но не работал.
Я не уверен, сделал ли я что -то не так или что -то в этом роде, но сейчас я не могу общаться с USB -портом даже после возвращения PLL в x9.
Загрузчик работает, так что я знаю, что мой USB Peripheral работает.

Кто -нибудь когда -нибудь мог установить USB -прескалер на /1 и запустить STM32 на 48 МГц?

Rogerclark
Солнце 06, 2015 12:14
Привет, Виктор

Вы используете загрузчик или stlink

Похоже, что код запуска PLL в ядре предполагает, что оборудование загружается с холода, и если PLL уже установлен загрузчиком в другое значение, я не смог заставить USB работать.

я.e Если я составляю загрузчик для 120 МГц, я могу запустить GD32 на 120 МГц, но я не могу запустить GD32 при 96 МГц, так как USB, похоже, не работает.

Но если я использую Stlink, я могу выбрать любую частоту, которая мне нравится, и USB Serial Works, если у меня есть действующая часовая частота USB

victor_pv
Солнце 06 сентября 2015 12:28 утра
Rogerclark написал:Привет, Виктор

Вы используете загрузчик или stlink

Похоже, что код запуска PLL в ядре предполагает, что оборудование загружается с холода, и если PLL уже установлен загрузчиком в другое значение, я не смог заставить USB работать.

я.e Если я составляю загрузчик для 120 МГц, я могу запустить GD32 на 120 МГц, но я не могу запустить GD32 при 96 МГц, так как USB, похоже, не работает.

Но если я использую Stlink, я могу выбрать любую частоту, которая мне нравится, и USB Serial Works, если у меня есть действующая часовая частота USB

Rogerclark
Солнце 06 сентября 2015 г. 12:38 утра
Привет, Виктор

Спасибо.

Я подозреваю, что это было что -то подобное, но у меня не было времени расследовать

victor_pv
Солнце 06 сентября 2015 12:56 утра
Успех!!

Я писал свои изменения в текстовом файле, поэтому я могу опубликовать их вам через минуту.
Прежде всего, я применил изменения, которые вы внесли в GD Core, чтобы иметь несколько вариантов USB Div, так что это точно так же, как ваш GD Core.
Затем я добавил функции, необходимые в нескольких файлах, чтобы иметь возможность отключить периферийные часы, а затем перед установкой прескалера я отключаю часы.

Интересно, что Leaflabs написали пару функций, чтобы обеспечить часы на периферийные устройства, но нет функции, чтобы отключить часы, что не имеет большого смысла для меня. Это очень удобно в приложениях с низкой мощностью, где вы можете отключить все периферийные устройства, которые вам не нужно сохранять питание.
Я уверен, что Ахалл, Мадиас и Рэй выиграют... ;) ).
В любом случае, позвольте мне сделать проверку здравомыслия и опубликует вам изменения.

РЕДАКТИРОВАТЬ: работать нормально для 48 МГц div_1 и 72 МГц div_1_5.
Бит 23, кажется, не имеет никакого эффекта, поскольку div2_5 работает как 1_5 (USB работает только в 72 МГц), а Div_2 работает как Div_1 (только работает нормально при 48 МГц).

Итак, для вашего ядра GD32 выполните эти изменения:


В arduino_stm32/stm32f1/system/libmaple/rcc_private.час
Добавлен:
static inline void rcc_do_clk_disable(__io uint32** enable_regs, rcc_clk_id id) { __io uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(enable_reg, line_num, 0); }

Rogerclark
Солнце 06, 2015 1:03
Спасибо, Виктор

Я должен скопировать свои изменения для GD32 в STM32, поскольку все они будут полезными.

Мне пришлось добавить функцию, чтобы установить функцию прескалера, эмумы и т. Д., Поскольку это был единственный способ, который, казалось, работал ;-)

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

Rogerclark
Солнце 06 сентября 2015 1:11
Виктор

Я только что понял, что вам, возможно, потребуется изменить загрузчик, так как он попытается запустить на 72 МГц, но, возможно, не сможет изменить свой USB -предваритель сильно отличается от ядра, так что это может быть в порядке)

victor_pv
Солнце 06, 2015 1:16
Rogerclark написал:Виктор

Я только что понял, что вам, возможно, потребуется изменить загрузчик, так как он попытается запустить на 72 МГц, но, возможно, не сможет изменить свой USB -предваритель сильно отличается от ядра, так что это может быть в порядке)

Rogerclark
Солнце 06 сентября 2015 1:42
Виктор

ХОРОШО.

Пришлите мне изменения текста, чтобы сбросить материал USB Prescaler, и я попробую, так как у меня уже есть настройка для запуска GD32, но я могу проверить различные скорости, только если я использую Stlink

Пса. У меня довольно много изменений, чтобы убедиться, что все работает при изменении f_cpu, есть некоторые числа, связанные с периферийными часами E.глин. эн.глин. 72000000 и 36000000 на STM32 и коэффициент времени задержки

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

Но, оглядываясь назад, возможно, мне следовало бы проверить, были ли какие -либо направления на APB1 и APB2 в коде, поскольку это возможно, Peripheral Clock Freq Def являются избыточными

КСТАТИ. В GD32 я также удалил из материала STM32F2, так как я знал, что это полностью избыточно

Так что я подозреваю, что я могу сделать в ядре STM32.

victor_pv
Солнце 06 сентября 2015 г. 1:54 утра
Rogerclark написал:Виктор

ХОРОШО.

Пришлите мне изменения текста, чтобы сбросить материал USB Prescaler, и я попробую, так как у меня уже есть настройка для запуска GD32, но я могу проверить различные скорости, только если я использую Stlink

Rogerclark
Солнце 06, 2015 2:00 утра
ХОРОШО

Я думаю, ты имеешь в виду этот пост

http: // www.STM32duino.com/viewtopic.PHP ... T = 20#P5565

Спасибо

Rogerclark
Солнце 06 сентября 2015 г. 3:43
Виктор

Спасибо.

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

Я, вероятно, заменю загрузчика так, чтобы он работал на 96 МГц для GD32, так что он находится в спецификации, если у кого -то есть GD32, который не будет работать при 120 МГц

Я постараюсь обновлять вещи STM32 сегодня сегодня.

Спасибо

Роджер

Daybyter
Вт 17 ноября 2015 г. 12:00
Правильно ли я настраиваю PLL с

void rcc_configure_pll (rcc_pll_cfg *pll_cfg);

Теперь в последнем коде STM32Duino?

Так что мне нужен объект типа

typedef struct rcc_pll_cfg {
rcc_pllsrc pllsrc; /**< PLL источник */

/** Специфичные для серии данных конфигурации. */
void *данные;
} rcc_pll_cfg;

Чтобы установить множитель PLL? Я там пример для содержания *данных ?

Тиа,
Андреас

Библиотека RTC

Чтение RPM и таймер?