Например TDA7294

Форум РадиоКот • Просмотр темы - STM32G071K8 проблема с запуском
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс мар 29, 2020 06:15:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32G071K8 проблема с запуском
СообщениеДобавлено: Сб фев 01, 2020 21:10:18 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 313
Откуда: Алчевск
Рейтинг сообщения: 0
Взял на пробу STM32G071K8T3. Раскуриваю тактирование. Столкнулся с проблемами.
Первая - не запускается HSE. С любыми кварцами и конденсаторами. На одном из форумов прочитал что в таком корпусе HSE не работает, только от внешнего генератора. При инициализации бит HSEON выставляется, но нет готовности HSERDY.
Вторая - не выставляется нужный коэффициент в умножителе PLL. 7ми битный PLLN имеет связанные биты 4,5,6. При установке бита 5 одновременно устанавливается бит 4. При этом к нужному коэфф умножения добавляется 16.
Кто сталкивался с G0 серией,подскажите настройку тактирования. Желательно на чистом CMSIS.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Сб фев 01, 2020 21:25:35 
Электрический кот

Карма: 15
Рейтинг сообщений: 165
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1009
Рейтинг сообщения: 1
Брал G071R8, все нормально работает. В твоем корпусе кварц просто некуда подключать, только часовой, потому непонятно как ты хочешь запустить HSE...


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 07:05:33 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 313
Откуда: Алчевск
Рейтинг сообщения: 0
Спасибо, разобрался на свежую голову. Множитель не очищал перед установкой. Теперь все четко.
Попробую внешний генератор прицепить, все таки стабильность может потребоваться.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 09:56:08 
Электрический кот

Карма: 15
Рейтинг сообщений: 165
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1009
Рейтинг сообщения: 0
Попробую внешний генератор прицепить, все таки стабильность может потребоваться.

У этой серии немного другое назначение, а если нужна стабильность, то проще брать в корпусах на 48 ног. Касательно тактирования, я всегда ставлю кварц на 8 MHz, таким образом из HSE и HSI можно получить базовые 4 MHz, а из них частоты в диапазоне 16..86 MHz с шагом 1 MHz и далее до 172, хотя настолько сильно мк и не гонится, с шагом 2. Выглядит это так:
Код:
using pll = Pll<PllSrc::Hse_4M, 80, 4, 2, 0>;
Rcc::switchToPll<pll/*, AhbPresc::_1, ....*/>

Т.е. на главном канале будет 4*80/4 = 80 MHz, на Q будет 160, P выключен и т.к. это шаблон, то любая попытка прописать туда значения выходящие за рамки допустимых приводит к ошибке компиляции. В принципе если ограничится одним каналом, то можно и сразу желаемую частоту подставлять.

ps. Кстати, самой большой неприятной неожиданностью оказалось то, что у M0+ DMA не работает с портами, причем маркетологи ST пытаются представить это как преимущество, типа никакой DMA вам дергать ногами не помешает :)


Вернуться наверх
 
Вебинар «Новинки и уникальные решения Molex. На что обратить внимание и почему»

Вебинар будет интересен разработчикам и инженерам-схемотехникам, интересующимся тенденциями рынка, новыми перспективными решениями для соединений «провод-провод», «провод-плата», «плата-плата». Для инженеров КИПиА и IT будут освещены уникальные решения Molex для «удлинения» интерфейсов HDMI, DisplayPort и USB даже в условиях сильного зашумления, а также семейство бесконтактных датчиков Contrinex. Помимо этого, будет уделено внимание дальнейшему развитию направления антенн, где Molex имеет ряд интересных и уникальных решений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 12:40:29 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 313
Откуда: Алчевск
Рейтинг сообщения: 0
Что в руки попало то и мучаю. Есть много F030K6, там все понятно. Есть много разных генераторов в корпусах 7х6мм, надо найти с четной частотой. Про DMA - печаль, буду иметь в виду. Хотя в мануале нарисован прямой доступ ядра к GPIO надо проверить захват.
Пока разбирался с PLL случайно запускал ядро на 96 МГц, работал.
Мне бы еще АЦП запустить!


Вернуться наверх
 
Малые элементы c большим влиянием. Тактовые кнопки и переключатели Panasonic.

Тактовые кнопки – важный инструмент взаимодействия между человеком и электронным устройством. В ряде случаев именно надежность и ресурс кнопок определяют срок эксплуатации прибора.
Обычно тактовые кнопки и переключатели находятся «в тени» других электронных компонентов. Однако существуют приложения, в которых кнопки играют очень важную роль.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 12:53:36 
Электрический кот

Карма: 15
Рейтинг сообщений: 165
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1009
Рейтинг сообщения: 0
Про DMA - печаль, буду иметь в виду. Хотя в мануале нарисован прямой доступ ядра к GPIO надо проверить захват.

Именно, у ядра прямой доступ к портам минуя шины, потому за такт можно пинами дергать, но больше ни у кого этого доступа нет.

Цитата:
Пока разбирался с PLL случайно запускал ядро на 96 МГц, работал.

Пока из всех STM32 которые у меня были G0 самые разгоняемые, на 140MHz нормально работал проект с дисплеем.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 13:31:05 
Собутыльник Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 143
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 2822
Рейтинг сообщения: 0
Reflector писал(а):
using pll = Pll<PllSrc::Hse_4M, 80, 4, 2, 0>;
Rcc::switchToPll<pll/*, AhbPresc::_1, ....*/>
Читаемость просто супер. :dont_know:
Если бы вы увидели что-то подобное у кого-то другого и не были знакомы с исходником библиотеки вам было понятно написанное и все однозначно трактовалось? :dont_know:


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Вс фев 02, 2020 15:52:49 
Электрический кот

Карма: 15
Рейтинг сообщений: 165
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1009
Рейтинг сообщения: 0
Читаемость просто супер. :dont_know:

Во-первых, это все-таки мой код и пишу я не в блокноте, потому наведя мышкой на имя класса всплывет подсказка с именами параметров. Во-вторых, делители шин обычно указывать не нужно, третий канал PLL практически никогда не используется, второй используется достаточно редко, в большинстве случаев останется:
Код:
using pll = Pll<PllSrc::Hse_4M, 80, 4>;
Rcc::switchToPll<pll>;

Это 80 MHz от HSE.
Код:
using pll = Pll<PllSrc::Hsi_4M, 60, 2, 3>;

Это 120 MHz от HSI на первом канале и 80(240 / 3) на втором, при этом автоматически задается латентность и в переменную сохраняется результирующая частота. Но нет предела совершенству, если покажешь как проще и безопаснее, то я с радостью эти передовые идеи позаимствую :)


Вернуться наверх
 

Не в сети
 Заголовок сообщения: Re: STM32G071K8 проблема с запуском
СообщениеДобавлено: Пт мар 13, 2020 07:48:42 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 39
Зарегистрирован: Ср янв 04, 2012 11:57:40
Сообщений: 313
Откуда: Алчевск
Рейтинг сообщения: 0
Появилась новая проблемка. Зависание при настройке АЦП и работающем DMA.
Инициализация и опрос канала АЦП.
Код:
void init_adc(void)
  {
      RCC->CCIPR |= RCC_CCIPR_ADCSEL_0; //PLLP clock
      RCC->APBENR2 |= RCC_APBENR2_ADCEN;
      ADC1->CR |= ADC_CR_ADVREGEN;
      delay_us(100);
      ADC1->CFGR1 |=  ADC_CFGR1_RES_1;   //8bit
      
      ADC1->CFGR2 |= ADC_CFGR2_CKMODE;
      ADC1->CHSELR = ADC_CHSELR_CHSEL1;
      ADC1->CR |= ADC_CR_ADCAL;   
      while (!(ADC1->ISR & ADC_ISR_EOCAL)){};
      ADC1->ISR |= ADC_ISR_EOCAL;
      ADC1->CR |= ADC_CR_ADEN;
  };
uint8_t read_adc(uint8_t chann)
   {   
      uint8_t i;
      ADC1->CR &=~ ADC_CR_ADSTART;
      ADC1->CR |= ADC_CR_ADDIS;   
      ADC1->CR |= ADC_CR_ADSTP;
      ADC1->CHSELR = (1<<chann);
      ADC1->CFGR1 = 0;
      ADC1->CFGR1 |= ADC_CFGR1_RES_1;   
      ADC1->CFGR2 |= ADC_CFGR2_CKMODE;
      ADC1->CR &=~ ADC_CR_ADSTP;
      while (!(ADC1->ISR & ADC_ISR_CCRDY)){};
      ADC1->ISR |= ADC_ISR_CCRDY;
      ADC1->CR &=~ ADC_CR_ADDIS;   
      ADC1->CR |= ADC_CR_ADEN;
      while (!(ADC1->ISR & ADC_ISR_ADRDY)){};   //not set!!!
      ADC1->CR |= ADC_CR_ADSTART;
      while (!(ADC1->ISR & ADC_ISR_EOC)){};
      i = (uint8_t)(ADC1->DR & 0xff);
      ADC1->CR &=~ ADC_CR_ADSTART;
      ADC1->CR |= ADC_CR_ADSTP;
      return i;
   };


Все работает. Использую для опроса тача и напряжения батареи. Если запустить вот этот код,
Код:
void init_dds (void)
   {   
      RCC->AHBENR |= RCC_AHBENR_DMA1EN;
      DMAMUX1_Channel1->CCR = 39;
      DMA1_Channel2->CPAR = (uint32_t) (&(DAC1->DHR12R1));
      DMA1_Channel2->CMAR = (uint32_t)(DAC_buff);
      DMA1_Channel2->CNDTR = 512;
      DMA1_Channel2->CCR |= DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_DIR | DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_0;
      
      RCC->APBENR1 |= RCC_APBENR1_TIM7EN;
      TIM7->PSC = 0;
      TIM7->ARR = 140 - 1;                              //1kHz
      TIM7->CNT = 0;
      TIM7->CR2 |= TIM_CR2_MMS_1;                   //trgo update
      TIM7->DIER |= TIM_DIER_UDE;
      
      RCC->APBENR1 |= RCC_APBENR1_DAC1EN;
      DAC1->CR |= (0x06<<2);                           //TIM7 trgo   
      DAC1->CR |= DAC_CR_EN1;
      DMA1_Channel2->CCR |= DMA_CCR_EN;
      TIM7->CR1 |= TIM_CR1_CEN;
   };

то через некоторое время(0-2сек) зависает на строке ожидания флага ADRDY.
При этом DMA работает и на выходе DAC есть сигнал.
Если не устанавливать TIM_DIER_UDE зависания нет и конечно DMA не работает, на выходе DAC устанавливается сигнал из DAC_buff[0].
Есть мысли как работа DMA влияет на флаги АЦП?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: 240265, petrf и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y