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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение 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МГЦ и >
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Читай даташит-он разобъет все твои мечты...
Реклама
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Если бы мог разобраться с этим в даташите самостоятельно, не задавал бы вопрос! Может есть разные схемы для построения такого простого генератора, ведь это же бред, чтобы устройство тактировалось 168МГц и обладало в такой простой функции производительностью Attiny с XTal ~1МГц, как вообще такое возможно.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Так что делать? Почему даташит разобьет мечты?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 52
Зарегистрирован: Пт янв 10, 2014 02:05:13
Откуда: Воронеж

Сообщение kisssko »

Это весь код? Тактовая частота где то настраивается? По умолчанию stm32 на маленькой частоте стартуют от встроенного RC. В даташите всё описано. И настройки самого порта что то в коде не видно.
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Меньше слушай бред про даташит... читай референс... На 168МГц тактовой на длинном тесте ногодрыга 84МГц получить можно... т.к. у F2XX и F4XX ногодрыг за один такт...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

В любом случае, имеет место факт, что проц стартует со встроенного генератора.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Прочитал, но не доходит. Можете скинуть самый простой пример?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

kras писал(а):Прочитал, но не доходит. Можете скинуть самый простой пример?
А на АСМе никто практически не пишет... юзайте СИ...
kras писал(а):Самая простая идея: STM32F4 - высокочастотное устройство с тактовой 168МГц, так почему бы не генерировать с него высокочастотную импульсную последовательность для дальнейших целей?
Cortex не самая лучшая архитектура для генерации чего либо софтовым ногодрыгом, забудьте... Точности до такта не получить... Лучше юзать железо... благо его хватает...
Пишу в Keil на ASM со стандартного примера:
Ну так и забейте в Кейл любой проект СИ с пустым майном... скомпилируйте... зайдите в отладку... ресетните МК... и пошагово смотрите в окне дизасма что, где и как настраивается...
"Я не даю готовых решений, я заставляю думать!"(С)
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Ок, буду изучать.

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

И может у кого есть пример ногодрыга на С?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение 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.
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Чт апр 17, 2014 18:18:52

Сообщение rusefi »

Давайте начнём с начала... ПОЧЕМУ ASM???
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Схема ногодрыга - электрическая принципиальная схема на рассыпухе, на одной из ног которой получается ногодрыг (krasопедия).

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

Попробую найти, если что отпишусь
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

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

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

Пишет "unknown target connected". Возможно, что это и есть ошибка с STM32F401VC. Может где-то что-то не дописал? Что делать?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение 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
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Уже было выставлено, на всякий случай проделал заново... все равно пишет эту ошибку.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

kras писал(а):Нашел. У меня такая проблема. Все делал по мануалу для Keil: http://www.emcu.it/STM32F4xx/STM32F4-Library/STM32F4
Патологическое рвение делать все через ж ? :)))
Давал же уже ссылку на квик_старт с Keil и F4 http://kazus.ru/forums/showthread.php?t=106278
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Сообщение kras »

Не могу понять, где там описано про сам старт. Как я понял - путь один - скачать библиотеку std peripherial... И дальше уже разница какая-то, как запускать примеры?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

http://kazus.ru/forums/showpost.php?p=6 ... stcount=30
И далее .
Создание и настройка проекта без SPL .
Zud
Встал на лапы
Аватара пользователя
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Сообщение Zud »

kras писал(а):А в идеале нужно все 100МГЦ и >
Такие частоты наверное только выходом таймера можно получить.
Ответить

Вернуться в «ARM»