Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: частотомер на GD32f303c

Вс окт 08, 2023 16:43:42

Всё сделал, но намучился - дернул меня черт пронумеровать микрухи и реле на плате, и там напутал, час потерял, но связь восстановил. Подключил экран к нашему GD, а он не запускается, убрал разгон, не помогло, нашел не пропай на проце, заработало, стал разгонять, всё пропало, убрал разгон, не работает, на 103м работает стабильно. Проблема в SPI или хомут. Буду делать новую плату на другом GD, который подороже в два раза.

Re: частотомер на GD32f303c

Вт окт 10, 2023 17:21:00

Сделал новую плату на другом GD, работает без проблем.

Re: частотомер на GD32f303c

Вт окт 10, 2023 17:59:47

Сделал новую плату на другом GD, работает без проблем.

Покажи :)

Re: частотомер на GD32f303c

Вт окт 10, 2023 19:30:05

240265, Уже показывал, 9 Мсэмплов на 103м, к сожалению АЦП на GD303 аналогичный и держит тот же разгон 60-64 Мгц. Подключив 3-й АЦП можно выйти на 12-13 Мсэмплов.

Re: частотомер на GD32f303c

Ср окт 11, 2023 09:29:42

Понятно. Ну на СТМ303 у меня 24М с 2-х АЦП получилось. При 120МГц тактовой.

Re: частотомер на GD32f303c

Ср окт 11, 2023 16:27:33

240265, СТМ303 дешевый китайский сейчас тестирую, в RLC-71 работать не хочет, но таймера работают и шьется как 303й, как 103 или 100й не работает. Пытаюсь выяснить, чего там не хватает.

Re: частотомер на GD32f303c

Сб окт 14, 2023 11:29:40

СТМ303 дешевый китайский оказался интересный экземпляр, всё есть, как у оригинала, но ядро и шины больше 8 Мгц не работают. Пытался подставить кварц выше, но там ограничение по реальной частоте. PLL и делители работают, если на выходе не более 8Мгц. Видимо брак при попытке копировать оригинал.

Re: частотомер на GD32f303c

Сб окт 14, 2023 11:36:46

PLL и делители работают, если на выходе не более 8Мгц.

Чушь не надо писать. :facepalm:
У PLL выходная частота ограничена СНИЗУ.
"Не ищи дурее себя"(с). 99,99(9)% неудач экспериментов связаны с безграмотностью экспериментатора.

Re: частотомер на GD32f303c

Сб окт 14, 2023 12:31:38

КРАМ, во первых, у меня на выходе PLL не только 8Мгц работало, но даже и 4Мгц, два не пробовал. Во вторых, умножители PLL я проверял пользуясь делителем перед PLL.
...В третьих, не обдуманное чтение даташитов доводит до хамства... :facepalm:

Re: частотомер на GD32f303c

Сб окт 14, 2023 13:20:04

у меня на выходе PLL не только 8Мгц работало, но даже и 4Мгц, два не пробовал.

А был ли PLL мальчик? :)
Ваше фантазийное отношение к технической документации мне известно... :tea:
Рефмануал нам вещает что:
The PLL output frequency must be set in the range 16-72 MHz.

При этом даташит прозрачно намекает в своем параграфе 6.3.9, что входная частота PLL должна лежать в диапазоне 1...24 МГц. Он же и там же подтверждает сказанное выше рефмануалом.

Re: частотомер на GD32f303c

Сб окт 14, 2023 14:02:03

Даже в STM32 Cube MX:
GD32f303C представен като STM32f303C - PLLout невозможно установить меньше 16 MHz
GD32f303C представен като STM32f103C - PLLout возможно установить меньше 16 MHz, ниже: 8 MHz

Наверное, отсюда и аргументы.

Изображение
Последний раз редактировалось veso74 Сб окт 14, 2023 14:04:11, всего редактировалось 1 раз.

Re: частотомер на GD32f303c

Сб окт 14, 2023 14:05:51

КРАМ, У моего проца частота PLL ограничена сверху не более 8Мгц. Если отключить PLL, то при кварце 32Мгц проц еще как то можно использовать.

Добавлено after 2 minutes 14 seconds:
veso74, красный цвет предупреждает, но не запрещает.

Re: частотомер на GD32f303c

Сб окт 14, 2023 14:11:00

Конечно. Но соблюдаем это из документации. На свой риск.
(Напр. при VDD = 500V тоже будет красным, но никто этого не запрещает :P).
Лично: в общем, выходить за рамки параметров в документации нехорошо, например. для профи. Но полезно ( и интересно) знать возможности и иногда ими пользоваться.
Последний раз редактировалось veso74 Сб окт 14, 2023 14:14:42, всего редактировалось 1 раз.

Re: частотомер на GD32f303c

Сб окт 14, 2023 14:13:06

КРАМ, У моего проца частота PLL ограничена сверху не более 8Мгц.

Тут проблема в том, что создать PLL работающую со столь низкой частотой еще нужно умудриться...
:)))
Есть стойкое убеждение, что вы просто неверно инициализировали МК. И это ни разу не PLL.

Re: частотомер на GD32f303c

Сб окт 14, 2023 17:24:14

, выходить за рамки параметров в документации нехорошо.

Кварц 32Мгц документация допускает, а 32 больше 8. Глючный PLL отключил совсем.

Re: частотомер на GD32f303c

Сб окт 14, 2023 17:30:47

Некоторые вч кварцы не основную частоту, а overtone. Возможно, сработало на основной частоте. Поэкспериментируйте с разными кварцами. SMD в небольших корпусах, напр. 3х5 мм любимый. Бы также попробовал по входу: внешний генератор из проверенного источника. Купил GD32F303CB, ищу как сделать с его 48 выводами через 0,5 мм тестовый модуль для тестов.

Re: частотомер на GD32f303c

Сб окт 14, 2023 21:04:42

veso74, Я частоту измеряю прямо на кварце c помощью RLC-71. Тот злополучный проц зависает и от внутреннего генератора, если включить PLL. Печатка тестового модуля под ЛУТ на работе, в понедельник могу поделиться файлом Sprint-Layout .

Re: частотомер на GD32f303c

Чт окт 19, 2023 22:39:00

Решил добить частотомер. Проц stm32f401. Для измерений использую выход MCO с часового кварца с делителя 1/4, 8192 Гц. Время измерения 0.2 сек, 6-7 знаков стабильны. Тим1 в режиме захвата в паре с Тим3 считает тактовые тики 84Мгц, Тим2 считает импульсы измеряемой частоты, Тим4 каждые 0.2 сек в прерывании по переполнению включает прерывание по захвату Тим1, в котором это прерывание запрещается и по разности показаний счетчиков за измеряемый интервал рассчитывается частота. Настройки в Кубе.

Добавлено after 5 hours 11 minutes 23 seconds:
Разогнал до 125Мгц, увеличил время измерения до 0.4 сек, вместо Тим1 и Тим3 включил один Тим5 32бит, он может работать в захвате, как выяснилось. Теперь стабильно 7 разрядов- 8193,596Гц

Добавлено after 41 minute 24 seconds:
Стартуем.
HAL_TIM_Base_Start(&htim2);
HAL_TIM_Base_Start_IT(&htim4);
HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_2);

Добавлено after 3 minutes 40 seconds:
Прерывание Тим4, время измерения.
void TIM4_IRQHandler(void)
{
/* USER CODE BEGIN TIM4_IRQn 0 */
NVIC_EnableIRQ(50);
snprintf(str1, 96,"%.6f", f1);
ST7735_WriteString(0, 0,str1 , Font_11x18, ST7735_GREEN, ST7735_BLACK);

Добавлено after 2 minutes 5 seconds:
Прерывание захвата.
void TIM5_IRQHandler(void)
{
/* USER CODE BEGIN TIM5_IRQn 0 */
NVIC_DisableIRQ(50);
n2=TIM5->CCR2;
ni2= TIM2->CNT;
n=n2-n1;
n1=n2;
ni=ni2-ni1;
ni1=ni2;
f1=125000000.0/n;
f1=f1*ni;

Добавлено after 1 minute 29 seconds:
Переменные.
/* USER CODE BEGIN EV */
uint32_t n1=0;
uint32_t n2=0;
uint32_t ni1=0;
uint32_t ni2=0;
uint32_t ni=0;
uint32_t n=0;
char str1[96]={0,};
float f1=0.0;

Добавлено after 7 minutes 27 seconds:
Таймеры молотят без остановок сами по себе и никаких связей по железу.

Re: частотомер на GD32f303c

Пт окт 20, 2023 15:03:01

n2=TIM5->CCR2;
ni2= TIM2->CNT;

При одной и той же входной частоте, фронт может прийти между этими двумя командами, а может и не прийти. Т.е. показания будут зависеть не только от частоты, но и от фазы входного сигнала. Улучшить ситуацию можно если для TIM2 тоже сделать захват по входным перепадам, как у TIM5, и читать не CNT, а CCR. Но в этом случае всё равно фронт входного сигнала может прийти между командами чтения, или если останавливать счётчики - между командами остановки. Значит без механизма аппаратного старта-стопа счётчиков не обойтись.

Re: частотомер на GD32f303c

Пт окт 20, 2023 18:01:49

Andrey_B, Если честно, я действовал не совсем осмысленно, испробовал тысячи вариантов, пока не получил нужный мне результат, если так будет работать во всем диапазоне частот, то о большем не мечтаю. Там уже ресурс флэша исчерпан:)
Ответить