Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 20.04.2017
Сообщений: 34
1

Не соответствие выходного напряжения на портах

26.06.2020, 13:52. Просмотров 378. Ответов 14
Метки нет (Все метки)

Здравствуйте. Совсем недавно начал разбираться с stm32f103c8 и понял, что в аппаратном SPI нет ножки CS (либо я не совсем внимательно читал datasheet). Соответственно было принято решение использовать любой другой пин порта, для того чтобы превратить его в CS. И вот на этом этапе я застрял. Я включаю тактирование порта, настраивал ножку на push-pull или open-drain (пробовал и то и другое).
Код настройки порта

C
1
2
3
4
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
GPIOB->CRH |= 0x01 << GPIO_CRH_MODE12_Pos | 0x00 << GPIO_CRH_CNF12_Pos;
GPIOB->BSRR |= GPIO_BSRR_BR12;
GPIOB->BSRR |= GPIO_BSRR_BS12;
И вот подошли к сути проблемы, напряжение на выходе данного пина PINB12 при логической единице составляет примерно 1 вольт, хотя должно быть не меньше чем 1.65 вольт при питании от 3.3 Вольт. Я думал битая stm-ка, проверял на другой и такая же проблема, пытался проверять другие порты, пины, все однообразно, при логической единице напряжение примерно равняется 1 вольт. Так же подтягивал данный порт к +3.3 вольта через 10к резистор и тогда устанавливались нормальные значения на пине.
Для проверки напряжения был использован поверенный мультиметр. Это уточнение для того, чтобы отбросить вариант с неисправностью измерительного оборудования. Плату использую китайскую, приложил во вложении.
Кто знает из-за чего это происходит? Заранее спасибо.
0
Миниатюры
Не соответствие выходного напряжения на портах  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2020, 13:52
Ответы с готовыми решениями:

Контроль напряжения на портах USB
Доброго времени суток. Кто может, подскажите пожалуйста можно ли контролировать количество...

Пульсации выходного напряжения
Добрый вечер! есть конденсаторы которые уменьшают пульсации напряжения на входе у меня 35мВ...

Регулировка выходного напряжения полумоста
Всем доброго дня! Собрал схему ИИП на IR2101 с защитой от сквозного кз. Драйвер IR2101 управляется...

Зависимость выходного напряжения от сопротивления
Я прочитал справку а русском, но кроме как через userdefined fuctions я не понимаю как это сделать....

14
895 / 656 / 132
Регистрация: 01.03.2010
Сообщений: 1,243
26.06.2020, 14:12 2
Попробуйте так:
C
1
2
3
4
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
    GPIOB->CRH&=~(GPIO_CRH_CNF12|GPIO_CRH_MODE12);
    GPIOB->CRH|= GPIO_CRH_MODE12_1;
    GPIOB->BSRR=GPIO_BSRR_BS12;
0
0 / 0 / 0
Регистрация: 20.04.2017
Сообщений: 34
26.06.2020, 15:04  [ТС] 3
Я забыл сказать, что я использую отладчик St-Link и в реальном времени отлаживаю проект и вижу все биты которые записываются и там нет ничего лишнего, но все равно спасибо за ответ.

Добавлено через 7 минут
Евгений В, Я забыл сказать, что я использую отладчик St-Link и в реальном времени отлаживаю проект и вижу все биты которые записываются и там нет ничего лишнего, но все равно спасибо за ответ.
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.06.2020, 15:08 4
Цитата Сообщение от NiKit_A Посмотреть сообщение
GPIOB->CRH |= 0x01 << GPIO_CRH_MODE12_Pos | 0x00 << GPIO_CRH_CNF12_Pos;
какой режим хочешь выставить?
0
0 / 0 / 0
Регистрация: 20.04.2017
Сообщений: 34
26.06.2020, 15:24  [ТС] 5
ValeryS, Мне хотя бы получить 3.3В на выходе.
В данном куске кода получается что MODE 0x01 - Output mode, max speed 10 MHz.
CNF 0x00 - General purpose output push-pull

Добавлено через 12 минут
Если точнее сказать, необходимо просто изменять логический уровень данной ножки из 0 в 1 и из 1 в 0. Для возможности передачи данных по SPI. И мне кажется, что режим open-drain ибо push-pull не особо будут отличаться друг от друга в для данной задачи. Возможно только в скорости.

Добавлено через 34 секунды
либо*
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.06.2020, 15:56 6
теперь покажи как конфигурируешь SPI ? дело в том что среди прочих PB12 имеет функцию NSS SPI2
покажи скриншот порта B, во время работы
и я бы посоветовал для начала работать с CubeMX а только потом,если понадобится, лезть в регистры

Добавлено через 14 минут
вот здесь как раз настраивают PB12 в чистом виде
http://dimoon.ru/obuchalka/stm... -gpio.html
0
locm
26.06.2020, 16:07
  #7

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
и я бы посоветовал для начала работать с CubeMX
Лучше с SPL.
Куб слишком много скрывает от программиста.

0
0 / 0 / 0
Регистрация: 20.04.2017
Сообщений: 34
26.06.2020, 16:08  [ТС] 8
ValeryS, Более привычно работать с регистрами из-за того что работал с avr, да и для более глубокого понимания мк мне кажется CubeMX не очень подходим (субъективное мнение). Настройку SPI показать не могу, потому что все находится на работе.
Как раз с этого сайта я и брал настройку (когда уже не было идей почему не работает полез гуглить), но некоторые моменты я пропустил потому что использую отладчик и вижу что куда записывается в карте регистров. Я проверял как поднимется и опускается уровень пина и без настройки SPI. Проверял на всем порту А и B все пины и они отказывались нормально функционировать.
0
Почетный модератор
11088 / 4059 / 389
Регистрация: 12.06.2008
Сообщений: 11,775
26.06.2020, 16:37 9
Цитата Сообщение от NiKit_A Посмотреть сообщение
настраивал ножку на push-pull или open-drain (пробовал и то и другое)
Open-Drain не может сам выставлять единицу, он умеет только в ноль утягивать. Если вы используете OpenDrain (как в вашем примере), то вам нужен внешний подтягивающий резистор на этой ножке. Проще всего в данном случае использовать PushPull (именно GPIO, а не Alternate) (CNF=00, MODE=<любое_значение_больше_нуля>) и тогда не надо заморачиваться с резисторами.
C
1
GPIOB->CRH = (GPIOB->CRH & ~GPIO_CRH_CNF12) | (0x1 << GPIO_CRH_MODE12_Pos);
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.06.2020, 18:06 10
Цитата Сообщение от locm Посмотреть сообщение
Куб слишком много скрывает от программиста.
вот чего он скрывает? все коды открытые и документированные
выставил ножку подергал уровнем покричал ура, и пошел, с твоим любимым отладчиком, по шагам смотреть что куда и зачем записывается
Цитата Сообщение от NiKit_A Посмотреть сообщение
Более привычно работать с регистрами из-за того что работал с avr,
только регистров здесь на порядок больше чем в AVR сравни хотя бы GPIO 3 против 7
Цитата Сообщение от NiKit_A Посмотреть сообщение
Я проверял как поднимется и опускается уровень пина и без настройки SPI. Проверял на всем порту А и B все пины и они отказывались нормально функционировать.
я кажется понял в чем у тебя косяк
после резета ноги становятся в режим входа без подтяжки CNF=0x01 и MODE=0x00
после вот таких манипуляций (операции ИЛИ)
Цитата Сообщение от NiKit_A Посмотреть сообщение
GPIOB->CRH |= 0x01 << GPIO_CRH_MODE12_Pos | 0x00 << GPIO_CRH_CNF12_Pos;
устанавливается режим CNF=0x01 и MODE=0x01, режим выход Open-drain
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,113
Записей в блоге: 6
26.06.2020, 18:40 11
Цитата Сообщение от ValeryS Посмотреть сообщение
вот чего он скрывает? все коды открытые и документированные
В смысле что настройка визуальная и не все моменты очевидны.

Цитата Сообщение от ValeryS Посмотреть сообщение
выставил ножку подергал уровнем покричал ура, и пошел, с твоим любимым отладчиком, по шагам смотреть что куда и зачем записывается
В SPL это нагляднее и меньше лишнего кода.
0
Эксперт .NET
6846 / 4453 / 1068
Регистрация: 25.05.2015
Сообщений: 13,613
Записей в блоге: 13
26.06.2020, 19:02 12
Цитата Сообщение от locm Посмотреть сообщение
В смысле что настройка визуальная и не все моменты очевидны.
Ага, точно!
Вот смотрю на код
Цитата Сообщение от Humanoid Посмотреть сообщение
GPIOB->CRH = (GPIOB->CRH & ~GPIO_CRH_CNF12) | (0x1 << GPIO_CRH_MODE12_Pos);
и сразу же понимаю, что и как настраивается, даже даташит нафиг не нужен! И если надо что добавить, разу пишешь, никуда не подглядывая.
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
26.06.2020, 19:10 13
Цитата Сообщение от Rius Посмотреть сообщение
и сразу же понимаю, что и как настраивается, даже даташит нафиг не нужен!
я так понимаю, все регистры и макросы наизусть помнишь да еще не одной линейки
C
1
2
3
4
5
GPIO_InitStruct.Pin = LedBoard_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LedBoard_GPIO_Port, &GPIO_InitStruct);
а это вот темный лес и без даташита не обойтись
1
Эксперт .NET
6846 / 4453 / 1068
Регистрация: 25.05.2015
Сообщений: 13,613
Записей в блоге: 13
26.06.2020, 19:12 14
Дааа! Больше макросов богу макросов!!
0
Модератор
8195 / 6067 / 809
Регистрация: 14.02.2011
Сообщений: 21,034
27.06.2020, 08:08 15
Rius, вот теперь понятно
 Комментарий модератора 
дальнейшие рассуждения насчет HAL и SPL перенесены сюда
HAL или SPL
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2020, 08:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Изменение выходного напряжения ИБП
Добрый день. Есть необходимость изменить выходное напряжение импульсного блока питания. Есть БП 9В....

Изобразить график выходного напряжения
Под графиком зависимости е(t) изобразить график выходного напряжения. Помогите разобраться!

Зависимость выходного напряжения источника от нагрузки
Здравствуйте. У меня наверное простой, но мне совершенно непонятный вопрос. Помогите, пожалуйста. ...

Изменение выходного напряжения в электрической цепи
Доброго времени суток. Студент первого курса. Пишу курсовую в первый раз. С пояснительной запиской...

График зависимости выходного напряжения от входного в Мультисим
Нужно построить график зависимости выходного напряжения стабилизатора от входного в мультисим 13.0...

Рассчет выходного напряжения регулятора оборотов двигателя
ребят, подскажите пожалуйста как рассчитать выходное напряжение? если можно с граф. пояснением(


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.