====== STM32 и проч. embeded ====== ===== IDEs ===== * [[https://habrahabr.ru/post/325450/]] Eclipse + GNU ARM * упоминается qt+ qds * [[https://community.particle.io/t/tutorial-using-eclipse-st-link-v2-openocd-to-debug/10042| Tutorial: Using Eclipse + ST-LINK/v2 + OpenOCD to debug]] * [[https://gnu-mcu-eclipse.github.io/debug/openocd/]] * [[https://bravikov.wordpress.com/tag/gnu-arm-eclipse/]] * [[http://www.riuson.com/blog/post/setup-eclipse-stm32cubemx-on-windows]] * [[http://we.easyelectronics.ru/STM32/stm32cubemx-start-code-eclipse-bystryy-start-otladka-v-eclipse-cherez-st-link-discovery.html]] * [[https://www.carminenoviello.com/2015/06/04/stm32-applications-eclipse-gcc-stcube/|Build STM32 applications with Eclipse, GCC and STM32Cube]] * [[https://habrahabr.ru/post/191468/|EmBlocks — IDE для STM32]] * [[http://www.st.com/en/embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961|STM32 Embedded Software]] * [[http://www.st.com/en/embedded-software/stsw-stm32121.html|STSW-STM32121 - STM32F10x, STM32L1xx and STM32F3xx USB full speed device library (UM0424)]] * [[http://www.st.com/en/embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961|STM32 Embedded Software]] * [[http://www.cmx.com/cmx_usb.htm|CMX-USB]] - III-party USB library. The *CMX-USBH-PL* class driver enables USB printers to be attached to an embedded host which generates pages in the PCL5 format. * [[https://rtos.com/solutions/usbx/|EXP-USB]] - exptresslogic ([[http://rtos.com|rtos.com]]) * [[https://www.hcc-embedded.com/embedded-systems-software-products/embedded-usb-driver|HCC-USB]] * [[http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32046.html|STM32F105/7, STM32F2 and STM32F4 USB on-the-go Host and device library (UM1021)]] - ST * [[https://www.highintegritysystems.com/middleware/usb-connect/|WITT-MW]] * [[http://www.ecoscentric.com/middleware/usb.shtml|eCC-USB]] * [[http://www.st.com/en/embedded-software/stm32cube-embedded-software.html?querycriteria=productId=LN1897|STM32Cube Embedded Software]] * [[http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef2.html|STM32CubeF2]] - UM1734: STM32Cube USB device library & UM1720: STM32Cube USB host library * [[http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-embedded-software/stm32cubef4.html|STM32CubeF4]] - UM1734: STM32Cube USB device library & UM1720: STM32Cube USB host library * [[https://habrahabr.ru/post/236401/|Разбираем и собираем обратно стек USB]] * [[http://www.beyondlogic.org/usbnutshell/usb1.shtml|USB in a NutShell]] * [[http://microsin.ru/content/view/1107/44/|превод]] * [[http://www.usbmadesimple.co.uk/|USB Made Simple]] * [[https://habrahabr.ru/post/310742/|Начинаем работать в STM32CubeMX. Часть 1]] - полезные советы в комментах, в тч и про qt * [[https://habrahabr.ru/post/323674/|Начинаем работать в STM32CubeMX. Часть 3]] - про USB * то хотел бы поделиться одной занимательной литературой: "Mastering STM32" от Carmine Noviello [не реклама]. Книга свежая, 2016 года, поэтому описание строится на основе "куба" и HAL. На мой взгляд, материал очень доступен и понятен (читается легко), с ясными иллюстрациями — хороший вариант для старта. * [[https://geektimes.ru/post/255336/|Как надо дружиться с STM32]] ===== Другие библиотеки ===== * [[http://libopencm3.org]] * http://libopencm3.org/docs/latest/stm32f4/html/modules.html * https://github.com/libopencm3/libopencm3/wiki ==== qt creator ==== * [[http://we.easyelectronics.ru/STM32/razrabotka-dlya-stm32f4discovery-s-pomoschyu-mbed-v-qtcreator.html|Разработка для STM32F4Discovery с помощью mbed в QtCreator]] * [[http://nutsboltman.blogspot.ru/2016/07/qtmbed.html|Программируем микроконтроллеры используя Qt+mbed]] - проблемы с версией позднее 5.4.1 * [[http://robocraft.ru/blog/ARM/3479.html|От Arduino к STM32]] - есть полезные ссылки и примеры ручного запуска openocd * [[https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/advanced/exporters/]] * [[https://docs.mbed.com/docs/mbed-os-handbook/en/5.5/debugging/other_ides/]] * * [[https://www.bartslinger.com/qtcreator/stm32cubemx-cmake-and-qtcreator/|STM32CubeMX, CMake and QtCreator]] **CMake!!!** ===== SWD, JTAG ===== * [[http://embedded-lab.com/blog/stm32-programming-tips-and-tricks/]] ===== USB ===== * [[https://community.st.com/thread/41880-stm32f7-hs-over-fs-usb]] - упоминается ''GPIO_InitStruct.Alternate = GPIO_AF12_OTG_HS_FS;'' * [[https://www.youtube.com/watch?v=DuxySazq3AY|Программирование микроконтроллеров STM32. УРОК 36. HAL. USB. Host. Mass Storage Class. Часть 1]] на Youtube. Упоминается PC0 = GPIO_Output * [[http://evenlund.blogspot.ru/2016/10/usb-storage-with-stm32f4-discovery-and_58.html|USB storage with STM32F4-Discovery and CubeMX]] - так же про PC0 = GPIO_Output * [[https://github.com/autosportlabs/uubt/tree/master/src/STM32_USB-Host-Device_Lib_V2.1.0/Project|USB_Host_Examples v2.1.0]] ==== Реализации USB Host для arduino и пр. ==== * [[https://github.com/harlequin-tech/arduino-usb/tree/master/LUFA/Drivers/USB/Class/Host|Реализация USB HOST для Arduino]] * [[http://www.fourwalledcubicle.com/files/LUFA/Doc/170418/html/group___group___u_s_b_class_printer_host.html|LUFA Library]] - USB library for the USB-enabled AVR microcontrollers ==== Arm KEIL. MDK Middleware for USB Device and Host Communication ==== * [[https://www.keil.com/pack/doc/mw/USB/html/_u_s_b__concepts.html|USB Concepts]] * [[https://www.keil.com/pack/doc/mw/USB/html/_u_s_b__protocol.html|USB Protocol]] * [[https://www.keil.com/pack/doc/mw/USB/html/_u_s_b__descriptors.html|USB Descriptors]] * [[https://www.keil.com/pack/doc/mw/USB/html/_u_s_b__device__descriptor.html|Device Descriptor]] * etc ===== Ethernet ===== * [[https://community.st.com/message/158996-are-there-any-dual-ethernet-phys-like-the-lan9303-that-work-with-the-stm32-chips|Вопрос в комьюнити]] * [[http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=ac320004-4|3 port switch LAN9303]] * [[http://www.microchip.com/forums/m671260.aspx|STM32+LAN9303]] * [[https://electronix.ru/forum/lofiversion/index.php/t114165.html|Вот с этого и надо было начинать. LAN9303, KSZ8863 подойдут]] * [[http://www.microchip.com/wwwproducts/en/KSZ8863|KSZ8863]] * [[http://forum.easyelectronics.ru/viewtopic.php?f=35&t=23677|STM32F4+ETH(Вопросы по PHY KSZ8863)]] * [[http://www.cyberforum.ru/arm/thread2090099.html|Если ещё интересно - запустил платку...]] * [[https://habrahabr.ru/post/168119/|ethernet-кольцо в поезде]] * [[http://andybrown.me.uk/2012/09/01/ethernet-phy-stm32f107/|An Ethernet PHY for the STM32F107 and STM32F4]] MII ===== OpenOCD & debuging ===== ..\bin\openocd.exe -f interface\stlink-v2.cfg -f target\stm32f4x.cfg * [[http://badembed.ru/hard-fault-memmanage-fault-usage-fault-bus-fault-cortex-m3/|Hard Fault, MemManage Fault, Usage Fault, Bus Fault — Cortex-M3]] * [[http://badembed.ru/tag/stm32/]] - полезный блог * [[https://nathan.vertile.com/blog/2016/05/04/stm32-hardfault-debugging/]] * [[https://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html]] * [[https://ru.stackoverflow.com/questions/534321/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80-stm32l476rg-%D0%BF%D0%B0%D0%B4%D0%B0%D0%B5%D1%82-%D0%B2-hard-fault|stackoverflow. Почему контроллер (stm32l476rg) падает в hard fault?]] * Возможные причины: * [[https://www.iar.com/support/tech-notes/debugger/debugging-a-hardfault-on-cortex-m//|IAR. Debugging a HardFault on Cortex-M]] * [[https://blog.frankvh.com/2011/12/07/cortex-m3-m4-hard-fault-handler/|Cortex-M3 / M4 Hard Fault Handler]] * Методы отладки: * [[https://community.nxp.com/message/630605|Debugging a Hard Faul]] * [[https://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html|Debugging Hard Fault & Other Exceptions on ARM Cortex-M3 and ARM Cortex-M4 microcontrollers]] * [[https://mcuoneclipse.com/2012/11/24/debugging-hard-faults-on-arm-cortex-m/|Debugging Hard Faults on ARM Cortex-M]] * [[https://blog.feabhas.com/2013/02/developing-a-generic-hard-fault-handler-for-arm-cortex-m3cortex-m4/|Developing a Generic Hard Fault handler for ARM Cortex-M3/Cortex-M4]] ===== Clock ===== * [[https://stm32f4-discovery.net/2015/01/properly-set-clock-speed-stm32f4xx-devices/|How to properly set clock speed for STM32F4xx devices]] * [[http://mcu.goodboard.ru/viewtopic.php?id=11|Система тактирования для F4 на примере F4 дискавери]] * [[http://www.emcu.it/STM32clk/STM32clk.html|STM32 Clock + CUBE]] ===== RS232 - UART ===== * [[https://visualgdb.com/tutorials/profiler/realtime/freertos/|Хороший разбор simple FreeRTOS UART driver based on queues]] * [[http://easyelectronics.ru/arm-uchebnyj-kurs-usart.html|ARM Учебный курс. USART]] * [[http://we.easyelectronics.ru/STM32/uart-usart-na-stm32l-stm32.html|UART (USART) на STM32L (STM32)]] - **Упоминается согласование с SIM900** * Retargeting * проблемы с HAL_LOCK * https://www.doulos.com/knowhow/arm/Retargetting_a_C_library_function/ - упоминаются некие ITM_SendChar и ITM_ReceiveChar * [[https://community.st.com/thread/10610#comment-172009|Инструкция на форуме]] упоминается выравнивание стека _estack = 0x20018000; /* end of RAM */ * **stm32 uart _read** * https://stackoverflow.com/questions/46198829/stm32-hal-usart-receive-by-interrupt * https://stm32f4-discovery.net/2017/07/stm32-tutorial-efficiently-receive-uart-data-using-dma/ * [[http://forum.cxem.net/index.php?/topic/167569-stm32-uart-receive-string/|Чтение строки через DMA]] * [[https://community.st.com/thread/42689-efficiently-use-dma-with-uart-rx-on-stm32|Efficiently use DMA with UART RX on STM32]] * [[http://brosnanyuen.blogspot.ru/2017/11/nucleo-stm32-freertos-receive-uart.html|Nucleo STM32 FreeRTOS Receive UART Using Queues]] с cubeMX картинками ==== microrl ==== * https://github.com/Helius/microrl * [[https://habr.com/post/127890/|консоль в микроконтроллере с micro readline]] * https://github.com/elisey/stm32_freertos - FreeRTOS template for STM32 * см. у этого же автора другие проекты [[https://github.com/elisey/stm32_eeprom_emulation|stm32_eeprom_emulation]] [[https://github.com/elisey/stm32_uart|stm32_uart]] [[https://github.com/elisey/stm32_system_logger|stm32_system_logger]] * ===== CCM (core coupled memory) ===== * [[http://forum.easyelectronics.ru/viewtopic.php?f=35&t=8830|что за память такая CCM (core coupled memory) ?]] * Установил вершину стека на CCMDATARAM_BASE+65536. Работает. Фурычит программка. * [[http://sigalrm.blogspot.ru/2013/12/using-ccm-memory-on-stm32.html|Using The CCM Memory on the STM32]] * [[http://www.st.com/content/ccc/resource/technical/document/application_note/bb/09/ca/83/14/e9/44/c5/DM00083249.pdf/files/DM00083249.pdf/jcr:content/translations/en.DM00083249.pdf|Overview and tips for using ST M32F303/328/334/358xx CCM RAM]] * [[http://www.openstm32.org/Using%2BCCM%2BMemory|Using CCM Memory]] at openstm32.org ==== Placing the heap and stack in CCM ==== отредактировать ldscripts/section.ld: __stack = ORIGIN(RAM) + LENGTH(RAM); _estack = __stack; /*** Заменить на ***/ __stack = ORIGIN(CCMRAM) + LENGTH(CCMRAM); _estack = __stack; ===== SPI ===== * [[https://habrahabr.ru/post/276605/|STM32: SPI: LCD — Вы всё делаете не так!]] про 24-битный spi * [[http://www.microchip.com/forums/m833263.aspx|SPI with 24bit]] - вопрос на форуме * http://blog.mark-stevens.co.uk/2014/03/spi-stm32/ * SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b; * [[http://microsin.net/programming/arm/stm32f407-spi.html|STM32F407, интерфейс SPI]] - перевод секции 28 Serial peripheral interface (SPI) из даташита RM0090 компании ST, посвященный микроконтроллерам STM32F405xx/07xx, STM32F415xx/17xx, STM32F42xxx и STM32F43xxx (с акцентом на STM32F407xx) * [[https://www.soel.ru/upload/clouds/1/iblock/e84/e84786cd2be538cfb9eb44a3938d1dcc/20140118.pdf|Современные 32-разрядные ARM-микроконтроллеры серии STM32: последовательный интерфейс SPI]] - статья в "современная электроника" № 1 2014 * SPI1->CR1 |= SPI_CR1_DFF // Бит11 Формат данных 0-8бит 1-16бит * [[https://github.com/sonicyang/uRock|uRock]] - This is a Project about Digital Guitar Effect Pedal running on ARM Cortex-M4 * STM32F429I-DISCOVERY * Self build **ADC**/DAC board with **PCM4201** and PCM1754 * Both ADC and DAC are set to operate at 96kHz sampling rate. * For ADC * ADC is sampling at 24bits. * Master mode * On STM32F429I port SAI1 ===== Flash (eeprom) ===== * [[https://habrahabr.ru/post/213771/|STM32 — правильно используем встроенный flash]] ===== FreeRTOS ===== * STM32 и FreeRTOS. - 5 статей на хабре * [[https://habrahabr.ru/post/249273/|1. Развлечение с потоками]] * [[https://habrahabr.ru/post/249283/|2. Семафорим по-черному]] * [[https://habrahabr.ru/post/249381/|3. Встаем в очередь]] * [[https://habrahabr.ru/post/249395/|4. Шаг в сторону HAL]] * [[https://habrahabr.ru/post/249975/|5. Приносим пользу и добро!]] * Brosnan Yuen's development blog * [[http://brosnanyuen.blogspot.ru/2017/11/nucleo-stm32-freertos-receive-uart.html|Nucleo STM32 FreeRTOS Receive UART Using Queues]] ===== Real Time Clock ===== RTC можно питать батарейкой 3.3V подключенной к VBAT (pin 1 на корпусе LQFP64) * [[https://electronix.ru/forum/lofiversion/index.php/t145489.html|Можно ли получить дату и время от оператора?]] * AT#NITZ AT+CCLK https://www.telit.com/wp-content/uploads/2017/09/Telit_AT_Commands_Reference_Guide_r24_B.pdf ===== GSM ===== * [[http://wiredlogic.io/ru/diy-gsm-sim900-stm32-open-source-ru/|Процедуры работы с GSM-модулем на примере STM32 (STM32F102) и SIM900]] * [[http://simcom.ee/modules/gsm-gprs/sim900/]] * [[http://simcom.ee/documents/?dir=SIM900|download docs]] * [[http://stm32f4-discovery.net/2016/11/new-libraries-esp8266-gsm-gps-nmea-parsers/|New libraries: ESP8266 AT, GSM AT and GPS NMEA parsers]] ==== sim900 shield for andruino ==== * [[https://community.st.com/thread/40206-sim900-serial-communication-doesnt-work]] * https://www.amazon.it/Quad-Band-Modules-Development-Arduino-adattatore/dp/B01DVYFVXC/ref=sr_1_1?ie=UTF8&qid=1492542089&sr=8-1&keywords=sim900 * https://www.chipdip.ru/product/gprs-shield * http://amperka.ru/product/arduino-gprs-shield * [[http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:gprs-shield|/продукты:gprs-shield]] * [[http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:gprs-shield-v1|/продукты:gprs-shield-v1]] * [[http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:gprs-shield-v1-v2|/продукты:gprs-shield-v1-v2]] * [[http://wiki.amperka.ru/беспроводная-связь:gprs-shield|Взаимодействие с GSM/GPRS Shield для работы с SMS и голосовыми вызовами]] ===== C++ ===== * [[https://habrahabr.ru/post/347980/|Можно ли использовать С++ вместо Си для небольших проектов в микроконтроллерах]] * [[https://habrahabr.ru/post/261807//|STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1]] * [[https://habrahabr.ru/post/261823/|STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2]] * [[https://habrahabr.ru/post/261837/|STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)]] * [[https://habrahabr.ru/post/262133/|STM32, C++ и FreeRTOS. Разработка с нуля. Часть 4 (Прерывания, UART и недоHART)]]