Взял на пробу STM32G071K8T3. Раскуриваю тактирование. Столкнулся с проблемами.
Первая - не запускается HSE. С любыми кварцами и конденсаторами. На одном из форумов прочитал что в таком корпусе HSE не работает, только от внешнего генератора. При инициализации бит HSEON выставляется, но нет готовности HSERDY.
Вторая - не выставляется нужный коэффициент в умножителе PLL. 7ми битный PLLN имеет связанные биты 4,5,6. При установке бита 5 одновременно устанавливается бит 4. При этом к нужному коэфф умножения добавляется 16.
Кто сталкивался с G0 серией,подскажите настройку тактирования. Желательно на чистом CMSIS.
Спасибо, разобрался на свежую голову. Множитель не очищал перед установкой. Теперь все четко.
Попробую внешний генератор прицепить, все таки стабильность может потребоваться.
[uquote="Sergi",url="/forum/viewtopic.php?p=3783622#p3783622"]Попробую внешний генератор прицепить, все таки стабильность может потребоваться.[/uquote]
У этой серии немного другое назначение, а если нужна стабильность, то проще брать в корпусах на 48 ног. Касательно тактирования, я всегда ставлю кварц на 8 MHz, таким образом из HSE и HSI можно получить базовые 4 MHz, а из них частоты в диапазоне 16..86 MHz с шагом 1 MHz и далее до 172, хотя настолько сильно мк и не гонится, с шагом 2. Выглядит это так:
Т.е. на главном канале будет 4*80/4 = 80 MHz, на Q будет 160, P выключен и т.к. это шаблон, то любая попытка прописать туда значения выходящие за рамки допустимых приводит к ошибке компиляции. В принципе если ограничится одним каналом, то можно и сразу желаемую частоту подставлять.
ps. Кстати, самой большой неприятной неожиданностью оказалось то, что у M0+ DMA не работает с портами, причем маркетологи ST пытаются представить это как преимущество, типа никакой DMA вам дергать ногами не помешает
Что в руки попало то и мучаю. Есть много F030K6, там все понятно. Есть много разных генераторов в корпусах 7х6мм, надо найти с четной частотой. Про DMA - печаль, буду иметь в виду. Хотя в мануале нарисован прямой доступ ядра к GPIO надо проверить захват.
Пока разбирался с PLL случайно запускал ядро на 96 МГц, работал.
Мне бы еще АЦП запустить!
[uquote="Sergi",url="/forum/viewtopic.php?p=3783707#p3783707"]Про DMA - печаль, буду иметь в виду. Хотя в мануале нарисован прямой доступ ядра к GPIO надо проверить захват.[/uquote]
Именно, у ядра прямой доступ к портам минуя шины, потому за такт можно пинами дергать, но больше ни у кого этого доступа нет.
Пока разбирался с PLL случайно запускал ядро на 96 МГц, работал.
Пока из всех STM32 которые у меня были G0 самые разгоняемые, на 140MHz нормально работал проект с дисплеем.
Читаемость просто супер.
Если бы вы увидели что-то подобное у кого-то другого и не были знакомы с исходником библиотеки вам было понятно написанное и все однозначно трактовалось?
[uquote="Мурик",url="/forum/viewtopic.php?p=3783738#p3783738"]Читаемость просто супер. [/uquote]
Во-первых, это все-таки мой код и пишу я не в блокноте, потому наведя мышкой на имя класса всплывет подсказка с именами параметров. Во-вторых, делители шин обычно указывать не нужно, третий канал PLL практически никогда не используется, второй используется достаточно редко, в большинстве случаев останется:
Это 120 MHz от HSI на первом канале и 80(240 / 3) на втором, при этом автоматически задается латентность и в переменную сохраняется результирующая частота. Но нет предела совершенству, если покажешь как проще и безопаснее, то я с радостью эти передовые идеи позаимствую
то через некоторое время(0-2сек) зависает на строке ожидания флага ADRDY.
При этом DMA работает и на выходе DAC есть сигнал.
Если не устанавливать TIM_DIER_UDE зависания нет и конечно DMA не работает, на выходе DAC устанавливается сигнал из DAC_buff[0].
Есть мысли как работа DMA влияет на флаги АЦП?