STM32F4DISCOVERY, NUCLEO-F411RE, NUCLEO-F401RE DSP_StdPeriph

Тема в разделе "Флудилка", создана пользователем Alex19, 14 ноя 2014.

  1. Alex19

    Alex19 Гуру

    Для людей с опытом, данная заметка едва ли будет интересна. Но для людей только переходящих от 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, буду искренне рад.
     
    Megakoteyka и ИгорьК нравится это.
  2. Alex19

    Alex19 Гуру

    И под конец, таблица сравнения некоторых характеристик, делал для себя, поэтому не полное сравнение. Надеюсь будут силы дополнить, со временем.

    Пришлось задавать в теге 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 корпус.

    Надеюсь будет полезно.
     
    Megakoteyka нравится это.
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Многие (если не все) интерфейсы можно ремапить на другие ноги. Есть программа MicroXplorer, которая помогает в этом разобраться и даже генерит код начальной инициализации периферии.
     
    ИгорьК и Alex19 нравится это.
  4. ИгорьК

    ИгорьК Гуру

    Но есть и нечто, с названием 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."
     
    Alex19 нравится это.
  5. Alex19

    Alex19 Гуру

    Спасибо, что напомнили. Когда читал лабораторные работы, пытался поставить эту программу на рабочий ноут, выкидывала ошибку и не стал разбираться. Надо будет попробовать на другом или под виртуальной ОС.

    Не понял слово ремапить, Вы не можете повесить интерфейсы, на ноги которые для этого не предусмотрены.

    Или Вы имели ввиду, почти все интерфейсы, имеют несколько пар/групп ног на выбор, но не все. К примеру 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

    Отличный инструмент, надо попробовать
     
    Последнее редактирование: 16 ноя 2014
  6. Alex19

    Alex19 Гуру

    Поставил 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

    Сам их еще не смотрел, надо будет попробовать.
     
    ИгорьК и Megakoteyka нравится это.
  7. ИгорьК

    ИгорьК Гуру

    Кстати, что касается шаблонов настройки AVR, то несложный настройщик есть в CodeVision. С его помощью можно делать заготовки для ардуиновских проектов. Причем это работает и для бесплатной версии.
     
  8. Alex19

    Alex19 Гуру

    Знаком с этим инструментом, но не пользуюсь им. Он очень хорош, если нужно работать напрямую с регистрами. Но в проектах которых делал, лишь пару раз потребовалось быстрое переключение и опрос пинов.

    Просто писать на таком уровне, не вижу смыла, без необходимости.
    Код становится плохо читабельным, сложным в поддержке. Хорошо если в Ваш проект не большой, сделан и после этого не требует ни каких правок, дополнений. А если со временем выясняются его слабые стороны, которые нельзя было учесть, появляется новые требования и т.д.

    Пока, прервусь в изучении STM32F4, нужно сделать очень много чертежей, моделей и разобраться в разных нюансах видео, оптика т.д.

    Наконец-то появилась возможность сделать пару первых проектов для себя. Первый проект ROV, о котором грезил с первого знакомства с ардуиной. Второй попроще CNC на Ramps (гравер для плат:)), для дома, чтобы не ездить на работу и не занимать серьезное оборудование. Кстати Вы ИгорьК, и познакомили меня с такой возможностью.
     
  9. ИгорьК

    ИгорьК Гуру

    Что такое CNC на Ramps? Это плата управления станком?
    Просто хотел бы обратить внимание на эту ссылку, если ранее ее не давал.
     
    Последнее редактирование: 17 ноя 2014
  10. Alex19

    Alex19 Гуру

    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)
     
    Последнее редактирование: 17 ноя 2014
  11. ИгорьК

    ИгорьК Гуру

    Лазерный гравер? А что им можно делать в домашних условиях?
     
  12. Alex19

    Alex19 Гуру

    Даже не знаю, лазерный гравер мне нужен для тестов. Если получится надписи на некоторых полимерах, это решение на производство. Для маркировки.

    А для дома, некоторые выжигаю дерево, делают те же надписи.
     
  13. ИгорьК

    ИгорьК Гуру

    Не дадите ссылку на доступный лазер? Им можно фольгу на печатных платах жечь?
     
  14. Alex19

    Alex19 Гуру

    Пока еще не смотрел, это в планах.

    Они разные, в зависимости от мощности и технологии, есть которые сталь режут.



    UPD. Но сверлить наврятли.
    Это CO2, я говорил о самом простом.

    UPD2. CO2 40W станочек, размером с лазерный принтер стоил примерно около 1500$. Может сейчас дешевле посмотрите
     
    Последнее редактирование: 17 ноя 2014