STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: STM32 новичку в ARM что к чему

Сообщение Мурато Мяуконни »

Писать целую статью от начала и доконца долго и ленно, многа букав. Вы если что не понятно - спросите, ответим.
Подпись убрал вместе с автором. aen
Реклама
Аватара пользователя
kaschak
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт май 10, 2013 15:56:40

Re: STM32 новичку в ARM что к чему

Сообщение kaschak »

Статью я не осилю в обозримом будущем эт точно, я имел виду что пол даташита через переводчик погоню.
Да и чувствую спрашивать буду ещё не раз.
Реклама
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

Re: STM32 новичку в ARM что к чему

Сообщение Alexey_N »

По I2C мне очень помогла эта статья: http://easyelectronics.ru/interface-bus-iic-i2c.html + разумеется раздел I2C из RM0008.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

Я для работы с I2C выдернул драйвер из ChibiOS, но тогда там был только драйвер для работы в мастер-режиме. Slave пришлось импровизировать самому. Сделал все через DMA. Разобравшись с этим драйвером, плюс чтение мануала и у Вас все получится.
Иван Сусанин - первый полупроводник :solder:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
kaschak
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт май 10, 2013 15:56:40

Re: STM32 новичку в ARM что к чему

Сообщение kaschak »

Ещё раз спасибо.
Alexey_N
Статейку кстати читал, оттуда и уверенность, что могу(со временем написать софтовый вариант)
Мне конечно более интересен именно железный I2C, вот по нём что то и ищу, а то открыл RM и вспомнил своего класного руководителя(словами которых редактор не знает) за то что меня на немецкий язык записал,хотя я просился на ангицкий, типо учебников больше не нашлось, было б легче с такими вещами хоть чутя.
Myp3ik
Эх я как дочитал что такое DMA в сочетании с прерываниями подумал "а чем вообще ядро у stm занимается" - в моих представлениях после настройки периферия может выполнять оооочень много задач даже не обращаясь к ядру(по началу посчитал скока нужно простой меге частоты для довольно простой задачи, которую хотел решить "в лоб" и пошол искать контроллеры по быстрее, поняв что может арм а вопросу выбора не возвращался более). Но надо сначала разобраться с тем, что будет обслуживать DMA.
СпойлерЗ.Ы. где взять время, а то мысли убегают в перёд не догониш
Реклама
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: STM32 новичку в ARM что к чему

Сообщение Мурато Мяуконни »

kaschak писал(а): DMA в сочетании с прерываниями подумал "а чем вообще ядро у stm занимается" -
Как раз работой с прерываниями в этом сочетании и занимается. Прерывания - это передача исполнения из основной части программы в другую часть программы под действием некоторого внешнего события, не заданного программой напрямую.
Контроллер прерываний NVIC только определяет последовательность действий при входе и выходе из прерывания или исключения. Остальные действия выполняются ядром.
Ядро так же выполняет работу с данными, полученными из периферии посредством DMA. Сама по себе возможность работы периферии без участия ядра - бесполезна. Что толку от того, что например результаты измерений АЦП были загружены через DMA в некоторую область ОЗУ?
Можно создать достаточно хитровыпендренные аппаратные связи периферии с запуском событий от хитросвязанных таймеров, но чем больше периферийных модулей влючено и используется, тем выше суммарное потребление микроконтроллера, и остановка ядра не будет эффективной мерой экономии. Всё должно быть в меру и разумно.
С DMA тоже не всё так безоблачно и восторженно. DMA использует ту же самую шину AHB для пересылки данных, и для него определен порог времени занятия этой шины. У DMA есть арбитраж - приоритетность работы каналов (потоков). Распределение подключаемых к каналам (потокам) ресурсов не всегда нас, как программистов, может устроить. DMA имеет ограничение на количество пересылок за одну настройку = 65536 (16-битный регистр числа передач). При работе с параллельным выходным портом через DMA, порт перезаписывается целиком.
И в конце концов, далеко не всё можно реализовать только лишь на аппаратных возможностях.
С помощью DMA можно облегчить и ускорить некоторые операции, особенно высокоскосротные. Но DMA не панацея.
Подпись убрал вместе с автором. aen
Реклама
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 новичку в ARM что к чему

Сообщение afz »

Кстати, коллеги, что-то я не нашел, какую максимальную частоту можно подать таймеру общего назначения на внешний вход? STM32F103, 72 МГц. Подскажите, плз, в какой ПДФ-ке и в каком месте это прописано?..
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

afz, 180МГц измеряли норм. См. по форуму reciprocal counter
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 новичку в ARM что к чему

Сообщение afz »

dosikus писал(а):180МГц измеряли норм. См. по форуму reciprocal counter
Круто! Я надеялся, что, может быть, мегагерц 50 можно, а тут 180. Но это, как я понимаю, все-таки разгон, а штатно? 72?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: STM32 новичку в ARM что к чему

Сообщение scorpi_0n »

afz писал(а):Кстати, коллеги, что-то я не нашел, какую максимальную частоту можно подать таймеру общего назначения на внешний вход? STM32F103, 72 МГц. Подскажите, плз, в какой ПДФ-ке и в каком месте это прописано?..
В даташите. По входу таймера не более половины тактирующей таймера, т.к. там присутствует синхронизация. По входу ETR - с делителем на 8 в 8 раз больше половины тактирующей таймера, это теоретический максимум.

Добавлено after 2 minutes 34 seconds:
afz писал(а):Но это, как я понимаю, все-таки разгон, а штатно? 72?
Да нет, вроде. Никакого разгона. 72МГц как бы даже СТМ8С003 спокойно переваривают.
Аватара пользователя
kaschak
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт май 10, 2013 15:56:40

Re: STM32 новичку в ARM что к чему

Сообщение kaschak »

Мурато Мяуконни
Ну я наверно не точно выразился, имелось ввиду, что можно снять много нагрузки с ядра. Ну типо периферия пинает DMA и на оборот DMA пинает периферию(типо АЦП отработал, выставил флаг, DMA увидел и перенёс данные в заранее оговоренное место), а ядро соответственно меньше раз прерывания устраивает(я по крайней мере понял так). При очень частом обращении к периферии смысл в таких ухищрениях ИМХО есть. И как вы правильно заметили за всё надо платить(увеличение потребления тока, занятость шин).
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Re: STM32 новичку в ARM что к чему

Сообщение Serj_K »

Решил я опробовать MEMS сенсор MPU-9250. Скачал исходники Oculus Rift DK1 так как там используется похожий сенсор и STM32 в качестве контроллера. Исходники под CooCox. Так вот, заметил такую штуку - компилирую исходники в CoIDE - ошибок нет, но после записи прошивки в МК и подключении к ПК USB HID не находится, а эти же исходники, собранные через Makefile во-первых отличаются по размеру, а во-вторых работают нормально. С чем это связано пока не понял. Все ключи для gcc в Makefile перенёс из CoIDE.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Эти исхоники? https://github.com/OculusVR/RiftDK1
Проект кокоса во видимому нормальный, потому что я его импортировал в EmBitz и скомпилировал. Залил в STM32F103C8T6. Устройство определяется компом как HID.
Возможно что-то не так с настройками кокоса.
Вложения
Tracker.hex
(146.85 КБ) 173 скачивания
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Re: STM32 новичку в ARM что к чему

Сообщение Serj_K »

Да, исходники эти. Вот и не понятно, что с кокосом, так как в проекте менялась только обработка сенсоров, все остальные настройки не трогались. В настройках самого кокоса вроде нет настроек, влияющих на компиляцию, только те, что в проекте.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Тогда компилируйте через Makefile или EmBitz.
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Re: STM32 новичку в ARM что к чему

Сообщение Serj_K »

Так через Makefile и компилирую. Но проблема-то есть и в принципе хотелось бы её решить.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

В чем проблема если проект компилируется?

Переустановите кокос с удалением всех файлов в т. ч. файлов настроек. Возможно это поможет. Причина может быть еще в том что изначально проект создавался в другой версии кокоса и возможно в ней отличаются настройки по умолчанию не входящие в проект, но влияющие на компиляцию.
Аватара пользователя
RusikOk
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение RusikOk »

подскажите как в iar посмотреть пределы типов данных double и float ?
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: STM32 новичку в ARM что к чему

Сообщение Galizin »

В документации на keil сказано
The following table gives the limits for floating-point numbers. These constants are defined in the float.h include file.
Скорее всего и для iar справедлив тот же include file.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: STM32 новичку в ARM что к чему

Сообщение aam »

Скажите, а можно ли в STM32F030 инвертировать сигнал, выдаваемый по MOSI (не только сами биты, но и чтобы в паузе 1 держалась)? Хочу нагружать вывод МК на открытый коллектор - неохота ставить 2 транзистора.
Ответить

Вернуться в «ARM»