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

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 пользователей онлайн

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

    • Имел дело с зарядкой батареек еще с советских времен. Тогда еще в магазине (!) купил специальную зарядку для ртутно-цинковых батареек, очень миниатюрная, зарядка шла от встроенного солнечного элемента (и это еще в советские времена!). Использовал для зарядки батареек для наручных часов, после первой зарядки батарейки хватало примерно на полгода, потом на 3-4 месяца. Потом (когда батарейка служила меньше двух месяцев) батарейка отправлялась на упокой. Спасала студента тогда очень эта вещица. Жалею что тогда не срисовал ее внутренности. А вот с зарядкой щелочных батареек пришлось заниматься уже значительно позже. Мне кто-то подарил такой набор (зарядка с комплектом перезаряжаемых батареек) - вот его обзор https://aphnetworks.com/reviews/pure_energy_xl  Все было нормально, но у всех этих батареек ресурс очень ограничен, примерно 25 циклов максимум. После чего емкость уменьшается и нет смысла их дальше использовать. После каждой зарядки емкость уменьшается, но не сильно. Реально раз десять заряжать можно точно без проблем. После того как выработался ресурс последней батарейки стал вопрос - а можно ли заряжать обычные батарейки тоже? Зарядка-то осталась... И как раз в то время приобрел обычные (т.е. "незаряжаемые") батарейки той же фирмы (PureEnergy). Оказалось что они заряжаются точно также, как и "незаряжаемые"! Возможно что у них та же химия... Пробовал батарейки разных фирм, степени разряда. Короче говоря, фирменные всякие Дюраселлы и Энержайзеры не заряжаются вообще, и даже могут потечь во время зарядки. А вот самые дикие и дешевые нонейм чаще всего заряжаются без проблем. Насчет емкости - конечно емкость полностью не восстанавливается, но для работы в беспроводной клаве,, мышке или пульте вполне хватает и достаточно надолго.  Но занимаюсь этим нечасто, просто когда лень ехать в магазин за очередной партией батареек.  А если есть возможность, то предпочитаю переделывать питание под литий. Очень сильно достает саморазряд всяких Ni-Cd, Ni-MH - разряжаются даже те, которые якобы должны долго держать заряд. Схему зарядки еще не срисовывал (лень было разбирать), но схема сложнее чем все что я видел в Интернете. Напряжение заряда примерно 1,7в. xlaa_tds.pdf
    • Я делаю ставку на контакты NC реле запуска и NO реле торможения. Тем более они такие хлипенькие.
    • Раз смогли срисовать схему "силы", то и решить проблему для вас вряд ли сложно будет... Проверьте емкость и ЭПС C-20мкФ и сопротивление контактов этих двух реле в on/off
    • Как? Вы ж никакой информации для работы мозга не дали. Ну, что-то собрали, как-то подключили, подаёте 220 на схему с незапаянным трансформатором, лампочка моргает, защита не срабатывает... Единственный вариант - вас отодвинуть и посмотреть, что там происходит. Но вы даже где обитаете не указали... Единственное, что можно вытянуть из вашего текста: Как может работать микросхема, если у неё замкнуто питание? Перед подачей 220 вы эту перемычку сняли?  
    • Если тут нет необходимой инфы, на это можно забить. Вот если он отвечает на АТ несколькими строками, то стоит разбирать на лету (во время приема) из кольцевого буфера.
    • Так что? Помогите реализовать, нужно за меня реализовать, подскажите как реализовать?? "Барыня лягли и просють..." Вас что в школе, дома, на улице никто не учил диалог вести. 
×
×
  • Создать...