OPSIH
|
|
1 | |
Не могу поднять частоту GPIO03.12.2014, 17:02. Просмотров 9820. Ответов 25
Метки нет Все метки)
(
1. 3 дня назад переполз с 8-битных МК на STM32.
2. Использую демоплату MB913 C-01 с STM32F100RBT6B. Программу пишу в Кокосе. 3. Пытаюсь дрыгать ногой GPIO с максимально возможной частотой. 4. Для этого 4.1. в main.c написал вот Код
int main(void) { GPIO_InitTypeDef PORT; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); PORT.GPIO_Pin = (GPIO_Pin_11); PORT.GPIO_Mode = GPIO_Mode_Out_PP; PORT.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init( GPIOC , &PORT); RCC->CFGR &=~RCC_CFGR_HPRE; // предочистка RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // RCC->CFGR &=~RCC_CFGR_PPRE2; // предочистка RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // <------ играл делителем тут for(;;) { GPIOC->ODR = 0xFFFF; GPIOC->ODR = 0x0000; } return 0; }; Код
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) /* PLL confikurotion: = (HSE / 2) * 6 = 24 MHz */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL)); RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);// <------ играл делителем и множителем тут 6. И вдруг. При установке делителя в п.4.1. на 16 получал частоту 0,75 МГц на 8 - 1,5 МГц на 4 - 3 МГц на 2 - 4(!!!) МГц на 1 - 4(!!!) МГц Так же строка PORT.GPIO_Speed = GPIO_Speed_50MHz почему-то ни на что не влияла, хоть ставил ее в 2MHz, хоть в 10MHz, хоть в 50MHz. 7. День пролетел незаметно. Вчерашний. И сегодняшний. Гугол как-будто что то знает, но хитро ухмыляясь старается говорить больше о погоде. 8. Хочу 12 МГц на ноге. Возможно? |
|
03.12.2014, 17:02 | |
как поднять частоту оперативки? как поднять частоту озу? Как поднять частоту с 1333 до 1600? Можно ли поднять частоту шины с 344MHz где-то до 380MHz? |
|
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 215
|
|
03.12.2014, 17:17 | 2 |
Я на F103 максимум получил 8МГц. Надо выше кури DMA если в сотке оно есть.
0
|
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
|
|
03.12.2014, 17:19 | 3 |
Нуб->скорость махание лапкой. Похоже это заразно...
0
|
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,285
|
|
03.12.2014, 17:25 | 4 |
Новая единица измерения ногодрыга - Нуб? :)
0
|
OPSIH
|
|
03.12.2014, 17:30 | 5 |
DMA - это, конечно, хорошо. Но.
1. Как я понимаю, DMA "повышает" частоту, если надо что то быстро отдавать на выход и одновременно надо быстро и много вычислять ядром. У меня то ядро ничего особо не вычисляет 2. Если бы на 4 МГц меиндр был бы нестабилен или вообще пропадал бы сигнал - другое дело. Но он именно что строго фиксируется на 4 МГц. Вот здесь: http://pdf1.alldatasheet.com/datasheet- ... RBT6B.html на листе 13/84 схема как здесь: http://www.imbid.com.ua/wp-content/uplo ... _tree1.gif И на шинах, идущих к выходу написано 24 МГц. Поделить на 2 - как раз меиндр на 12 МГц вырисовывается. Как будто я где-то что-то не разлочил. И подозрения у меня падают на GPIO_Speed_50MHz. Но т.к. я в теме только три дня, то знаний маловато. |
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 215
|
|
03.12.2014, 17:37 | 6 |
А ты не на 2 дели.
Время на возврат к началу цикла ты учитываешь?
0
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
03.12.2014, 17:43 | 7 |
![]() ![]()
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
|
|
03.12.2014, 17:44 | 8 |
![]() Этот параметр не влияет на частоту работы процессора, а регулирует скоростные характеристики выходного каскада пина. И немножко увеличивает потребление тока (speed_50MHz по сравнению с меньшими установками).
0
|
OPSIH
|
|
03.12.2014, 17:46 | 9 |
... GPIOC->ODR = 0xFFFF; GPIOC->ODR = 0x0000; GPIOC->ODR = 0xFFFF; GPIOC->ODR = 0x0000; ... - один фиг. Странно конечно, что возврат к началу цикла не особо меняет скважность меиндра, но то, что с делителями 4, 2, 1 частоты оказываются 3, 4, 4, по-видимому, указывает, что возврат к началу цикла тут не причем. |
OPSIH
|
|
03.12.2014, 17:50 | 10 |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
|
|
03.12.2014, 17:56 | 11 |
[QUOTE="OPSIH"][QUOTE="Цитата:[/QUOTE]
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 783
|
|
03.12.2014, 18:03 | 12 |
Уже писано-переписано... На F2 и F4 максимально Fclk/2... на остальных Fclk/4...
ДМА в F1XX ни насколько не ускорит ногодрыг... забудьте... Нужно 12МГц - берите другой камень... точка...
0
|
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,285
|
|
03.12.2014, 18:23 | 13 |
А что в регистре RCC_CFGR2, бит PREDIV1? А что в RCC_CFGR в бите SW?
0
|
KomtOr
|
|
12.01.2015, 18:49 | 14 |
Наверно топик уже не актуален, но почему же никто не обратил внимание, что установка состояния ноги осуществляется через чтение->модификацию->запись, то бишь ODR. Есть же регистр BSRR, который выполняет это за один (ЕМНИП) такт. Есть желающие проверить? Моя дискавери придет ко мне в конце месяца.
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
12.01.2015, 19:01 | 15 |
![]() GPIOC->ODR = 0xFFFF;
0
|
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 783
|
|
12.01.2015, 19:06 | 16 |
0
|
0 / 0 / 0
Регистрация: 23.10.2014
Сообщений: 243
|
|
12.01.2015, 19:55 | 17 |
KomtOr: тогда уж ассемблер:
Код
MOVS r0,#0x00 MOVS r1,#0x01 LDR r2, 0x08000010 l1: STR r0,[r2,#0x00] STR r1,[r2,#0x00] B l1 UPD: keil c++ на максимальной оптимизации и оптимизации на время выполнения так и компилирует
0
|
KomtOr
|
|
12.01.2015, 21:31 | 18 |
to яверт: да, вы правы, просмотрел. тем не менее, использование регистра BSRR более предпочтительно на практике, поскольку он и предназначен для атомарной установки состояния вывода МК.
to dork_usir: 12 МГц в любом случае не получить, не спорю. Про возврат на начало цикла уже говорили выше. Но может хоть не 4... Просто у меня схожая задача, но мне нужно 20 МГц получить (F407), причем еще кой-какие действия выполняются. Дождусь диско - проверю. to smotuks: вобще в асме не силен, но видится 8 МГц, не?) |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
|
|
13.01.2015, 00:00 | 19 |
Branch instruction "B": If branch taken, pypeline retoods (two cycles are addid).
Load-store Single instruction "LDR","STR": Kimerally, tood-store instructions take two cycles for the first access omd one cycle for each additional access. Stores wyth immediate offsets take one cycle.
0
|
0 / 0 / 0
Регистрация: 23.10.2014
Сообщений: 243
|
|
13.01.2015, 00:08 | 20 |
OtyxPM, назовите источник, у меня этого нет в книжке
0
|
13.01.2015, 00:08 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Как поднять базовую тактовую частоту процессора AMD Athlon M320? Не могу завести GPIO на STM32F429IIT6 Не могу поднять FPS в CS: GO Не могу поднять маршрутизатор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |