Программирование 32-х разрядных МК
- Войдите на сайт для отправки комментариев
Пнд, 29/02/2016 - 08:02
Всё больше народу на форуме интересуется микроконтроллерами STM32( и не только), давайте же делиться опытом, идеями, проетами!
Начну с себя.
Конфигурация IDE: EmBitz IDE + ST-Link Utility
UPD: перешел на Keil-MDK v4.74
UPD: Keil v5.21
Пишу:
- для STM32F030 - CMSIS
- для EFM32ZG - CMSIS
Работаю с линейкой f10x и f4xx. Сначала купил NUCLEO на 103rbt, продолжил 103с8t6, 103vet, 303с8t6, 407vg и 429zg. Сейчас купил с 10 плат под 48 и 144 выводные мк, спаял платки на 103с8t6 и 429. Сижу экспириментирую, изучаю. Что удалось. Запустил tft по fsmc и SPI, понял принцип работы DMA, Разобрался с работой CAN и его фильтрами. Подключил энкодер и в софтовом и в хардовом режиме. Поковырял таймера. Попробовал как записывать и изменять память внешней SPI EEPROM 25w128. Жду SRAM 8 Мбайт и NAND flash 1 Мбайт. Про PWM, DAC, USB что то вразумительное пока сказать не смогу. Использую Keil и CooCox SPL, использовать в чистом виде CMSIS считаю не целесообразно, но ознакомится не помешает.
Веду работу по созданию чего то похожего на видяху. Железо stm32f429, первончально 8 метров SRAM, потом попробую SDRAM. Flash spi 128 Mbit или параллельная 16 bit на 1 метер. Должно получиться достаточно шустрая штука. В Nextion ставят stm 72 МГц, у 429 тактовая частота 180 МГц.
Ничегоси!
А я таки попробовал влезть в Keil, получил бесплатную лицензию для МК STM32F0xx, правда, свой F4P6 нашёл только в версии 4.74. В Em::Blocks было полегче, но надо б переходить на общепризнанные инструменты.
На просторах интернета можно найти таблетку к Keil снимающую ограничение на размер компилируемого кода. Тогда можно работать с любым контроллером без ограничений. Что касается использования библиотек чипов не вошедших в 5 версию Keil, то нужно при создании проекта отказаться от автоматического создания проекта и создать дерево проекта самому. Как это сделать есть множество статей в интернете.
Пришла SRAM память. Буду пробовать что получится в итоге.
:((( Наткнулся на грабли. Похоже FMC в 429 упорно не хочет работать с SRAM и TFT. На днях прийдет 407ZGT буду пробовать его. Потеря 12 МГц в такте плохо, но не критично.
Терпение и труд сделали свое дело. Оказалось что проверять работу SRAM в пошаговом режиме нельзя, видимо сбиваются временные интервалы. В режиме дебага, когда функции записи и чтения в SRAM отрабатывают без остановок все записывается и считывается. Продолжкю рыть дальше.
UPD: Прикрутил ST7735 к STM32F030 через SPI (пока что программный). Портировал пару функций из Adafruit_GFX, теперь могу рисовать окружности и линии) Вот и проблема с килем - нет win1251 в 4.74 версии. А у меня под неё всё заточено:(
В 5.17 есть 1251
Вот пример инициализации на stm32f4 для spi и i2c
UPD: Прикрутил ST7735 к STM32F030 через SPI (пока что программный). Портировал пару функций из Adafruit_GFX, теперь могу рисовать окружности и линии) Вот и проблема с килем - нет win1251 в 4.74 версии. А у меня под неё всё заточено:(
У меня проблемм с кирилицей не возникло, перенес Adafruit на С, взял файл знакогенератора со своего проекта от arduino и все работает. Вывожу текст и по русски и по английски. Добил функции преобразования string to float и float to string.
kisoft, я знаю. Но хочу 4ю версию. Значит, буду на забугорном все писать/выводить)
Я перенес из своего проекта на f103 с Em::Bitz. Было для 1251 сделано, переделать на UTF надо.
Yarik.Yar , посмотрел библиотеку на stm32f030. Порадовал spi, там очень широкий список по ширине пердачи от 4 до 16 bit. Надо взять на заметку, потому как есть не мало перефирийных микросхем с нестандартной шириной передачи. Вот так не подозревая ни чего, узнаешь что то новое. Спасибо.
Периферия у f0 новее и продвинутее, чем у f1. Часто f030 удобнее использовать, хоть он и слабее f103, если сравнивать в лоб.
Периферия у f0 новее и продвинутее, чем у f1. Часто f030 удобнее использовать, хоть он и слабее f103, если сравнивать в лоб.
Я мучаю stm32f429, f0 мне интересен только из за spi. Есть минус, нет USB.
Приехала Flash память на 1Мбайт 16 бит. Установлю на плату. Теперь все составляющие для проекта в сборе.
Я мучаю stm32f429,
Пардон. В одном из последних сообщений упоминался f103 и видно я на него засмотрелся. :)
Куда ж девался? Есть и юсб там у моделей постарше.
a5021, городить несколько многоножек (100 и более) в одном устройсве мовитон. А так мне и 030c8t6 хватит, тем более платки пустые под 48 ног лежат. Соберу и в путь.
Продолжаю рыть под Extern SRAM. Наконец заставил проц без ошибок сохранять в нее буффер. Мозг пришлось поломать, прочитать кучу бесполезных монологов "профи". Ответ не нашел пока не углубился в доки и примеры от производителя ST. Теперь у проектируемого модуля 8 с гаком метров RAM. С Flash прийдется делать платку, на купленной плате оказалась разводка под NAND.
Пишу в stm32f103c8t6 под иде 1.6.5 . Есть бага при работе с динамическим распределением памяти. Обявляю буфер на 10-12кБ статический - ок, вместо него пробую динамический - вроде память выделяет, но при взаписи в неё ребутится. Воще этот STM - х..ня, от железа и до софта. Похож на тарифы оператора мобильной связи - обещает золотые горы, но надо читать сноски мелким шрифтом, а на деле ещё хуже будет.
Х..ня это писать для STM в Arduino IDE... Мыши плакали, кололись, но продолжали жрать кактус... Для STM пишут в нормальных средах типа Keil, IAR, Eclipse и основаных на ней CooCox, Atollic TrueSTUDIO, AC6 System Workbench.
Stm хорошая платформа для разработок. Большой набор пириферии. Главное грамотно ее настроить.
Arduino IDE наше Фсё, лучше извратиться, сожарться кактус, чем использовать нормальные среды. Это точно, ЗАЧЕМ?
Например, Keil, бесплатный до 32 КБ кода. Для начала - убиться и не встать, вполне достаточно.
Впрочем, ладно, как угодно
К Keil есть таблетко. Пользуюсь полноценно. Все путем.
Таблетками не пользуюсь. M0 бесплатно независимо от размера, официально, а я как раз его и юзаю.
Х..ня это писать для STM в Arduino IDE... Мыши плакали, кололись, но продолжали жрать кактус... Для STM пишут в нормальных средах типа Keil, IAR, Eclipse и основаных на ней CooCox, Atollic TrueSTUDIO, AC6 System Workbench.
Х..ня это еще и указывать кому в чем писать. Я изложил о факте обнаруженого бага. Причем на форуме ардуино в сренде ардуино. Пишу на чем считаю нужным. И ты пиши на чем хош, хоть на стене параши, но только и отзывы туда же.
"Воще этот STM - х..ня, от железа и до софта" - твои слова? А теперь покажи мне, где на сайте STM написано про Arduino IDE. Вот официальный список софта (для STM8 и STM32), тут есть Arduino IDE? Ты чутка ошибся на кого гнать надо. Предъявляй свои претензии тем пейсателям, которые криво реализовали поддержку STM в Arduino IDE.
Официальной поддержки Adrduino камням STM не осуществляет. И не чего ругаться. А для нормальной работы STM надо правильно инициализировать камень, иначе все будет работать криво. А использовать для этого надо не ниже CMSIS библиотеки.
Я немного продвинулся в изучении F030: портировал свою библиотеку для ST7735, сначала использовал SPL, потом переписал через регистры. Собираю себе набор дефайнов, уже написал для GPIO и для SPI, с ними инит удобнее, чем с SPL.
Ах да, еще пробовал играться с PLL: до 96МГц без проблем (при 48 официальных). Дальше не очень работает, дисплей не показывает даже при делителе частоты SPI в 256. Думаю, камень-то может работать, а с периферией уже рассинхрон прёт...
Yarik.Yar Если ты любитель экстрима, говорят что в нем еще и флеша вдвое больше, чем в ДШ написано. Только это для себя, поиграться, разве что, официально только 32. Я не пробовал, не было нужды.
Угу.
Официально в нём только 16, неофициально - 32, а еще читал на изиэлектроникс, что может быть USB, как в F072.
Руки не доходят потестить...
В своё время в Леонардо (Atmega32U4) был найден не описанный в его ДШ таймер (TIM2) ;) И он работает! Так что всё может быть.
Yarik.Yar, не думаю что и флеша в два раза больше, и USB присутствует. Практика показала что SPL одинакова для всей линейки контроллеров одной серии. Написать можно программу, а вот при дебаге или в реале работать не будет. Писал простенькую прогу Blink для 103rbt, затем залил в 103с8е6 и все работало. Для того что бы понять больше памяти или нет, берем пример прошивки под семейство большего чем 16 К и заливаем, все сразу станет ясно. Так же и с USB, из папки библиотека/примеры берем пример от 072 и зашиваем в 030. Если заработает, то значит действительно он присутствует.
32 что есть - уже подтверждено. Не мной, но и я собираюсь.
USB буду сам пробовать.
Походу умерла темка та. Жаль....
Темка может и умерла, а контроллерами ещё занимаюсь, конкретно - нулевой серией. Почти со всей периферией уже поработал, собрал набор своих макросов, есть пара своих же библиотек.
Думаю так - израсходую весь свой запас AVR и полностью перейду на STM32F030xxxx)
Давно уже пора было. А то так можно стать последним из АВР-могикан. ))))))))
Ну и мне было скучно и прикупил себе стм 32...., авр как то древне хотя и надежно и легко.
но стм быстрее, но вот тут вопрос!!
А кто авр или стм будет в ближайшем будущем?
АВР занял свои позиции, чего незнаю про стм.
Конечно надо осваивать все направления. Но маловато информации и сложновато получается.
По началу сложнова то конечно. Но в целом не на много. Думаю имеют место быть и AVR и ARM. Для задачи типа помигать светодиодом. пощелкать релюшками, управлять символным или монохромным LCD более чем достаточно для AVR. А вот работать с TFT, особенно с большим разрешением уже многовато для AVR. Опять же в STM столько железных плюшек. Куча многофункциональных таймеров, шины управления памятью SRAM, SDRAM, внешней flash с шиной 16 bit, CAN, ADC, DAC, DMA от 7 потоков, 32 разрядная внутренняя шина, 16 бит порты. Перичислять можно долго. Из практи могу сказать, портировать библиотеки AVR на STM также не составляет труда. Так что разработка программы для STM может занять меньше времени чем кажется. Вот неплохие видео уроки посмотрев которые можно получить ответы на многие вопросы по STM https://www.youtube.com/watch?v=Qqk81seMlHA
Не пользую, но уже присматриваюсь что закупить. Правда больше к Атмеловскому АРМ .. в нем периферия покузявей и производительность повыше чутка (5 против 3.5 Core/Mhz) особенно для старших моделей STM32. Да и Микрочип явно эту линейку Атмела не выбросит на помойку .. своих-то приличных нету.
уже присматриваюсь что закупить. Правда больше к Атмеловскому АРМ ..
Ну-ну!
Вот вас гвоздями к атымэлу то прибило. )))))))))))))
Микрочип пригреб к себе Atmel. На официальном сайте Atmel красуется логотип микрочипа рядышком с логотипом Atmel. Для меня это был шок, когда узнала. Сortex тоже нравится.
Ну сейчас у Atmel выше быстродействие. У 4 линейки atmel тактовая 120 МГц, а у stm от 84 до 180, если забыть о USB можно настроив тактовую и шины разогнать до 240. И чего такого есть в atmel чего нет в stm. Э..... Есть у atmel FMC SDRAM, чего то я не припоминаю такого. Практически все 100 пиновые stm поддерживают шину управления паралльными 8/16 бит TFT, используя DMA вообще можно свести к минимуму нагрузку на ЦП при работе с TFT. Как бы это MicroChip не изгадил концепцию Atmel. как понаделают сраничной flash, понапихают дополнительных операторов в asm и пиши пропало. Будет ARM от MicroChip работать как ATmega 8 на кварце 4 МГц.
Судя по холиварам и обсуждениям во многих местах, Микрочип как раз и приобрел Атмел из-за этой линейки АРМ и сильно сомневаюсь, что он её похерит. А по производительности старшие модели Атмела делают СТМ "как стоячего" (тоже много холиваров и обсуждений), а по управлению периферией пока, читая даташиты (своего нет ни того ни иного) - вижу у Атмела традиционный "меговский" подход в отличии от "тут рыбу заворачивали, а тут аннушка масло пролила" от СТМ.
Ну и если честно, то доверия к СТМ у меня нет ни в одном глазу .. слишком витеевато прописано в даташитах многое - не сразу допирает "что тут это не так". В частности, уже обсуждали частоту МК и производительность. Как понимаю, врядли от STM32F103 можно получить производительность более 6 DMIPS "в принципе" .. даже x-меги дают больше (где-то видел 20). Лично меня - впечатлило и до сих пор не вижу аргументов от любителей говна, пардон СТМ, чтобы оно оказалось "не так" .. дутые цифирьки, сильно дутые. В отличии от Атмела.
В целом, мне больше интересно опробовать X-мегу, но пока не знаю, можно ли прикрутить к ней какой-нибудь CH340G чтобы программировать через USB с компьютера из под avrdude (так бы уже давно приобрел и поигрался). Вроде как avrdude поддерживает икс-меги начиная с версии 5.10 .. но, пока так и не понял можно ли как-то прикрутить одно к другому.
Архат, вы сравниваете муху со слоном. Серия 103 - практически первенец, а первый блин комом. Сравнивая старшие модели хмег с 103 серией, вы ничего не доказываете...
Я ничего и не хочу доказывать. Просто высказал свое личное ИМХО почему лично у меня сформировалось предубеждение и недоверие к продукции СТМ "в целом" .. просто не желаю изучать варианты дерьма. Особенно когда есть выбор. Только и всего. во времена тутошнего холивара я очень надеялся что кто-то из любителей покажет мне - "недотепе" что это конфетка .. вышло как раз наоборот. Увы.
И это никоим образом не мешает вам использовать то, что вам больше нравится, знаете или дешевле. Что называется выберите 2 из трех. :)
Xmega отрыжка atmel в пику stm8, не тупите Архат, при тактовой частоте в 32 МГц она только в режиме мигалки может тягаться с stm. А вы пробовали использовать stm? Думаю нет! А главный аргумент это цена при возможностях камня. Приведите мне хоть десяток сайтов по ARM atmel, думаю облом. А stm хоть отбавляй, что однозначно говорит в пльзу stm и колличеству используещих даный камень. К стати есть еще другие производители ARM. К тому же с stm можно работать обращаясь прямо к регистрам всей перефирии используя CMSIS, что оптимизирует работу программы. Вобщем пользуйте то что вам нравится и понятнее, особенно имея ввиду arduino, с кастрированным C++.
Вы навалили кучу всего не удосужившись вчитаться в написанное. Сожалею, если обидел чем-то конкретно Вас, не планировалось ни как.
Давайте попробую разгрести вашу кучку в знак примирения:
1. Xmega в пику или нет - мне лично пофигу. А как камень меня она прельщает своим ДМА и вменяемо-управляемой периферией. Жаль, что Атмел наступил на классические грабли убрав из этого камня возможность его простого программирования через USART .. это было сильной ошибкой. Только и всего. Ваш опус говорит только о том, что Вы конкретно с этим камнем не работали, впрочем как и многие тут и я тоже в том числе. Но, в отличии от Вас - похоже мне лучше удается чтение даташитов и он вызывает у меня стойкий интерес уже на протяжении года, а снижение его цены - провоцирует этот интерес ещё дальше. А знание того факта что на нем строят вполне промышленные системы и разработчики с вопросами по форумам НЕ НОСЯТСЯ .. только подливает масла в огонь любопытства. :)
2. Уже не однажды писал что не пробовал .. ваш вопрос - риторический. Аргумент - вполне себе аргумент при ряде обстоятельств .. это не мои обстоятельства в конкретном случае. Но, они имеют место быть по жизни и тот кто в них попадает - вполне вправе использовать то, что на рынке дешевле, даже в ущерб стоимости разработки (негры часто и вовсе бесплатны, особенно если это ты сам) и/или функциональности. Всё зависит от "внешних факторов". Также, выше уже было отписано: что УЖЕ И НЕ БУДУ пробовать в силу возникшего предубеждения. И ваши гимны - ситуацию не исправят ни разу (так, ежели вчё).
3. Количество ресурсов по обсуждению и количество задаваемых на них одних и тех же вопросов говорит только о проблемности работы с камнем. Хорошим камнем народ тупо пользуется и не задает дурацких вопросов, часто одних и тех же. Если вы посчитали это аргументом "в пользу", то для меня это как раз аргумент "против". Идеальный камень - тот, где разъяснений на сайте производителя ДОСТАТОЧНО для работы с ним и вопросы в Сети - не вознивают вовсе.
4. Да, у ардуино есть wiring, который есть "кастрированный С++" .. на самом деле в общем-то "чистый С/С++" с кривыми библиотеками .. но, Вас никто не заставляет ими пользоваться. Очень даже легко писать "с нуля" и на чистом языке .. порог вхождения близок к нулю для знающего язык и умеющего читать даташит на камень. Даже поверхностно читать. Не требуется в общем-то НИКАКИХ специальных средств. в отличии от СТМ. И Ардуино ИДЕ - по сути просто распиаренный "блокнот", не особо востребованный в разработке (свои последние изменения в библиотеке делал и вовсе в PHPStrom).
5. Да, в мире существует много производителей АРМ камней и ВСЕ ОНИ лучше чем СТМ. Это и есть причина по которой покупать конкретно СТМ уже не вижу никакого смысла для себя лично (напомню, у меня не стоит засада "дешевле").
1. Xmega в пику или нет - мне лично пофигу. А как камень меня она прельщает своим ДМА и вменяемо-управляемой периферией.
Никого не прельщает, только вас, товарищ прапорщик. ))))))))))
3. Количество ресурсов по обсуждению и количество задаваемых на них одних и тех же вопросов говорит только о проблемности работы с камнем. Хорошим камнем народ тупо пользуется и не задает дурацких вопросов, часто одних и тех же. Если вы посчитали это аргументом "в пользу", то для меня это как раз аргумент "против". Идеальный камень - тот, где разъяснений на сайте производителя ДОСТАТОЧНО для работы с ним и вопросы в Сети - не вознивают вовсе.
Судя по вашим аргументам, мега самая проблемная и говнячая. )))))))))))))
4. Да, у ардуино есть wiring, который есть "кастрированный С++" .. на самом деле в общем-то "чистый С/С++" с кривыми библиотеками .. но, Вас никто не заставляет ими пользоваться. Очень даже легко писать "с нуля" и на чистом языке .. порог вхождения близок к нулю для знающего язык и умеющего читать даташит на камень. Даже поверхностно читать. Не требуется в общем-то НИКАКИХ специальных средств. в отличии от СТМ.
Не сравнивайте кубики для дебилов и нормальный инструмент для разработок. О каких специальных средствах идёт речь, о мозгах? )))))))))))
5. Да, в мире существует много производителей АРМ камней и ВСЕ ОНИ лучше чем СТМ. Это и есть причина по которой покупать конкретно СТМ уже не вижу никакого смысла для себя лично (напомню, у меня не стоит засада "дешевле").
"ВСЕ ОНИ лучше чем СТМ" это как, просто ваша отсебятина? )))))))))))
В ларьке через дорогу 030-е чуть-чуть подешевели, радует! А вы и дальше можете захлёбываться своей рвотой и испражнениями.
ssss , про дебилов вы конечно погорячились. Ну не может процентов 90 подростков лет 7 -10 глубоко знать языки програмирования высокого уровня, как стартовый вариант IDE arduino в самый раз.
Что касается пробовал или нет Xmega, пробовал но под мои задачи не подошел. Архат, если бы вы читали внимательно даташиты и статьи по ARM, то знали бы что все они, неважно кто их изготовил, имеют одну архитектуру. Этого требует лицензионное соглашение.