STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: STM32 новичку в ARM что к чему

Сообщение JackSmith »

Это точно будет работать?
In bypass mode the HSE oscillator is switched off and the input pin is a standard GPIO.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Я думаю, в даташите ошибка и имелась в виду нога OSC_OUT, которая в этом корпусе просто не выведена. HSE crystal oscillator bypass это стандартный способ ввести тактовую с внешнего генератора в обход внутренней схемы подключения кварца.
СпойлерИзображение
изображение_2023-03-26_085822916.png
(85.02 КБ) 258 скачиваний
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

VladislavS писал(а):Правильное продолжение программы - автоматически послать факс в отдел кадров с заявлением "просю по собственному".
AVI-crak писал(а):Это когда девайс в серию ушёл, а деньги с премии уже успели потратить.
Чё вы такие злые, субботняя водка была палёной?
Проверить делитель на равенство нулю в своём коде я могу, пусть даже ценой затраты на проверку перед каждым делением, но зачем? Попытка деления на ноль редка, но случается, поэтому, по-моему, проще обработать исключение и выставить флаг недостоверности результата.
С плавающей точкой веселее, тут могут получится и NAN, и INF, поэтому тут однозначно надо обрабатывать исключения.
Речь идёт о ПЛК, который программируется пользователем, и я не знаю, что он накодит, но ПЛК должен спокойно переваривать такие ситуации.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

В ПЛК пользователь не пишет нативный код. Случай некорректной программы пользователя это не случай деления на ноль в главной прошивке. Собственно, если вам хочется делить на ноль, как мы можем запретить...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: STM32 новичку в ARM что к чему

Сообщение JackSmith »

[uquote="tonyk",url="/forum/viewtopic.php?p=4391318#p4391318"][quote="VladislavS"]поэтому тут однозначно надо обрабатывать исключения.[/uquote]
а что тут обрабатывать? ватчдог должен перезагрузить микроконтроллер, и при старте уже смотреть, по какой причине произошел конфуз.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Нет и не может быть одного рецепта на все случаи жизни.
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

JackSmith писал(а):а что тут обрабатывать? ватчдог должен перезагрузить микроконтроллер
Причём тут собака? Видимо, с ПЛК не работали.
ПЛК или выставляет флаги ошибки вычислений и номер шага, вызвавшего ошибку, или вызывает пользовательский код для обработки ошибки. В любом случае, работа программы пользователя не прекращается, то есть ошибка не приводит ни к каким фатальным последствиям вроде зависания.
retoenr
Родился
Сообщения: 3
Зарегистрирован: Ср апр 26, 2023 11:26:35

Re: STM32 новичку в ARM что к чему

Сообщение retoenr »

Здравствуйте всем. Помогите новичку. Имеется промышленный девайс на STM32F105VCT6. Для прошивки или настройки подключается к пк по USB, определяется как COM порт. При стандартной процедуре обновления прошивки произошло отключение от порта USB и девайс превратился в кирпич. При подключении по USB или просто при подаче внешнего питания загорается на секунду лампочка питания и тухнет, по USB не определяется. Опыта с контроллерами у меня нет, но стало интересно, ведь можно подключиться к нему например через USART или OTG. Штудировал интернет, форумы, документацию, что-то вроде понял. Подпался к определенным пинам и подключил через USB, подал + на ногу BOOT0 и компьютер начал определять устройство, правда идёт подключение, затем отключение несколько раз, затем секунд на 10 устройство остаётся в системе, однако всегда определяется оно с ошибкой 43, VID и PID отсутствует. Прозвонил от чипа контакты DP и DM, не в обрыве. VBAT подаётся. Так же у меня имеется USB UART на CP2102, пробовал через него смотреть в COM порт, ничего. Предполагаю что не хватает сигнала RESET, но как его провести понять не могу. Прикрепил фото платы на всякий случай.
Вложения
WhatsApp Image 2023-04-05 at 09.27.16.jpeg
(165.9 КБ) 76 скачиваний
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: STM32 новичку в ARM что к чему

Сообщение JackSmith »

Прошивка вашего устройства может быть шифрованой. Нужно смотреть сначала прошивку, и только потом прозванивать железку.
retoenr
Родился
Сообщения: 3
Зарегистрирован: Ср апр 26, 2023 11:26:35

Re: STM32 новичку в ARM что к чему

Сообщение retoenr »

попробую прикрепить файл прошивки
Вложения
040200_01_15_02.zip
(337.22 КБ) 74 скачивания
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: STM32 новичку в ARM что к чему

Сообщение JackSmith »

[uquote="retoenr",url="/forum/viewtopic.php?p=4407426#p4407426"]попробую прикрепить файл прошивки[/uquote]
вынужден разочаровать.

Код: Выделить всё

$ file  ./040200_01_15_02.img 
./040200_01_15_02.img: OpenPGP Secret Key
retoenr
Родился
Сообщения: 3
Зарегистрирован: Ср апр 26, 2023 11:26:35

Re: STM32 новичку в ARM что к чему

Сообщение retoenr »

JackSmith, это получается как к контроллеру не подключись, прошить его этим не удастся? Но вот есть программа через которую проводится обновление прошивки, если допустим подцепиться по USART и по появившемуся в системе COM порту попробовать прошить... Однако я точно не помню, кажется перед прошивкой программа прошивальщик меняет устройство в системе, в директории с программой имеются драйвера ST для USB\VID_0483&PID_5740. Прямо сейчас не могу заполучить в руки подобное устройство, чтобы проверить как идёт процесс обновления в этом плане, но скоро заполучу один рабочий экземпляр.
Аватара пользователя
Di123
Сверлит текстолит когтями
Сообщения: 1142
Зарегистрирован: Пт авг 05, 2016 04:47:49

Re: STM32 новичку в ARM что к чему

Сообщение Di123 »

пишут что STM32F103C8T6 имеет якобы 12 бит ацп
а у меня 10 бит выдаёт только это как ?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Di123 писал(а):а у меня 10 бит выдаёт только это как ?
Числа от 0 до 1023?
На входе АЦП какое напряжение?
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: STM32 новичку в ARM что к чему

Сообщение COKPOWEHEU »

Важнее какие настройки АЦП: разрядность ведь от 6 до 12 бит настраивается.
Аватара пользователя
Di123
Сверлит текстолит когтями
Сообщения: 1142
Зарегистрирован: Пт авг 05, 2016 04:47:49

Re: STM32 новичку в ARM что к чему

Сообщение Di123 »

да верно мне посоветовали прописать разрешение
Аватара пользователя
Di123
Сверлит текстолит когтями
Сообщения: 1142
Зарегистрирован: Пт авг 05, 2016 04:47:49

Re: STM32 новичку в ARM что к чему

Сообщение Di123 »

могу ли я применить для stm32f103cbt6 такие кварцы
на 8мгц 2пин https://static.chipdip.ru/lib/309/DOC008309076.pdf
на 32768гц https://static.chipdip.ru/lib/450/DOC012450032.pdf

там вроде бы во внимание берётся входное сопротивление и ёмкость порта я не знаю какие у него характеристики
Аватара пользователя
zenon
Сверлит текстолит когтями
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение zenon »

stm32f030k6t6.
Шим на TIM14, нормально всё, так:
Спойлер

Код: Выделить всё

void tim14_init() 
{
  GPIOB->MODER   |= GPIO_MODER_MODER1_1;
  GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1;
  GPIOB->AFR[0]  |=_VAL2FLD(GPIO_AFRL_AFSEL1, 0); // PB1 AF0 TIM14_CH1
  RCC->APB1ENR   |= RCC_APB1ENR_TIM14EN;
 
  TIM14->PSC   = 50;//
  TIM14->ARR   = 50;
  TIM14->CCR1  = 25;// тут скважнось сидит, половина от ARR меандр
  TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // 
  TIM14->CCER  = TIM_CCER_CC1E; 
  TIM14->DIER  = TIM_DIER_UIE; 
  TIM14->EGR   = TIM_EGR_UG;
  TIM14->CR1   = TIM_CR1_CEN;
  // TIM1->BDTR |= TIM_BDTR_MOE;
}

Пытаюсь на TIM16 или 17, никак не хочет шимить.
Ну, думаю может как вариант, чтобы понять, кто виноват, беру вот это либу, делаю для TIM14 так:

Код: Выделить всё

timer_pwm_setup(TIM14, 50, 50, ONE_CHANNEL, PB1);
timer_pwm_period(TIM14, 50);
timer_pwm_value(TIM14, CH1, 25);
Всё ок, шимит, перекидываю:

Код: Выделить всё

timer_pwm_setup(TIM17, 50, 50, ONE_CHANNEL, PB7);
timer_pwm_period(TIM17, 50);
timer_pwm_value(TIM17, CH1, 25);
Молчит PB7.
TIM16 тоже молчит.
Что с таймерами у меня?
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 новичку в ARM что к чему

Сообщение azhel12 »

В f0lib_timers.c используемой вами библиотеки в строках 141-150 судя по всему ошибка, там для таймера 16 в коде возможны ножки PA6/PB8, а для таймера 17 PA7/PB9. Попробуйте на правильные поменять, возможно, поможет. Если да, то автору, наверно, будет приятно, если кинете ему pull request с исправлениями.
Аватара пользователя
zenon
Сверлит текстолит когтями
Сообщения: 1274
Зарегистрирован: Вт окт 23, 2007 10:01:42
Откуда: Волгоград
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение zenon »

Хм. Да, спс, исправил, но это не решило, пробовал на PB6/PB7 и на PA6/PA7, тишина.
Так тоже ничего:
Спойлер

Код: Выделить всё

void tim17_init() 
{
  GPIOB->MODER   |= GPIO_MODER_MODER7_1;
  GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7;
  GPIOB->AFR[0]  |=_VAL2FLD(GPIO_AFRL_AFSEL7, 2); // PB7 AF2 TIM17_CH1
  RCC->APB2ENR   |= RCC_APB2ENR_TIM17EN;  //RCC->APB2ENR
 
  TIM17->PSC   = 50;
  TIM17->ARR   = 50;
  TIM17->CCR1  = 25;
  TIM17->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // 110
  TIM17->CCER  = TIM_CCER_CC1E; 
  TIM17->DIER  = TIM_DIER_UIE; 
  TIM17->EGR   = TIM_EGR_UG;
  TIM17->CR1   = TIM_CR1_CEN;
  //TIM17->BDTR |= TIM_BDTR_MOE;
}
Код вот этот правильный?
Ответить

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