STM32 новичку в ARM что к чему
-
Мурато Мяуконни
- Прорезались зубы
- Сообщения: 203
- Зарегистрирован: Сб ноя 19, 2016 21:05:48
Re: STM32 новичку в ARM что к чему
Писать целую статью от начала и доконца долго и ленно, многа букав. Вы если что не понятно - спросите, ответим.
Подпись убрал вместе с автором. aen
- Реклама
Re: STM32 новичку в ARM что к чему
Статью я не осилю в обозримом будущем эт точно, я имел виду что пол даташита через переводчик погоню.
Да и чувствую спрашивать буду ещё не раз.
Да и чувствую спрашивать буду ещё не раз.
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
По I2C мне очень помогла эта статья: http://easyelectronics.ru/interface-bus-iic-i2c.html + разумеется раздел I2C из RM0008.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: STM32 новичку в ARM что к чему
Я для работы с I2C выдернул драйвер из ChibiOS, но тогда там был только драйвер для работы в мастер-режиме. Slave пришлось импровизировать самому. Сделал все через DMA. Разобравшись с этим драйвером, плюс чтение мануала и у Вас все получится.
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
Ещё раз спасибо.
Alexey_N
Статейку кстати читал, оттуда и уверенность, что могу(со временем написать софтовый вариант)
Мне конечно более интересен именно железный I2C, вот по нём что то и ищу, а то открыл RM и вспомнил своего класного руководителя(словами которых редактор не знает) за то что меня на немецкий язык записал,хотя я просился на ангицкий, типо учебников больше не нашлось, было б легче с такими вещами хоть чутя.
Myp3ik
Эх я как дочитал что такое DMA в сочетании с прерываниями подумал "а чем вообще ядро у stm занимается" - в моих представлениях после настройки периферия может выполнять оооочень много задач даже не обращаясь к ядру(по началу посчитал скока нужно простой меге частоты для довольно простой задачи, которую хотел решить "в лоб" и пошол искать контроллеры по быстрее, поняв что может арм а вопросу выбора не возвращался более). Но надо сначала разобраться с тем, что будет обслуживать DMA.
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 что к чему
Кстати, коллеги, что-то я не нашел, какую максимальную частоту можно подать таймеру общего назначения на внешний вход? STM32F103, 72 МГц. Подскажите, плз, в какой ПДФ-ке и в каком месте это прописано?..
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Re: STM32 новичку в ARM что к чему
afz, 180МГц измеряли норм. См. по форуму reciprocal counter
- afz
- Опытный кот
- Сообщения: 744
- Зарегистрирован: Сб дек 22, 2012 08:17:42
- Откуда: Караганда, Казахстан
Re: STM32 новичку в ARM что к чему
Круто! Я надеялся, что, может быть, мегагерц 50 можно, а тут 180. Но это, как я понимаю, все-таки разгон, а штатно? 72?dosikus писал(а):180МГц измеряли норм. См. по форуму reciprocal counter
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Re: STM32 новичку в ARM что к чему
В даташите. По входу таймера не более половины тактирующей таймера, т.к. там присутствует синхронизация. По входу ETR - с делителем на 8 в 8 раз больше половины тактирующей таймера, это теоретический максимум.afz писал(а):Кстати, коллеги, что-то я не нашел, какую максимальную частоту можно подать таймеру общего назначения на внешний вход? STM32F103, 72 МГц. Подскажите, плз, в какой ПДФ-ке и в каком месте это прописано?..
Добавлено after 2 minutes 34 seconds:
Да нет, вроде. Никакого разгона. 72МГц как бы даже СТМ8С003 спокойно переваривают.afz писал(а):Но это, как я понимаю, все-таки разгон, а штатно? 72?
Re: STM32 новичку в ARM что к чему
Мурато Мяуконни
Ну я наверно не точно выразился, имелось ввиду, что можно снять много нагрузки с ядра. Ну типо периферия пинает DMA и на оборот DMA пинает периферию(типо АЦП отработал, выставил флаг, DMA увидел и перенёс данные в заранее оговоренное место), а ядро соответственно меньше раз прерывания устраивает(я по крайней мере понял так). При очень частом обращении к периферии смысл в таких ухищрениях ИМХО есть. И как вы правильно заметили за всё надо платить(увеличение потребления тока, занятость шин).
Ну я наверно не точно выразился, имелось ввиду, что можно снять много нагрузки с ядра. Ну типо периферия пинает DMA и на оборот DMA пинает периферию(типо АЦП отработал, выставил флаг, DMA увидел и перенёс данные в заранее оговоренное место), а ядро соответственно меньше раз прерывания устраивает(я по крайней мере понял так). При очень частом обращении к периферии смысл в таких ухищрениях ИМХО есть. И как вы правильно заметили за всё надо платить(увеличение потребления тока, занятость шин).
Re: STM32 новичку в ARM что к чему
Решил я опробовать MEMS сенсор MPU-9250. Скачал исходники Oculus Rift DK1 так как там используется похожий сенсор и STM32 в качестве контроллера. Исходники под CooCox. Так вот, заметил такую штуку - компилирую исходники в CoIDE - ошибок нет, но после записи прошивки в МК и подключении к ПК USB HID не находится, а эти же исходники, собранные через Makefile во-первых отличаются по размеру, а во-вторых работают нормально. С чем это связано пока не понял. Все ключи для gcc в Makefile перенёс из CoIDE.
Re: STM32 новичку в ARM что к чему
Эти исхоники? https://github.com/OculusVR/RiftDK1
Проект кокоса во видимому нормальный, потому что я его импортировал в EmBitz и скомпилировал. Залил в STM32F103C8T6. Устройство определяется компом как HID.
Возможно что-то не так с настройками кокоса.
Проект кокоса во видимому нормальный, потому что я его импортировал в EmBitz и скомпилировал. Залил в STM32F103C8T6. Устройство определяется компом как HID.
Возможно что-то не так с настройками кокоса.
- Вложения
-
- Tracker.hex
- (146.85 КБ) 173 скачивания
Re: STM32 новичку в ARM что к чему
Да, исходники эти. Вот и не понятно, что с кокосом, так как в проекте менялась только обработка сенсоров, все остальные настройки не трогались. В настройках самого кокоса вроде нет настроек, влияющих на компиляцию, только те, что в проекте.
Re: STM32 новичку в ARM что к чему
Тогда компилируйте через Makefile или EmBitz.
Re: STM32 новичку в ARM что к чему
Так через Makefile и компилирую. Но проблема-то есть и в принципе хотелось бы её решить.
Re: STM32 новичку в ARM что к чему
В чем проблема если проект компилируется?
Переустановите кокос с удалением всех файлов в т. ч. файлов настроек. Возможно это поможет. Причина может быть еще в том что изначально проект создавался в другой версии кокоса и возможно в ней отличаются настройки по умолчанию не входящие в проект, но влияющие на компиляцию.
Переустановите кокос с удалением всех файлов в т. ч. файлов настроек. Возможно это поможет. Причина может быть еще в том что изначально проект создавался в другой версии кокоса и возможно в ней отличаются настройки по умолчанию не входящие в проект, но влияющие на компиляцию.
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: STM32 новичку в ARM что к чему
подскажите как в iar посмотреть пределы типов данных double и float ?
Re: STM32 новичку в ARM что к чему
В документации на keil сказано
The following table gives the limits for floating-point numbers. These constants are defined in the float.h include file.
Скорее всего и для iar справедлив тот же include file.
The following table gives the limits for floating-point numbers. These constants are defined in the float.h include file.
Скорее всего и для iar справедлив тот же include file.
Re: STM32 новичку в ARM что к чему
Скажите, а можно ли в STM32F030 инвертировать сигнал, выдаваемый по MOSI (не только сами биты, но и чтобы в паузе 1 держалась)? Хочу нагружать вывод МК на открытый коллектор - неохота ставить 2 транзистора.


