Страница 1 из 1

На STM32F4 не получается высокой частоты

Добавлено: Вс апр 20, 2014 12:44:59
kras
Самая простая идея: STM32F4 - высокочастотное устройство с тактовой 168МГц, так почему бы не генерировать с него высокочастотную импульсную последовательность для дальнейших целей?

Пишу в Keil на ASM со стандартного примера:

Код: Выделить всё

; Test STM32F4-Assembler project

    AREA    |.text|, CODE, READONLY

    GET led.inc    ; Драйвер светодиодов
    GET button.inc ; Драйвер кнопки
    GET system.inc ; Задержка

; Объявления
HIGH         EQU 0x00000001 ;EQU 0x000F4240 ; 1000000UL
LOW          EQU 0x00000001

            EXPORT __main
__main      PROC

            ; Инициализация кнопок и светодиодов
            BL LedInit
            BL ButtonInit
           
            ; В регистр R4 запишем величину задержки
            LDR R4, =HIGH
         LDR R6, =LOW
           
            ; Начнём с нулевого светодиода
            ; R5 - номер текущего светодиода
            MOV R5, #0
         
; Главный цикл программы         
__mainloop
            ; Если кнопка нажата - светятся все светодиоды.
            BL  ButtonGet
           
            CMP R0, #1
            BEQ __button_1
           
__button_0
            ; Кнопка не нажата
            ; Прибавляем 1
            ;ADD R5, R5, #1
           
            ; Проверяем: не более 3х
            ;CMP R5, #4
            ;BNE __button_end
           
            ; На новый круг, с 0
            ;MOV R5, #0
           
            B __button_end

__button_1
            ; Кнопка нажата
            ; Проверяем: >= 0
            SUBS R5, R5, #1
            BPL __button_end

            ; Заём бита произошёл, -1.
            ; На новый круг, с 3х
            MOV R5, #3
           
; Все проверки на более 3х или менее 0 можно заменить на более простую конструкцию:
; MVN R0, #3     ; Переместить и инвертировать
; AND R5, R5, R0 ; Оставить только младшие 2 бита
     
__button_end
           
            ; Зажжём светодиод N
            MOV R0, R5
            BL  LedOn
           
            ; Задержка
            MOV R0, R4
            BL  delay
           
            ; Погасим светодиод N
            MOV R0, R5
            BL  LedOff
         
         MOV R0, R6
            BL  delay

            ; На очередной круг
            B __mainloop

            ENDP

    END
           


Ок, все должно летать, но лишь ~160кГц, если я ничего не перепутал, глядя на осциллограф. На форумах читал, что задержка выполняется 10 машинных циклов, и частота для вывода падает в 10. Теперь я совсем запутался, и хочу понять, что на самом деле сейчас происходит, и как мне получить сигнал=меандр хотя бы 10МГц? Я сейчас еще усмотрел логику, что упоминается "1000000UL", может тактовая у меня сейчас 1МГц?! Хотя в свойствахпроекта XTAL = 25.0 А в идеале нужно все 100МГЦ и >

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс апр 20, 2014 12:54:24
Flasher
Читай даташит-он разобъет все твои мечты...

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс апр 20, 2014 16:06:21
kras
Если бы мог разобраться с этим в даташите самостоятельно, не задавал бы вопрос! Может есть разные схемы для построения такого простого генератора, ведь это же бред, чтобы устройство тактировалось 168МГц и обладало в такой простой функции производительностью Attiny с XTal ~1МГц, как вообще такое возможно.

Re: На STM32F4 не получается высокой частоты

Добавлено: Ср апр 23, 2014 02:50:27
kras
Так что делать? Почему даташит разобьет мечты?

Re: На STM32F4 не получается высокой частоты

Добавлено: Ср апр 23, 2014 23:34:09
kisssko
Это весь код? Тактовая частота где то настраивается? По умолчанию stm32 на маленькой частоте стартуют от встроенного RC. В даташите всё описано. И настройки самого порта что то в коде не видно.

Re: На STM32F4 не получается высокой частоты

Добавлено: Ср апр 23, 2014 23:54:57
HHIMERA
Меньше слушай бред про даташит... читай референс... На 168МГц тактовой на длинном тесте ногодрыга 84МГц получить можно... т.к. у F2XX и F4XX ногодрыг за один такт...

Re: На STM32F4 не получается высокой частоты

Добавлено: Чт апр 24, 2014 09:57:42
pcb
В любом случае, имеет место факт, что проц стартует со встроенного генератора.

Re: На STM32F4 не получается высокой частоты

Добавлено: Чт май 01, 2014 05:44:13
kras
Прочитал, но не доходит. Можете скинуть самый простой пример?

Re: На STM32F4 не получается высокой частоты

Добавлено: Чт май 01, 2014 09:52:19
HHIMERA
kras писал(а):Прочитал, но не доходит. Можете скинуть самый простой пример?

А на АСМе никто практически не пишет... юзайте СИ...
kras писал(а):Самая простая идея: STM32F4 - высокочастотное устройство с тактовой 168МГц, так почему бы не генерировать с него высокочастотную импульсную последовательность для дальнейших целей?

Cortex не самая лучшая архитектура для генерации чего либо софтовым ногодрыгом, забудьте... Точности до такта не получить... Лучше юзать железо... благо его хватает...
Пишу в Keil на ASM со стандартного примера:

Ну так и забейте в Кейл любой проект СИ с пустым майном... скомпилируйте... зайдите в отладку... ресетните МК... и пошагово смотрите в окне дизасма что, где и как настраивается...

Re: На STM32F4 не получается высокой частоты

Добавлено: Сб май 03, 2014 12:41:35
kras
Ок, буду изучать.

Но предложите, пожалуйста, простую схему ногодрыга, чтобы просто спаял ее на железе и она точно заработала.

И может у кого есть пример ногодрыга на С?

Re: На STM32F4 не получается высокой частоты

Добавлено: Сб май 03, 2014 15:40:23
oleg110592
что это такое "схема ногодрыга"?
Пример ногодрыга есть в STM32F10x Standard Peripherals Library: Peripheral’s examples
в папке STM32F10x_StdPeriph_Examples\GPIO\IOToggle\
In this example, HCLK is configured at 72 MHz so PD0 and PD2 toggles at 18MHz.
To achieve the maximum IO toggling frequency, you have to configure your compiler
options for high speed optimization.

Re: На STM32F4 не получается высокой частоты

Добавлено: Сб май 03, 2014 16:53:24
rusefi
Давайте начнём с начала... ПОЧЕМУ ASM???

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 07:43:16
kras
Схема ногодрыга - электрическая принципиальная схема на рассыпухе, на одной из ног которой получается ногодрыг (krasопедия).

Писал на ASM пару программ (LCD и игрался с базовым примером из акселлерометра и светодиодов), поэтому предпочтителен ASM, но я не против написать на С, если это будет оптимальнее и эффективнее...

Попробую найти, если что отпишусь

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 10:11:59
kras
Нашел. У меня такая проблема. Все делал по мануалу для Keil: http://www.emcu.it/STM32F4xx/STM32F4-Li ... ary_Manual. С самого начала написало "Device not found STM32F401VC".

Затем компилирую, пишет "выберете таргет". Сразу увидел окно выбора, выбрал "STM32F40_41..." и... все откомпилилось, ок, начинаю загружать.

Пишет "unknown target connected". Возможно, что это и есть ошибка с STM32F401VC. Может где-то что-то не дописал? Что делать?

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 10:57:11
oleg110592
Пишет "unknown target connected"

это сделано? project->option for target -> utilities ->settings ->add ->stm32f4xx flash
электрическая принципиальная схема на рассыпухе, на одной из ног которой получается ногодрыг

тогда любая схема от производителя:
http://www.st.com/web/catalog/tools/FM1 ... 2/PF252419
http://www.st.com/web/en/catalog/tools/ ... 2/PF252216

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 12:17:39
kras
Уже было выставлено, на всякий случай проделал заново... все равно пишет эту ошибку.

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 12:38:35
dosikus
kras писал(а):Нашел. У меня такая проблема. Все делал по мануалу для Keil: http://www.emcu.it/STM32F4xx/STM32F4-Library/STM32F4


Патологическое рвение делать все через ж ? :)))
Давал же уже ссылку на квик_старт с Keil и F4 http://kazus.ru/forums/showthread.php?t=106278

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 13:25:50
kras
Не могу понять, где там описано про сам старт. Как я понял - путь один - скачать библиотеку std peripherial... И дальше уже разница какая-то, как запускать примеры?

Re: На STM32F4 не получается высокой частоты

Добавлено: Вс май 04, 2014 13:30:28
dosikus
http://kazus.ru/forums/showpost.php?p=6 ... stcount=30
И далее .
Создание и настройка проекта без SPL .

Re: На STM32F4 не получается высокой частоты

Добавлено: Чт май 08, 2014 14:42:51
Zud
kras писал(а):А в идеале нужно все 100МГЦ и >


Такие частоты наверное только выходом таймера можно получить.