Перейти к содержанию

stm32f4 как настроить шим


Ivan Rusev

Рекомендуемые сообщения

02.06.2020 в 16:58, BARS_ сказал:

0x55500000;

Ваши коллеги меня опустили на самое дно.Хотя в нете много мусора.Что тут плохого .Я любитель.У вас 10-20 лет стажа.Не судите ибо вы судимы будете.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

40 минут назад, Ivan Rusev сказал:

И этот бред мне дал понять как нужно.

Что нужно? Нужно прочесть учебник по Си? Конечно нужно, без этого никак.

 

42 минуты назад, Ivan Rusev сказал:

Контроллерами 5 с половиной год занимаюсь.С stm32 даже года не будет.

Ну нельзя же 5 лет программить контроллеры и до сих пор не выучить Си. Разве что все 5 лет был ассемблер.

 

43 минуты назад, Ivan Rusev сказал:

Такой настройки я не видел.

Еще бы. Нафиг писать простыню кода, когда все решается короткой строкой? Ведь все просто. Имеем два регистра AFRL. Каждый отвечает за настройку 8 пинов порта:

image.png.dfe4520b5560ed5134e8b9de1cad90df.png

Каждые 4 бита - настройка одного пина. Т.е. в записи

GPIOA->AFR[0] |= 0x55500000;

каждая цифра = настройка одного пина. Конкретно тут настраиваются пины А5, А6, А7. Пины с 8 по 15 лежат в AFR[1]. Причем в такой записи сразу ясно, что записано в настройку пина, ибо эта циферка бьется с таблицей из даташита:

image.png.689b6d9053c82837474e86e15e602fe4.png

 

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Ну не умеет он, ему готовая функция нужна...

https://bitbucket.org/AVI-crak/rtos-cortex-m3-gcc/src/default/

Файлы gpio_one.h - заметить сточку /#include "GPIO_ONE32F746BG.h"/ и один нужный вам из каталога gpio_one_all. Для f412rg - там точно есть файл.

Использовать - gpio_one_pin(zap_gpio. - а дальше будет подсказка.

Ошибиться невозможно, протупить тоже, если в автоподстановке нет нужного вам варианта - значит чип это безобразие не поддерживает. Конечный вариант выглядит примерно так:

    /// SPI4
    gpio_one_pin(zap_gpio.E.pin02.v_af05_spi4_sck.speed4.pull_up.lock_on);             /// spi4_sck
    gpio_one_pin(zap_gpio.E.pin04.out.speed4.lock_on);                                 /// spi4_nss
    gpio_one_pin(zap_gpio.E.pin05.v_af05_spi4_miso.speed4.pull_up.lock_on);            /// spi4-mo
    gpio_one_pin(zap_gpio.E.pin06.v_af05_spi4_mosi.speed4.pull_up.lock_on);            /// spi4_mi
    gpio_one_pin(zap_gpio.A.pin00.analog.lock_on);                                      /// adc1-0 - PA0. 43
    gpio_one_pin(zap_gpio.A.pin03.analog.lock_on);                                      /// adc2-2 - PA3. 50
    gpio_one_pin(zap_gpio.C.pin03.analog.lock_on);                                      /// adc3-13 - PC3. 38

 

Изменено пользователем AVI-crak Home
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Си не Си .В каждом контролере  свои регистры.Были AVR.Ci тут не причём.В обьектном программировании тоже СИ но  другой немного.

Stm32 не AVR.

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, Ivan Rusev сказал:

В каждом контролере  свои регистры

При чем тут регистры? Речь именно и Си. У него обращение к регистрам абсолютно одинаковое везде. Так что в STM и AVR Си абсолютно одинаковый. Да и принципы работы желез тоже, как и у всех МК.

 

6 минут назад, Ivan Rusev сказал:

Stm32 не AVR.

Ты не поверишь, я тоже начинал с AVR, а потом спокойной перешел на STM. По крайней мере с базовым функционалом, типа прерываний таймеров, портов, SPI проблем вообще не было. Наоборот, у STM куда проще и логичнее настройка.

Ссылка на комментарий
Поделиться на другие сайты

@BARS_ тут у тебя случайно нет ошибки?  (нету проверил)

GPIOA->OTYPER &= ~GPIO_OTYPER_OT_5 & ~GPIO_OTYPER_OT_6 & ~GPIO_OTYPER_OT_7;

как по мне так нагляднее:

GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_6 | GPIO_OTYPER_OT_7);

 

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Тоже неплохой вариант, ещё и запись короче. Но так в принципе удобно настраивать, когда пиров штук 5. А если надо целый порт настроить, то я просто числами пишу и все.

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, AVI-crak Home сказал:

Ну не умеет он, ему готовая функция нужна...

https://bitbucket.org/AVI-crak/rtos-cortex-m3-gcc/src/default/

Файлы gpio_one.h - заметить сточку /#include "GPIO_ONE32F746BG.h"/ и один нужный вам из каталога gpio_one_all. Для f412rg - там точно есть файл.

Использовать - gpio_one_pin(zap_gpio. - а дальше будет подсказка.

Ошибиться невозможно, протупить тоже, если в автоподстановке нет нужного вам варианта - значит чип это безобразие не поддерживает. Конечный вариант выглядит примерно так:


    /// SPI4
    gpio_one_pin(zap_gpio.E.pin02.v_af05_spi4_sck.speed4.pull_up.lock_on);             /// spi4_sck
    gpio_one_pin(zap_gpio.E.pin04.out.speed4.lock_on);                                 /// spi4_nss
    gpio_one_pin(zap_gpio.E.pin05.v_af05_spi4_miso.speed4.pull_up.lock_on);            /// spi4-mo
    gpio_one_pin(zap_gpio.E.pin06.v_af05_spi4_mosi.speed4.pull_up.lock_on);            /// spi4_mi
    gpio_one_pin(zap_gpio.A.pin00.analog.lock_on);                                      /// adc1-0 - PA0. 43
    gpio_one_pin(zap_gpio.A.pin03.analog.lock_on);                                      /// adc2-2 - PA3. 50
    gpio_one_pin(zap_gpio.C.pin03.analog.lock_on);                                      /// adc3-13 - PC3. 38

 

Надо же столько сношаться ради настройки пинов

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, MasterElectric сказал:

Надо же столько сношаться ради настройки пинов

Надо!!! Уже на третьем проекте с чипом в 200 ног - всякие GPIO_AFRL_AFRL1_1 и тому подобное, начинают дико бесить. Потом начинает бесить дма, чуть позже дма2д... Словом - бесит всё, что требует много раз открывать документацию.

 

Ссылка на комментарий
Поделиться на другие сайты

11 часов назад, AVI-crak Home сказал:

всякие GPIO_AFRL_AFRL1_1 и тому подобное, начинают дико бесить.

А на кой оно надо? Что мешает сделать так?

	GPIOB->MODER = 1<<30 | 1<<28 | 1<<26 | 1<<24 | 1<<22 | 1<<18 | 1<<16 | 1<<10 | 1<<8 | 1<<6 | 1<<2 | 1; // R_OUT7 - R_OUT3 | LED_L2_G | LED_L2_B | LED_S_R | LED_S_G | LED_S_B | RST_E1 | CS_E1
	GPIOB->OTYPER = 0;
	GPIOB->OSPEEDR = 3<<30 | 3<<28 | 3<<26 | 3<<24 | 3<<22 | 3<<18 | 3<<16 | 3<<10 | 3<<8 | 3<<6 | 3<<2 | 3;
	
	GPIOE->MODER = 1<<30 | 1<<28 | 1<<8 | 1<<6 | 1<<2 | 1; // R_OUT2 | R_OUT1 | LED_L1_R | LED_L1_G | LED_L1_B | LED_L2_R
	GPIOE->OTYPER = 0;
	GPIOE->OSPEEDR = 3<<30 | 3<<28 | 3<<8 | 3<<6 | 3<<2 | 3;

МК на 100 ног, задействованы все ноги. 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, BARS_ сказал:

А на кой оно надо? Что мешает сделать так?

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

В основном приходится настраивать по одному пину, потому что скорее всего будет очередное изменение разводки печатной платы и линия "кнопка А" может стать "светодиод 3" )))
А так у меня в отдельном файле находятся дефайны "#define LED1_PIN" и "#define LED1_PORT" и при изменении разводки, я их быстро и легко переопределяю. Но это мой частный случай. Не всем подойдет.

Ссылка на комментарий
Поделиться на другие сайты

51 минуту назад, LiVit сказал:

А так у меня в отдельном файле находятся дефайны "#define LED1_PIN" и "#define LED1_PORT"

Аналогично, все ноги по максимумы вынесены в дефайны. Аналогично с SPI и прочими интерфейсами.  Для запуска либы на любом SPI достаточно пару дефайнов сменить.

Ссылка на комментарий
Поделиться на другие сайты

04.06.2020 в 17:56, BARS_ сказал:

При чем тут регистры? Речь именно и Си. У него обращение к регистрам абсолютно одинаковое везде. Так что в STM и AVR Си абсолютно одинаковый. Да и принципы работы желез тоже, как и у всех МК.

 

Ты не поверишь, я тоже начинал с AVR, а потом спокойной перешел на STM. По крайней мере с базовым функционалом, типа прерываний таймеров, портов, SPI проблем вообще не было. Наоборот, у STM куда проще и логичнее настройка.

Наверное ты прав.Но структура команд разная.Начинающему stm32 труднее вникнуть.Тут и тактирование.И регистров больше и периферия круче.

Ссылка на комментарий
Поделиться на другие сайты

55 минут назад, Ivan Rusev сказал:

Наверное ты прав.Но структура команд разная

Вот так вот, коллеги.
Структура команд в сях зависит от типа микроконтроллера.:clapping:
Это что-то новенькое.
Жду дальнейших перлов. 

 

Иван, я с AVR дела не имел. Писал под 8051, PIC12, PIC18, некоторые мелкие NEC микроконтроллеры. Но, право слово, такого никогда не было, чтобы структура команд Си была зависима от процессора.

Там есть некоторые моменты с Little/Big endian, но не со структурой команд.

Конечно, я понял что ты имел в виду настройку микроконтроллера - периферию, тактирование. Но блин.... учись писать грамотно. 

Хотя о чем я....

Изменено пользователем LiVit
Ссылка на комментарий
Поделиться на другие сайты

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LiVit сказал:

Вот так вот, коллеги.
Структура команд в сях зависит от типа микроконтроллера.:clapping:
Это что-то новенькое.
Жду дальнейших перлов. 

 

Иван, я с AVR дела не имел. Писал под 8051, PIC12, PIC18, некоторые мелкие NEC микроконтроллеры. Но, право слово, такого никогда не было, чтобы структура команд Си была зависима от процессора.

Там есть некоторые моменты с Little/Big endian, но не со структурой команд.

Конечно, я понял что ты имел в виду настройку микроконтроллера - периферию, тактирование. Но блин.... учись писать грамотно. 

Хотя о чем я....

В AVR всё  проще и понятнее.В STM нужно предугадывать.Уметь читать  и настройка периферии сложнее.Извените я не русский.Даже не славяьянин.Понял учител

1 минуту назад, BARS_ сказал:

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Неправда.Настройка периферии отличается.В корне.

Вы учителя.А я не учител.Даже кухарка может управлять страной.Только нужно её научить.Дать информацию.Я мало знаю.Хотел бы больше.

Ссылка на комментарий
Поделиться на другие сайты

Ясен пень, что надо читать и разбираться. Это везде так. А про настройку нечего сказки рассказывать. Отличия лишь в названии битов в регистрах. Принцип работы и настройки один в один.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, BARS_ сказал:

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Не, ну как... сначала пишем for, а потом в скобочках задаем условия. Это не оно? ))))

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, Ivan Rusev сказал:

В AVR всё  проще и понятнее.В STM нужно предугадывать.Уметь читать  и настройка периферии сложнее.Извените я не русский.Даже не славяьянин.Понял учител

Неправда.Настройка периферии отличается.В корне.

Вы учителя.А я не учител.Даже кухарка может управлять страной.Только нужно её научить.Дать информацию.Я мало знаю.Хотел бы больше.

1.  Нет никакой разницы какая национальность. В прошлом году я мексиканцу помогал. Он вполне грамотно излагал мысли, не смотря на то, что он не профессионал а любитель.
2. Тебе не нравится, что тебя учат? Какого лешего тогда спрашиваешь совета?
3. Настройки периферии везде разные. Даже в разных сериях микроконтроллеров одного производителя. И что? Есть даташит, референс мануал - называй как хочешь. Там всё прописано. Как настраивать и зачем. Хочешь обойтись без этого? Юзай ардуину.
4. Мы не учителя. Мы просто хорошо знаем свое дело. И можем объяснить, если спрашивающий адекватен. И вообще, научить невозможно. Можно только научиться. А для этого необходимо прилагать усилия.
5. Вот дословно то, что говорил Ленин:

Цитата

 

из статьи «Удержат ли большевики государственную власть?» (1917) В. И.Ленина

«Мы не утописты. Мы знаем, что любой чернорабочий и любая кухарка не способны сейчас вступить в управление государством.. Но мы […] требуем немедленного разрыва с тем предрассудком, будто управлять государством, нести будничную, ежедневную работу управления в состоянии только богатые или из богатых семей взятые чиновники. Мы требуем, чтобы обучение делу государственного управления велось сознательными рабочими и солдатами и чтобы начато было оно немедленно, т. е. к обучению этому немедленно начали привлекать всех трудящихся, всю бедноту»).

 

Понятно? Тут Ленин говорил то, что надо учиться.

А вот с информацией проблем нет. Сейчас 2020 год, не 2000. В инете есть почти всё, а уж того что тебе надо - больше чем достаточно. Поэтому тут не любят вопросы типа "а как мне включить тактирование порта С? Мне чо-та лень искать...."

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LiVit сказал:

Это не оно?

Дык это стандартно для любого МК с написанием ПО на сях...

 

1 час назад, LiVit сказал:

Настройки периферии везде разные.

Настройки как раз таки +/- одинаковые, особенно если не нужен обычный функционал. Названия регистров и битов разное, только и всего. Но автор этого упорно не хочет видеть. Ему то структура команд мешает, то настройки непонятные придумывают, то еще что-то.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, BARS_ сказал:

Настройки как раз таки +/- одинаковые, особенно если не нужен обычный функционал. Названия регистров и битов разное, только и всего. Но автор этого упорно не хочет видеть. Ему то структура команд мешает, то настройки непонятные придумывают, то еще что-то.

Ну, в 030 серии и в 10x они таки немножечко разные. Я про GPIO.

А так да - чувак какую-то ахинею несет.

Вообще не понятно, как он до сих пор занимался какими-то микроконтроллерами.

Ой, да ну его. Я его в игнор-лист отправил.

Ссылка на комментарий
Поделиться на другие сайты

21 час назад, LiVit сказал:

Ну, в 030 серии и в 10x они таки немножечко разные. Я про GPIO.

А так да - чувак какую-то ахинею несет.

Вообще не понятно, как он до сих пор занимался какими-то микроконтроллерами.

Ой, да ну его. Я его в игнор-лист отправил.

кортекс м3 кортекс м 4 разные не только настролйка портов а и настройка ацп и альтернативную функцию а также настройку тактирования. а в серии о30 настройка ацп вооще другая.Какая ахинея.??Я занимаюсь потому что я любитель.Никто  не запретит мне заниматься.Не боги обжигали горшки.

 

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, Ivan Rusev сказал:

кортекс м3 кортекс м 4 разные не только настролйка портов а и настройка ацп и альтернативную функцию а также настройку тактирования. а в серии о30 настройка ацп вооще другая

Какая другая? Для тебя дргуая = другое название битов в регистрах? Ну ты бы взял и сравнил оба даташита. Принципы и порядок настройки один в один. Для порта - вывод вход или выход - альтернативный, не альтернативный - скорость. И это есть во всех сериях STM. Что тут разного? И так для ВСЕЙ периферии.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
    • Типа такого: https://aliexpress.ru/item/2044864227.html?sku_id=58855020183
    • поняли неправильно. У ТЛ494 никакой защиты нет, усилители ошибки не защита, они не должны приводить к ложным импульсам. Причем тут "микруха" ?  надо нагружать ВСЁ. До сих пор вообще непонятно о каком ИИП идет речь и сколько у него каналов. Бесполезно схему рисовать? - Помогать так бесполезно. Картина кривая по самое "немогу" продолжаются картинки, снятые через ногу и без цены деления.
×
×
  • Создать...