Smith2007
Members-
Постов
93 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент Smith2007
-
Я не весь код привел. Безусловно тактирование включено. зы. В обед успел отключить GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); Все работает! PB3, PB4 - светодиод ожил. Загрузка прошивки нормальная. Еще одну страничку в stm32 изучил с Вашей помощью
-
А если я хочу использовать pb4 то надо выполнить следующую команду? GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); Не повлияет это на загрузку новых прошивок через STLink v2? В описании нашел GPIO_Remap_SWJ_NoJTRST : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled GPIO_Remap_SWJ_Disable : Full SWJ Disabled (JTAG-DP + SW-DP) stm32Cubmx (и HAL) не использую в проекте.
-
Что-то не найду где его отключить. При инициализации ничего особенного не включал. Отладчик STLink v2, подключен по swd
-
Отладочная плата stm32f103c8t6. В порт GPOIB Pin_3 записываю Bit_SET или Bit_RESET. В отладчике кейла вижу как меняется значение ODR3 в регистре GPIOB. Но на выходе светодиод молчит. Если поменять на Pin_7 работает нормально. Обозначение PB3/JTDO. С чем может быть связано такое поведение? Или просто порт спалил? /***************************************************/ /* Инициализация GPIO */ /***************************************************/ GPIO_InitTypeDef GPIO_Structure; GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOC); /* Led B3 - LED_Heat_L*/ GPIO_StructInit(&GPIO_Structure); GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Structure.GPIO_Pin = GPIO_Pin_7; GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_Structure); Вызов bt_heat_l.update(); if (bt_heat_l.btOn) { bOn++; //GPIO_SetBits(GPIOB, GPIO_Pin_3); GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET); } if (bt_heat_l.btOff) { bOff++; //GPIO_ResetBits(GPIOB, GPIO_Pin_3); GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_RESET); } Если пин заменить на GPIO_Pin_3 - порт PB3 не шевелится
-
Это разрешить прерывание на 1 канале по достижению счета? Вектор прерывания один и тот же, а в обработчике прерываний нужно просто определить какой флаг его вызвал? Т.е. прерывание будет происходить каждую миллисекунду (в моем случае 1 кГц) и каждый раз, когда на канале 1 счетчик добежит до CCR1?
-
1 кГц. Значит не важно сколько он считает - на производительность не влияет. Как бы на один канал загрузить число, досчитав до которого вызвать прерывание. Я так примерно понимаю, но не найду примеров похожих.
-
МК на частоте 48 МГц Для генерации ШИМ (или прерывания) можно настроить таймер двумя разными вариантами. Не большой Prescaler и большой Period Или наоборот - Prescaler большой, Period меньший. Какой способ предпочтительнее? Если Period большой это значит счетчик должен сделать больше инкрементов. При счете счетчика задействуется сам ALU ядра процессора или это аппаратный счет идет и на производительность ни как не повлияет? Вариант1 timer.TIM_Prescaler = 47; timer.TIM_Period = 1000; timer.TIM_ClockDivision = 0; timer.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &timer); Вариант2 timer.TIM_Prescaler = 480-1; timer.TIM_Period = 100; timer.TIM_ClockDivision = 0; timer.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &timer);
-
stm32f103c8t6 Для различных временных задержек нужна метка времени. Дискретность 10 мс наиболее удобна.
-
TIM3 генерирует PWM на канале 3 и 4. Частота 1 кГц. Можно ли на этом таймере дополнительно реализовать прерывание с частотой 100 Гц?
-
Можно ли на одном таймере (допустим TIM4) сделать два ШИМ генератора сигналов с разной частотой?
-
Если между затвором и выходом МК поставить сопротивление 10... 20 кОм то как емкость затвор-сток может повредить выход МК? Даже в случае КЗ (затвор-сток) ток не превысит 2мА. Это я понимаю. Но большой разницы не вижу, что коммутировать.
-
Для управления резистивной нагрузкой с токами до 10А нужен мосфет с низким пороговым значением напряжения на затворе. Правильно ли я понимаю, что бы управлять ключом с stm32 (с питанием 3,3В) нужно использовать ключи с аббревиатурой "L" Например irLr2905?
-
Для определения правильных параметров загружаю stm32cubemx, выставляю нужные частоты делители и все получается наглядно. Затем эти значения вношу в проект (не HAL). HAL не использую. Только для визуального понимания настроек частот и разных пинов.
- 33 ответа
-
- Тактирование
- Множитель
-
(и ещё 3 )
C тегом:
-
Беру свои слова обратно. Строил график и не обратил внимание, что ряд не тот выбрал. График нелинейный. Но ни чего страшного, скорректирую. В STM32F103C8T6 нет FPU. Думаю разбить на 3-4 интервала, внутри которых сделать линейную функцию, что бы оперировать только целыми числами.
-
Я там подстроечник поставил и легко можно подобрать коэф. усиления. В Протеусе еще проще схему нарисовал. На одном ОУ. В теории работает и элементов внешних меньше. Возможно для устранения возбуждения от пульсаций питания добавить конденсатор между инверсным входом и выходом ОУ.
-
Погрешность в 5..10% даже не определить. Как точно можно определить уровень топлива по такому индикатору? (фото не мое. С инета) Допускаю, что с 2016 года подачу опорного напряжения на ДУТ стабилизировали. Иначе чем еще объяснить 10,5В при отключенном ДУТ? Во время измерений меня смутило, что если напряжение превысить 5В то показания уходили в минус и переставала гореть аварийка по топливу. Вероятно АЦП имеет опорное напряжение 5В. Резистор ДУТ проволочный и имеет линейную характеристику. Другое дело, что баки бывают разной формы и вот тут нужна будет нелинейность. Но это не сложно воспроизводится. Думаю, что это не совсем так. Напряжение будет меняться линейно в зависимости от угла поворота ДУТ. По сути тут банальный делитель напряжения. Нелинейность может потребоваться из-за особенностей геометрии бака. По моим расчетам получается так
-
Это погрешность измерения. Стрелочный индикатор уровня топлива имеет довольно широкую стрелку и градацию 0 - 0,25 - 0,50 - 0,75 1,00 Т.е. всего 5 делений, которые довольно трудно точно определить. Снимать и измерять ДУТ тоже нет смысла ибо не понятно как он там в баке установлен и до какого угла проворачивается. На сколько понимаю, нулевого сопротивления в любом случае не достичь. На датчике с учетом проводки все равно останется 0,3 - 0,5 Ома. Думаю, что для такого прибора будет вполне приемлемый уровень точности. Вообще график должен получиться линейный. Бак прямоугольный, резистор обыкновенный (с равномерным сопротивлением на градус поворота)
-
Поясните почему такие значения получаются?
-
Да, можно. Но контроль напряжения нужен будет для другой функции - управление компрессором.
-
Провел измерения. При разорванной цепи датчика уровня, напряжение 10,5В. По всей видимости в схеме имеется некоторый стабилизатор все же. Иначе напряжение составило бы 11.9В. (При включенном зажигании и не заведенном двигателе такое напряжение на АКБ). Затем закоротил выводы (полный бак) и получил ток 23 мА. Следовательно внутренний резистор в панели имеет сопротивление 330 Ом. Затем пробежал по шкале уровня топлива, меняя сопротивление подстроечника Результат зы. Как удалять изображения? Не пойму ни как
-
В данном случае контроллер в авто имеет свой стабилизированный источник опорного напряжения для АЦП, который преобразует сигнал напряжения с датчика уровня топлива (ДУТ). В штатной схеме на ДУТ подается не стабилизированное бортовое питание. От сюда и показания плавают в зависимости от напряжения бортсети. Да, нужно разобрать блок переключения баков в авто и подключиться мультиметром. А заодно и ток измерить. Что-то меня очень смущает ток 58 мА. При полном баке и если верить, что сопротивление нагрузки 220 Ом, то на нем будет почти 1 Вт выделяться. Не маленькое должно быть сопротивление.
-
Собрал схему, которую представил Alex Falcon. ШИМ выставил примерно на середину заполнения (аналог половины уровня в баке). На выходе получил напряжение = 5В. Затем изменял напряжение питания схемы в диапазоне от 5,5 до 20В (создал критическую ситуацию с изменением напряжения борт-сети). Напряжение на выходе осталось стабильным 5В. Т.е. эта проблема решилась сама собой и не нужно вводить программную корректировку.
-
С этим я согласен. Но сам ОУ будет работать в очень узком диапазоне. Не знаю конечно на сколько это критично но мне казалось, что если на выходе ОУ амплитуда выходного сигнала будет меняться от от 0 до 5-7В, что бы управлять мосфетом это лучше чем если выход ОУ будет работать в диапазоне 0.. 0,5В Возможно я ошибаюсь. зы. Соберу сейчас новую схему. irf44 нашел.