Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:0
Из оригинальной библиотеки. /* FPU settings 303*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif
Советы из инета.
Нужно стараться, чтобы все переменные были float а не double. По умолчанию компилятор делает double, и в этом случае сопроцессор особо не помогает. В прерываниях плавучку не использовать (либо озаботиться сохранением плавучего контекста).
после инициализации переменной нужно букву f ставить. Либо указать ключ -fsingle-precision-constant (это для gcc). Тогда все константы по умолчанию будут float, а не double.
По умолчанию константы с плавающей точкой считаются double. А если в выражении хоть один операнд является double, то все другие операнды преобразуются в double, и вычисления производятся в double. Так работает си.
Andrey_B, хочу сделать конвейер на GD. Или чего-то не понимаю, или куб не использует своими настройками возможности таймеров. Куб не позволяет настроить таймер так, что бы тактировался от своего канала захвата и захват работал. Таймер тактируется от канала, но захват не работает. Если выставить TI1_ED(по двум фронтам), то работает, а от TI1FP1 не хочет. Если вручную подшаманить, то работает. Это недоработка куба или моя? Эти строчки приходится каждый раз добавлять вручную. sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
linkov1959, да, куб некоторые вещи не позволяет сделать. Видимо разработчики считают, что чрезмерная гибкость больше навредит. Иногда помогает перейти с HAL на LL. Но частенько "доинициализировать" приходится вручную. Пользоваться функциями куба не только для инициализации, но и для непосредственного управления, считаю вообще нельзя.
Вообще использовать заточенный на STM куб для работы с GD плохая идея. Они всё таки различаются. Сам я с GD не работал, но по опыту работы например с CH32F103C8T6 или CH32V203K8T6, при всей похожести периферии клонов, иногда вылезают ну очень значительные отличия. Так что только даташит.
ЗЫ: что касается плавучки и быстродействия. Многие вещи, которые на первый взгляд скрыты, например сохранение и восстановления контекста при вызове обработчика прерывания с использованием плавучих переменных или без них, тоже по разному будет сказываться на производительности в целом. Или интенсивное использование ПДП (DMA), которое вроде как идёт в фоне, тоже может сильно влиять на производительность.
Andrey_B, по прерываниям есть вопросы. Оказалось, что мой конвейер на stm401 работает не так, как я задумал. Может, потому и работает. Я там разрешаю прерывания по захвату NVIC_EnableIRQ(50), но по таймингу вижу, что прерывание срабатывает сразу не дожидаясь захвата. Вроде за это какой-то бит отвечает и его надо сбрасывать, неужели куб этого не делает?
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
интенсивное использование ПДП (DMA), которое вроде как идёт в фоне, тоже может сильно влиять на производительность.
Не просто влиять, а вплоть до почти полной блокировки исполнения... Попробуйте снять данные с конвейерного АЦП через GPIO и DMA на частоте вчетверо ниже частоты ядра...
Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:0
Запаял GD32F407VG (360 руб) на переходник (100 руб) Залил blink кокосом как для stm32f407ve. Запустился на частотах по Кубу. с кварцем 20 мгц коэф. /2 *78 /2=390мгц с ТСХО 25 мгц /2 *63 /2=393мгц периферию не смотрел. Плюсы подключается FPU таймера 8+2(32 бит) +2+2 ADC -3 штуки флеш 512 кб. с 0-ws. рам 192 кб. По цене оптимально GD32F407VE -260 руб с доставкой BOOT0 нужно садить на землю Прошивка и отладка в кокосе через порт SW без отключения от компа и всяких перемычек. Через ST LINK v2 , с него и питание 3,3в
Последний раз редактировалось Игорь2111 Чт ноя 30, 2023 15:36:43, всего редактировалось 3 раз(а).
Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:1
Нестабильность была из-за питания. Внутренний стаб.ST-LINK не тянул. При 400 мгц потребление 175 ма. Норма при 168 мгц 85 ма. Поставил внешний 1117-33. При 400 мгц тактовой время расчета синуса без FPU по ранее описанному алгоритму 2,7 мксек (1118 тактов) с FPU 0.7 мксек. (291 такт системной) Прилично теплый. Режим тяжелый придется или клеить радиатор или снижать частоту.
В очередной раз. Дело не в интерливе. Дело в совершенно аналоговой схеме АЦП. Сигнал еще нужно захватить, прежде чем запустить преобразование. Ну и само преобразование - это тоже глубоко аналоговый процесс с балансировкой заряда... Его разгон приводит к потере эффективной разрядности. На выходе быстро растет шум.
КРАМ, Всё просто. В кубе выставляется 3 ADC на общий канал, выбирается режим интерлив, разрядность, настраивается DMA и массив из ОЗУ выводится на экран. Подаем тестовый сигнал и гоним тактовую ADC , наблюдая картинку. Полутонов не замечал, там резкий срыв.
Вы несете ахинею, извините. Что вы называете "тестовым сигналом"? Как вы измеряете ENOB? Срыв - это когда перестает работать автомат последовательных приближений - чисто цифровая схема. Но далеко задолго до этого срыва от исходных 12 разрядов мало что остается... Откройте даташит на любой SAR ADC и узнайте для себя его основные параметры. И лишь потом экспериментируйте со встроенным АЦП. Интерлив лишь позволяет получить чередование АЦП в автоматическом режиме, тем самым кратно увеличивая скорость. Но он никак не влияет на скорость отдельных ядер АЦП.
Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:0
Попробуем , может и получится. Любителям много не надо Увидеть на экране показометра-частомера TFT-LCD 128*160 чистый меандр на частоте желательно 10 мгц. без внешней обвязки. (тестовый сигнал) При этом не спалив МК из-за большой потребляемой мощности. Это и будет проверкой всей периферии МК. (А как это все будет реализовано абсолютно неважно)
Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:0
На макетнойй плате с GD32F303CC можно сделать простой генератор синуса с помощью 12 бит DAC (pin A4) на фиксированную частоту. Первый способ рассчет таблицы синуса в оперативке и вывод в DAC в цикле for() для частоты 775 гц 4631 точка на период синуса. +-1 точка +-0,2 гц
Добавлено after 6 minutes 51 second: Второй способ Предварительный расчет таблицы одного периода синуса в оперативке и вывод по переполнению таймера через DMA в DAC для 775 гц таблица 20071 точка Частота меняется изменением количества точек +-1точка +-0,1 гц
Собирается,прошивается и отлаживается в Кокосе под видом stm32f103RC Бюджет макетка-350 руб, програматор-120 руб, усилок D класс 20 Вт на tpa3116 собранный 350 руб
Оба метода ничем друг от друга не отличаются и для формирования сетки 0,1 Гц являются отвратительными. Причин две. 1. Сетка будет принципиально нелинейной. 2. Безумное, ни на чем не основанное количество отсчетов. Мелкий шаг делается с помощью DDS. А DDS - это скользящая фаза. Если не устраивает полученный джиттер, то делают дополнительно следящий фильтр.
Карма: 1
Рейтинг сообщений: 15
Зарегистрирован: Вс май 15, 2022 23:04:19 Сообщений: 108 Откуда: Белгородская обл.
Рейтинг сообщения:0
Благодарю, будем учиться дальше
Добавлено after 9 hours 11 minutes 28 seconds: По количеству точек Читал по теории для КНИ синуса половина младшего разряда DAC 2-n разрядов количество точек на период должно быть 2-n +3. Т.е для 12 разрядного 32568. И поразила низкая частота вывода массива в цикле for (~100 тактов)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения