0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
1

STM32F100RB на VL-Discovery портВ 2,3,4 пин не настраиваются

19.10.2013, 00:27. Показов 8436. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникла интересная проблема. Вероятно по моей неопытности с архитектурой СТМ32.

Требуется включить внутренние подтягивающие резисторы прота В к плюсу питания.

Все выводы первой половины порта слушаются, кроме 2,3,4 пина. Тоесть пины 0,1,5,6,7 удается подключить и к земле и к плюсу питания, а 2,3,4 не реагируют. При чем на 4 пине, постоянно включена подтяжка к +3.3В и нельзя поменять. На втором пине 0.15В и тоже не меняется. Остальные пины по умолчанию плавающие, с напряжениями где-то по середине напряжения питания.

К тому же пины работают. Например на пин 2 поцепил прерывание, работает. Не работает включение подтяжки. Подумал, что у меня плата дискавери проблемная. Взял другую, точно такую же. Нифига не поменялось. Та же история.

В чем же дело?

Вот код которым пытаюсь включить подтяжку к +3.3В. Если вместо GPIO_Pin_2 пишу GPIO_Pin_0 или 1,5,6,7, то работает. Не понимаю:

Код
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
int main() {
GPIO_InitTypeDef PORT;
//Затактируем все три порта
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);

PORT.GPIO_Pin = (GPIO_Pin_2);
PORT.GPIO_Mode = GPIO_Mode_IPU;
//PORT.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOB, &PORT);

while(1)
{
//Программа ничего не делает в пустом цикле
}

}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2013, 00:27
Ответы с готовыми решениями:

STM32F100RB (discovery) и I2C
Приветствую всех, и прошу помочь советом: не могу добиться взаимности от y2s на обозначенной...

Плохо ли для ryzen 5 3400g, на материнке с 8 пин разъемом, только на 4 пин вставленным
Хорошо посмотрю, отпишу. Если вдруг вам не сложно ответить, по другой теме- плохо ли для ryzen 5...

16 пин разъем питания на материнке Fujitsu D2990-A Можно ли как-то запитать от БП с 20(24) пин?
Собственно в названии темы сам вопрос и есть. Достался мне тут системный блок, но нужно поменять...

Можно ли воспользоваться 8 пин разъемом БП, как 6 пин того же БП ?
Здравствуйте. Скажите такое. Можно ли использовать 8-ми пиновые разъемы БП Seasonic Prime...

13
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
19.10.2013, 00:47 2
Только что проверил порт А, там все нормально. Все ноги подтягиваются к +3.3В.

А вот что происходит с портом В не понимаю. По схеме от VL-Dyscovery к порту В ничего не подключено. Что за фигня?
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
19.10.2013, 00:47 3
Иду проверю порт С...

Порт С тоже в порядке. В общем 2,3,4 пины порта В не реагируют на команды включения подтягивающих резисторов.
Что делать? Куда смотреть?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
19.10.2013, 00:54 4
Блин, что за чайниковский подход! Вы когда уже в документацию заглянете?
Datasheet -> PB2,3,4. Интересный пунктик - "Main function (after risit)".
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
19.10.2013, 01:01 5
Конечно чайниковский. Не все же сразу родились гуру. Я-то 3-й день всего с СТМ32. С прерываниями разобрался только по мануалу. А тут подумал глюк какой-то.

Ладно, благодарю за подсказку, иду читать рефман.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
19.10.2013, 01:14 6
Цитата Сообщение от TDuki
3-й день всего с СТМ32. С прерываниями разобрался только по мануалу.
Тогда рекомендуется (раз уж Вы оказались на этом сайте) - цикл статей "ARM. Учебный курс". Доходчиво, полезно, и времени не много займёт.
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
19.10.2013, 01:25 7
Благодарю! Иду читать цикл статей. Временно перейду на порт А с ним хоть проблем меньше.

Посмотрел рефман.

PB2 - PB2/BOOT1
PB3 - JTDO
PB4 - NJTRST

И что же с этим делать? Я же чайник.
Я так понял на ноги 3,4 завязан интерфейс отладчика.

Могу ли я как-то перенастроить 2,3,4 ноги, или лучше их не трогать, а испоьзовать другие ноги порта?
Ну хотя бы PB2 освободить... (только что такое BOOT1?)

ЗЫ
Продвинутых гуру, прошу подсказать а не нервничать сразу. Ведь форум тогда зачем?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
19.10.2013, 01:40 8
Цитата Сообщение от TDuki
Могу ли я как-то перенастроить 2,3,4 ноги, или лучше их не трогать, а испоьзовать другие ноги порта?
BOOT1 может пригодиться (читайте Мануал).
Отладочные пины - смотря каким отладчиком пользуетесь. Если не JTAGовским, а встроенным в Dyscovery, тогда можете эти два пина переопределить (читайте Мануал).

Но imho проще не изобретать приключения на свою голову и пользоваться пока остальными пинами.
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
19.10.2013, 01:55 9
Так и поступлю. Передалаю девайс на порт А.
Спасибо за помощь:)
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
19.10.2013, 11:37 10
Цитата Сообщение от TDuki
Так и поступлю. Передалаю девайс на порт А.
Спасибо за помощь:)
А что за девайс многоногий подключаем ?
И кстати на PORTA - PA13-14v сидит SWD ... :)))))))
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
13.11.2013, 17:03 11
Цитата Сообщение от dosykus_2
Цитата Сообщение от TDuki
Так и поступлю. Передалаю девайс на порт А.
Спасибо за помощь:)
А что за девайс многоногий подключаем ?
И кстати на PORTA - PA13-14v сидит SWD ... :)))))))

Ну не то, что бы многоногий, но ноги нужны. 3 входа от датчиков Холла, 6 выходов ШИМ для драйвера 3-фазного моста, аналоговый вход для измерения тока, несколько цифровых входов для концевых выключателей. Плюс выводы для UART.
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
13.11.2013, 17:10 12
Ну и сразу вопрос для знающих. Мне нужен ШИМ сигнал. Но не сам ШИМ на выводах, а прерывание по ШИМ. По нему через таблицу коммутации фаз двигателя, будут управляться конкретные ключи моста.

Вот и вопрос, можно ли настроить таймер, так что бы он генерировал не ШИМ на выводах МК, а прерывания по изменению сигнала?

Очевидное решение, это настроить ШИМ на таймере на какой-то вывод МК, а к этому выводу привязать обработчик внешнего прерывания. Но хотелось бы экономить выводы. Если это возможно конечно. Если невозможно, то остатся пожертвовать одним выводом.
0
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 1,217
13.11.2013, 19:16 13
У таймера всяко должно быть прерывание по сравнению и по переполнению, можно это использовать, но как мне представляется это таблица коммутации должна управлять аппаратными шимами а не наоборот, темболее что в stm32 есть таймеры с аппаратным dead-time и fault protection, что как раз заточено на управление в том числе двигателями.
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
14.11.2013, 00:27 14
Цитата Сообщение от mShit
темболее что в stm32 есть таймеры с аппаратным dead-time и fault protection, что как раз заточено на управление в том числе двигателями.
Да я в курсе что эдвансд таймер 1 можно использовать как раз для этих целей. Что этот таймер можно использовать для генерации 3-фазной ШИМ с настраиваемым дедтаймом. Но все дело в том что я с наскоку не могу понять как это делается. В архитектуре STM32 я пока начинающий. Да и примеров объяснениями именно с продвинутым таймером, кроме сухих исходников я не нашел.

Может кто-то сможет подсказать, или дать участок кода для настройки ТИМ1 в трехфазный ШИМ? Хотя именно для бесколлекторника у меня есть сомнения...
Продвинутый таймер, насколько я понимаю, заточен для получения 3-фазной ШИМ сразу на всех 6 выводах со сдвигом фаз 120 градусов, что превосходно для создания частотников для асинхронных двигателей. Для BLDC алгоритм немного другой. Нужно включать 2 из 3-х фаз на основании сигналов от датчиков Холла.

Ну а дедтайм не проблема. Этим занимается драйверная микросхема IR2130.

Цитата Сообщение от mShit
мне представляется это таблица коммутации должна управлять аппаратными шимами а не наоборот
Вы правильно думаете. Но я пока трудно себе представляю как включать и отключать таймеры на лету, согласно таблице коммутации обмоток двигателя, по сигналам датчиков Холла.

Мне пока проще генерировать ШИМ прерывание и в обработчике прерывания включать и выключать нужные выводы МК. Хотя это более ресурсоемко, но мне пока это понятнее.

Цитата Сообщение от mShit
У таймера всяко должно быть прерывание по сравнению и по переполнению, можно это использовать
Тоесть при поступлении прерывания по переполнению, включаем нужные ноги МК, перезагружаем таймер. А при поступлении прерывания по сравнению, выключаем ноги. Тогда да, получим ШИМ на всех нужных выводах МК.

Может есть ссылочка на участок кода где настраивается таймер на такой режим?
0
14.11.2013, 00:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2013, 00:27
Помогаю со студенческими работами здесь

4 или 6 пин,вместо 8 пин-это возможно?
Материна требует 8 пин питание к цп,у меня на бп есть 2 6 пин,1 4 пин и 1 6 пин через...

Особенности подключений БП 20 и 24 пин к материнкам 24 пин
Есть мать asus P8H77V. Разъём 24 пин и 8 пин возле процессора. есть БП 20 пин. Отдельными...

На Бп 4 пин для проца а на мамке 8 пин
На Бп 4 пин для проца а на мамке 8 пин. Что делать?

Питание ЦПУ 4 пин вместо 8 пин
Здравствуйте! Купил комплектующие для ПК проц i3 10105 и мать MSI H510M-A PRO, LGA 1200....

Можно ли вставить 4 пин джек в 3 пин?
Вопрос, конечно, довольно банальный, но нужно знать точно. Мне кажется, что можно, конечно микрофон...

Проверка пин кода и в соответствии с ним заполнить поля после ввода пин-кода на другой форме
Здраствуйте!Люди проблема в следующем, есть задача где мне надо сделать проверку пин кода и в...

Плата 24 пин с БП 20 пин
Здравствуйте! Есть материнская плата p5gpl-x se с 24pin. Можно ли к этой материнской плате...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru