Для людей с опытом, данная заметка едва ли будет интересна. Но для людей только переходящих от Arduino на STM32F4, возможно будет полезна. Ковыряюсь с STM32F4DISCOVERY, всем хороша плата, кроме размеров. Поэтому я нет, нет да посматриваю в строну NUCLEO-F4. Конечно STM32F4DISCOVERY производительнее, но она не всегда нужна. Пока в руках нет плат NUCLEO-F4, хотел приобрести и была оказия из Москвы, но увы в Амперке не было в наличии. И первый вопрос, который был поднят смогу ли я писать на полюбившейся мне библиотеке DSP_StdPeriph. Проблема в том, что STM32F4 впервые заставила меня если не изучать, то по крайней мере смотреть документацию микроконтролеров. Молодые скажут - лентяй, люди постарше, которые помнят и чтут традиции скажут – читать документацию стоит лишь тогда, когда у Вас ничего не получается. Впрочем, на формулировках не настаиваю. Итак все платы из одного семейства STM32F4. STM32F4DISCOVERY процессор STM32F407VG Более подробно Плата http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF252419 Микроконтроллер http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN11/PF252140 NUCLEO-F411RE процессор STM32F411RE Более подробно Плата http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260320 Микроконтроллер http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN1877/PF260049 NUCLEO-F401RE процессор STM32F401RE Более подробно Плата http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000 Микроконтроллер http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1577/LN1810/PF258797 Так вот у всех контролеров, одна и та же библиотека STM32F4xx_DSP_StdPeriph_Lib_V1.4.0. DSP and standard peripherals library на страницах ресурсов микроконтроллеров, для всех выше перечисленных ссылка идет сюда http://www.st.com/web/en/catalog/tools/PF257901 И не только этих микроконтроллеров, наверно всего семейства STM32F4, в файле STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include\ stm32f4xx.h Строки с 68. Код (Text): /* Uncomment the line below according to the target STM32 device used in your application */ #if !defined (STM32F40_41xxx) && !defined (STM32F427_437xx) && !defined (STM32F429_439xx) && !defined (STM32F401xx) && !defined (STM32F411xE) #define STM32F40_41xxx /*!< STM32F405RG, STM32F405VG, STM32F405ZG, STM32F415RG, STM32F415VG, STM32F415ZG, STM32F407VG, STM32F407VE, STM32F407ZG, STM32F407ZE, STM32F407IG, STM32F407IE, STM32F417VG, STM32F417VE, STM32F417ZG, STM32F417ZE, STM32F417IG and STM32F417IE Devices */ /* #define STM32F427_437xx */ /*!< STM32F427VG, STM32F427VI, STM32F427ZG, STM32F427ZI, STM32F427IG, STM32F427II, STM32F437VG, STM32F437VI, STM32F437ZG, STM32F437ZI, STM32F437IG, STM32F437II Devices */ /* #define STM32F429_439xx */ /*!< STM32F429VG, STM32F429VI, STM32F429ZG, STM32F429ZI, STM32F429BG, STM32F429BI, STM32F429NG, STM32F439NI, STM32F429IG, STM32F429II, STM32F439VG, STM32F439VI, STM32F439ZG, STM32F439ZI, STM32F439BG, STM32F439BI, STM32F439NG, STM32F439NI, STM32F439IG and STM32F439II Devices */ /* #define STM32F401xx */ /*!< STM32F401CB, STM32F401CC, STM32F401RB, STM32F401RC, STM32F401VB, STM32F401VC STM32F401CD, STM32F401RD, STM32F401VD, STM32F401CExx, STM32F401RE and STM32F401VE Devices */ /* #define STM32F411xE */ /*!< STM32F411CD, STM32F411RD, STM32F411VD, STM32F411CE, STM32F411RE and STM32F411VE Devices */ #endif Вывод, тем, кто начинает работать с DSP_StdPeriph и STM32F4DISCOVERY (или другой платой STM32F4) вероятно без видимых проблем перейдут на любой из микроконтроллеров STM32F4, хотя от чтения документаций увы не избавит. Для вышеперечисленных плат семейство одно, а серии разные STM32F407/417, STM32F411, STM32F401. Кроме этого, из описания STM32F401 и из STM32F411 И так, для многих микропроцессоров STM32F4. Если вы пишите общий код или библиотеку, вы можете вставлять следующий код для проверки Код (Text): #if defined (STM32F40_41xxx) // STM32F411RE, Полный список смотрите выше #endif #if defined (STM32F411xE) // STM32F411RE, Полный список смотрите выше #endif #if defined (STM32F401xx) // STM32F401RE, Полный список смотрите выше #endif Другими словами я ответил себе на вопрос, а не связываюсь ли я с какой-то уникальной платой. Оказывается связался с целым семейством STM32F4. Кроме этого смотрел коды от STM32F3 та же DSP, все знакомо и приятно. Надеюсь и в новых семействах этой фирмы, будет сохранятся преемственность. Возможно кому-то будет полезно и подтолкнет к изучению STM32F4, буду искренне рад.
И под конец, таблица сравнения некоторых характеристик, делал для себя, поэтому не полное сравнение. Надеюсь будут силы дополнить, со временем. Пришлось задавать в теге CODE разницу табами, в редакторе нет таблиц. Код (Text): STM32F407VG STM32F411RE STM32F401RE 168 MHz 100 MHz 84 MHz 210 DMIPS 125 DMIPS 105 DMIPS Количество итераций в секунду. 1 MB Flash 512 KB Flash 512 KB Flash 192 KB RAM 128KB RAM 96KB RAM Выведены все ножки от микроконтроллера 82 GPIOs 50 GPIOs 50 GPIOs 3 ADC (12bit) ADC (12bit) ADC (12bit) 16 Analog In 16 Analog In 16 Analog In Все платы, обладают ADC производительность 2,4MSPS. У STM32F407VG есть возможность объединять 2 или 3 вместе ADC, для увеличения производительности до 4,8 (2) и 7,2MSPS (3). 2 DAC (12) - - 2 Analog out - - Timers 10 General 7 General 7 General 2 Advanced 1 Advanced 1 Advanced 2 Basic - - 16-stream DMA 16-stream DMA 16-stream DMA 3 SPI 5 SPI 3 SPI 3 I2C 3 I2C 3 I2C 2 I2S 5 I2S 2 I2S Еще какая-то последовательная шина. Если любопытно https://ru.wikipedia.org/wiki/I%C2%B2S. Мне еще не попадалась такая перефирия. 2 CAN - - Что это и зачем, пока не понятно. Возможно это Controller area network (CAN). SDIO SDIO SDIO Тоже не понятная вещь, предположу, что Secure digital input/output interface (SDIO). DCMI - - Интерфейс камеры. Не нашел у NUCLEO-F4. 4 USART 3 USART 3 USART 2 UART - - 2 USB USB OTG FS USB OTG FS Не уверен, насчет второго у STM32F407VG. 10/100 Ethernet - - Там еще очень много чего, тот же процессор криптографии, генератор случайных чисел, RTC и т.д. это у STM32F407VG. Чтобы узнать, точно, что есть придется смотреть мануал к конкретному микропроцессору. Данные брал из документации, много еще интересного нужно изучить. Да и не мечтайте, как я в свое время, что вы можете использовать все сразу. Многие ноги уже определены, те же USART и т.д.. Распиновку можно найти STM32F407VG http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00037051.pdf Со страницы 45, для STM32F4DISCOVERY смотрите LQFP100 корпус. STM32F411RE http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00115249.pdf Со страницы 38, для NUCLEO-F411RE смотрите LQFP64 корпус. STM32F401RE http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00102166.pdf Со страницы 37, для NUCLEO-F401RE смотрите LQFP64 корпус. Надеюсь будет полезно.
Многие (если не все) интерфейсы можно ремапить на другие ноги. Есть программа MicroXplorer, которая помогает в этом разобраться и даже генерит код начальной инициализации периферии.
Но есть и нечто, с названием STM32CubeMX, который "is an extension of the existing MicroXplorer tool. It is a graphical tool that allows configuring STM32 microcontrollers very easily and generating the corresponding initialization C code through a step-by-step process."
Спасибо, что напомнили. Когда читал лабораторные работы, пытался поставить эту программу на рабочий ноут, выкидывала ошибку и не стал разбираться. Надо будет попробовать на другом или под виртуальной ОС. Не понял слово ремапить, Вы не можете повесить интерфейсы, на ноги которые для этого не предусмотрены. Или Вы имели ввиду, почти все интерфейсы, имеют несколько пар/групп ног на выбор, но не все. К примеру USART3 имеет возможность выбора из 3 разных вариантов подключения. А UART5 только 1 группу. MicroXplorer, описание на русском для интересующихся http://chipspace.ru/stm32-microxplorer-source-code/ Поддержка линеек STM32F1, STM32F2, STM32F4, STM32L Это обновление MicroXplorer (на русских сайтах) или расширение MicroXplorer (написано у Вас, взято с сайта), хотя может мой анг. меня повел. Описание на русском http://habrahabr.ru/post/213561/ Поддержка линеек STM32F0, STM32F2, STM32F3, STM32F4, STM32L0, STM32L1 Отличный инструмент, надо попробовать
Поставил STM32CubeMX. Это обновление MicroXplorer, существует в 2 вариантах, отдельная программа и плагин для Eclipse. Программа состоит из 4 закладок. 1. Настройка портов 2. Настройка тактирования. 3. Дополнительные настройки DMA т.д. 4. Расчет потребления. После всех необходимых настроек, можно перенести все настройки создав проект в нужной нам среде. Сделав пару настроек, без проблем перенес их в Keil μVision 5.0 Очень хорошо описано в данной статье, о ней упоминал, но повторюсь http://habrahabr.ru/post/213561/ Превосходный инструмент, который пригодится всем. Хотелось бы сказать спасибо Megakoteyka и ИгорьК за то, что указали на замечательный инструмент! Теперь все настройки в одной программе, наглядно и просто, без поисков по мануалам. И еще пару слов o DSP. В папке, есть шаблоны проектов 3 разных сред EWARM, TrueSTUDIO, MDK-ARM(Keil μVision) STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates А в этой папке большое количество примеров STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Examples Сам их еще не смотрел, надо будет попробовать.
Кстати, что касается шаблонов настройки AVR, то несложный настройщик есть в CodeVision. С его помощью можно делать заготовки для ардуиновских проектов. Причем это работает и для бесплатной версии.
Знаком с этим инструментом, но не пользуюсь им. Он очень хорош, если нужно работать напрямую с регистрами. Но в проектах которых делал, лишь пару раз потребовалось быстрое переключение и опрос пинов. Просто писать на таком уровне, не вижу смыла, без необходимости. Код становится плохо читабельным, сложным в поддержке. Хорошо если в Ваш проект не большой, сделан и после этого не требует ни каких правок, дополнений. А если со временем выясняются его слабые стороны, которые нельзя было учесть, появляется новые требования и т.д. Пока, прервусь в изучении STM32F4, нужно сделать очень много чертежей, моделей и разобраться в разных нюансах видео, оптика т.д. Наконец-то появилась возможность сделать пару первых проектов для себя. Первый проект ROV, о котором грезил с первого знакомства с ардуиной. Второй попроще CNC на Ramps (гравер для плат), для дома, чтобы не ездить на работу и не занимать серьезное оборудование. Кстати Вы ИгорьК, и познакомили меня с такой возможностью.
Что такое CNC на Ramps? Это плата управления станком? Просто хотел бы обратить внимание на эту ссылку, если ранее ее не давал.
CNC то ли, жаргон, то ли название на западе. ЧПУ, с Mega+RAMPS+A4988 от 3D принтера. http://reprap.org/wiki/RAMPS_1.4/ru Механику планирую от CoreXY http://www.corexy.com/corexyr1/index.html Да давали, тогда у меня был в планах серьезный станок. На нормальном контролере + Сервы + шлифованные ШВП. Но увы проект, не пошел. А сейчас хочу сделать, дешевый станочек, габаритов не больше струйного принтера. UPD. Со сменной головой, для возможной установки лазерного гравера. UPD2. CNC это и есть ЧПУ (сокр. ЧПУ; англ. computer numerical control, сокр. CNC)
Даже не знаю, лазерный гравер мне нужен для тестов. Если получится надписи на некоторых полимерах, это решение на производство. Для маркировки. А для дома, некоторые выжигаю дерево, делают те же надписи.
Пока еще не смотрел, это в планах. Они разные, в зависимости от мощности и технологии, есть которые сталь режут. UPD. Но сверлить наврятли. Это CO2, я говорил о самом простом. UPD2. CO2 40W станочек, размером с лазерный принтер стоил примерно около 1500$. Может сейчас дешевле посмотрите